Не уверен, что это хорошая практика, но нести меня.переписать текущий exe из процесса
У меня есть URL-адрес с новой версией моего приложения, я не хочу использовать какие-либо средства обновления для этого.
У меня 2 приложения. 1 приложение загружает последнюю версию приложения, назовите его «Updater» консольным приложением. Другое приложение - «MainApp». Я хочу вызвать приложение Updater из MainApp, чтобы заменить MainApp на загруженное приложение.
MessageBox.Show("We need to update the application. This might take a short while");
System.Diagnostics.Process updateProcess = new System.Diagnostics.Process();
updateProcess.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "Updater.exe";
updateProcess.StartInfo.Arguments = AppDomain.CurrentDomain.BaseDirectory;
updateProcess.Start();
Process.GetCurrentProcess().Kill();
//Application.Exit();
Программа обновления приложение получает новую версию файла из аргументов, переданных в рабочей директорию на MainApp и сохраняет его, код ниже
client.BaseUrl = base_url + "MainApp.exe";
var request = new RestRequest(Method.GET);
byte[] responseData = client.DownloadData(request);
System.IO.File.WriteAllBytes(args[0] + "MainApp.exe", responseData);
Это не кажется, вполне работают. Он не перезаписывает приложение!
Любые предложения?
Именно поэтому у вас есть ваша пусковая установка, запускающее основное приложение, вместо того, чтобы ваше основное приложение запускало вашу пусковую установку. – Servy
Да, очень верно и логически правильно, но как я могу сделать это так, как мне нужно, как выше. – user1320651
Что я делал до загрузки новой версии, я бы переименовал текущий исполняемый файл (как часть процесса обновления - вы можете сделать это даже во время его работы) - затем загрузите новую версию с исходным именем файла, а затем удалите переименованный файл. –