C# exe içine exe gömme ve çalıştırma
Bu yazımızda hazırladığımız bir exe dosyasını bir başka programla bilgisayarda istediğimiz bir yere nasıl çıkarır ve oradan nasıl çalıştırırız bunu inceleyeceğiz. Bu tarz bir şeye neden ihtiyacım olur diyebilirsiniz ama bir şekilde program dosyanızın belirlediğiniz bir yerde olmasını ve oradan çalışmasını istiyorsanız bunu kullanmak işinize yarayabilir. Ayrıca sadece ‘exe’ uzantılı dosyaları değil herhangi bir dosyayı da exe dosyasının içine gömebilirsiniz. Örneğin programınız için gerekli tüm dosyaları bu şekilde exe içinde tutabilirsiniz.
Programımıza gömmek istediğimiz exe dosyası ‘a.exe’ olsun. Bunu öncelikle programımıza resource olarak tanıtmamız gerekir. Bunun için Solution Explorer’da proje adına sağ tıklayıp ‘Properties’ diyoruz. Açılan pencerede soldan Resources’i tıklıyoruz. Add Resource ve Add Existing File dedikten sonra ‘a.exe’ dosyamızı seçiyoruz. Aşağıda bu işlemin ekran çıktısını görebilirsiniz.

Şu anda Resource’umuzu ekledik. Sıra geldi bu Resource’un tipini ‘Embedded Resource’ yapmaya.. Bunu yapmazsak exe içine gömemeyiz. Bu iş için Solution Explorer’da Resources klasörünü genişletip exe dosyasına tıklayacağız. Properties Ekranında Build Action özelliğini ‘Embedded Resources’ yapıp değişiklikleri kaydedeceğiz. Bu işlem için çıktı da aşağıda:
Evet şu anda kullanmak istediğimiz exe dosyasını gömdük. Artık bu exe dosyasını istediğimiz gibi kullanabiliriz. Diyelim ki bu exe dosyasını D:\ içerisine çıkarmak istiyoruz. Bunun için aşağıdaki kodları kullanacağız:
Assembly assembly = Assembly.GetExecutingAssembly();
String[] resourceNames = assembly.GetManifestResourceNames();
Stream stream = null;
foreach (String resourceName in resourceNames)
{
if (resourceName.Contains("a.exe"))
{
stream = assembly.GetManifestResourceStream(resourceName);
FileStream fileStream = new FileStream("D:\\a.exe", FileMode.Create, FileAccess.Write);
dosyayayaz(stream, fileStream);
}
}
private void dosyayayaz(Stream readStream, FileStream writeStream)
{
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesRead = readStream.Read(buffer, 0, Length);
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, Length);
}
readStream.Close();
writeStream.Close();
}
Evet bu kodlardan sonra sistemde bir a.exe dosyamız var artık
Bu dosyanın çalıştırılmasını istiyorsak da
ProcessStartInfo psi = new ProcessStartInfo("D:\\a.exe", "");
Process.Start(psi);
kodlarını sisteme ekleyeceğiz. Böylece C:\Users\Kullanici\Desktop içerisinde çalıştırdığımız program D:\’de çalışmasını istediğimiz diğer programı oluşturmuş ve çalıştırmış oldu. Ne dersiniz hoş olmadı mı ?
About this entry
You’re currently reading “C# exe içine exe gömme ve çalıştırma,” an entry on Hamit'in yeri
- Yayımlandı:
- Şubat 12, 2010 / 10:19 pm
- Kategori
- C#
- Etiketler:
- embedded resources

91 Yorum
Jump to comment form | comment rss [?] | trackback uri [?]