Halil Han BADEM Aklıma yeni ve daha pratik bir fikir geldi.
nullcoder Sizin için yeni bir proje hazırladım ve sundum.
Proje için: https://www.mediafire.com/file/f5v96br22dq2yti/CreateFile.zip
Projenin Mantığı
Console Application
Gereksinimler: .NET Framework 2.0
- Öncelikle bir Console Application projesi hazırladım. Bunu, SayMyName olarak adlandırdım.
- Daha sonra uygulamanın Main methoduna aşağıdaki kodları yazdım.
string AppName = AppDomain.CurrentDomain.FriendlyName;
AppName = AppName.Substring(0, AppName.IndexOf('.'));
Console.Title = string.Format("Merhaba, {0}!", AppName);
Console.WriteLine(string.Format("Merhaba, {0}!", AppName));
Console.ReadLine();
- Kodlardan da anlaşılacağı üzere bu uygulama, çalışır çalışmaz kendi exe dosyasının adını bir değişken içerisine alıyor ve daha sonra "Merhaba, exe!" mesajını ekrana yazdırıyor. Enter'a basıldığında da kendisini kapatıyor.
Windows Forms Application
Gereksinimler: .NET Framework 4.0
- Öncelikle bir Windows Forms Application projesi hazırladım. Bunu, CreateFile olarak adlandırdım.
- Daha sonra aşağıdaki gibi basit bir Form tasarımı yaptım.
- Ardından FrmCreateFile.cs sınıfına aşağıdaki kodları yazdım.
private void BtnCreateFile_Click(object sender, EventArgs e) {
string FilePath = string.Format("{0}\\{1}.exe", Application.StartupPath, TxtFileName.Text);
if (!File.Exists(FilePath))
WriteResourceToFile("SayMyName.exe", FilePath);
else
MessageBox.Show("Aynı isimde bir dosya zaten var.\nFarklı bir dosya adı belirtin.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// Program içerisinde bulunan kaynak dosyayı dışa aktarır.
/// </summary>
/// <param name="resourceName">Kaynak dosyanın adıdır.</param>
/// <param name="fileName">Kaynak dosyanın yeni adıdır.</param>
public void WriteResourceToFile(string resourceName, string fileName) {
using (var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream(string.Format("{0}.{1}", Assembly.GetExecutingAssembly().EntryPoint.DeclaringType.Namespace, resourceName)))
using (var file = new FileStream(fileName, FileMode.Create, FileAccess.Write))
resource.CopyTo(file);
}
- Bunları yaptıktan sonra, SayMyName isimli Console Application projemin build'ini aldım.
- Build'i aldıktan sonra oluşan SayMyName.exe isimli dosyayı doğrudan projemin içine aktardım.
- Daha sonra SayMyName.exe dosyasına sağ tıklayıp Properties seçeneğini seçtim.
- Dosyanın Build Action özelliği ilk başta Content idi.
- Sonra bu özelliği Embedded Resource olarak değiştirdim. Bu son işlemdi.
Sonuç
Umarım bu sefer aradığınızı sunabilmişimdir.
Kolay gelsin, iyi çalışmalar.