Я разработал приложение, которое импортирует различные материалы в нашу базу данных. Пользователи будут использовать его, выполнив ярлык для нашего внутреннего сервера приложений. Поскольку часы работы меняются, мне нужно изменить файл .exe, пока кто-то его использует. Способ, предложенный моими коллегами:Обновление исполняемого файла .exe C#
1.Save в файле xml/ini файла, который должен быть запущен.
2.Copy new .exe, f.e import_2.exe для целевого расположения.
3.Simply выполнить файл .exe из ini-файла.
Я остановился в пункте 3. Как изменить целевой файл? Application.ExecutablePath не может быть изменен.
@EDIT окончательный подход. Простой, но не слишком элегантный. В конечном итоге вам, вероятно, лучше использовать ClickOnce.
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
IniParser parser = new IniParser(SupportingClass.AssemblyDirectory + "settings.ini");
string exe_location = parser.GetSetting("ApplicationToRun", "App");
string fullName = System.Reflection.Assembly.GetEntryAssembly().Location;
string myName = System.IO.Path.GetFileName(fullName).ToLower();
if (exe_location != myName)
{
string arguments = "";
foreach (var item in Environment.GetCommandLineArgs())
{
arguments+=item+' ';
}
if (System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + exe_location))
{
System.Diagnostics.Process starter = System.Diagnostics.Process.Start(exe_location, arguments);
return;
}
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new DbImporting());
}
}
Вы должны запустить новую копию exe с помощью 'System.Diagnostics.Process.Start()' и 'return' из текущего экземпляра exe –
@ pm100: was что редактирование действительно необходимо? Есть больше вещей, которые вы могли бы редактировать в этом вопросе и названии. – Default
Загрузите сборку из DLL, не пытайтесь изменить файл .exe. – MatthewMartin