Nie som si istý, či je to dobrá prax, ale že so mnou znášať.
Mám url s novou verziou mojej aplikácie, nechcem používať akékoľvek nástroje updater na to.
Mám 2 aplikácie. 1 aplikácia stiahne najnovšiu verziu aplikácie, zavolajte ju aplikáciu "Updater". Druhá aplikácia je "MainApp". Chcem zavolať aplikáciu Updater z aplikácie MainApp a nahradiť MainApp stiahnutou aplikáciou.
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();
Aplikácia Updater načíta novú verziu súboru z argu prechádzajúcu do pracovného riadka programu MainApp a uloží ho, kód nižšie
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);
Zdá sa, že to celkom nefunguje. Nepoužíva to prepísanie aplikácie!
Nejaké návrhy?
odpovede:
0 pre odpoveď č. 1Dosiahol som to pomocou tlačidla "Reštartovať na aktualizáciu" v hlavnej aplikácii, ktorá vykoná nasledujúce kroky:
- Spustite aktualizátor s prepínačom obsahujúcim PID hlavného procesu.
- Hlavný proces sa začína vypínať.
- Aktualizátor nájde proces s daným PID a čaká na jeho ukončenie.
- Aktualizátor prepíše hlavnú aplikáciu s novou verziou.
- Aktualizátor spustí hlavnú aplikáciu.
- Aktualizátor sa vypne.