Автоматическое обновление программы C#

Zafon

Писатель
Регистрация
21 Сен 2016
Сообщения
4
Реакции
0
Не знаю кто-как , а я лично предпочитаю писать свой апдейтер приложения - проверяю (конечно если это не мега-проект) на целостность установки,наличия обновления и если целостность нарушена или есть обновление скачиваю непосредственно требуемые файлы,а не целый инсталяционный пакет.
 

diegom

Создатель
Регистрация
21 Ноя 2014
Сообщения
14
Реакции
1
либо Windows Installer, либо ClickOnce. все зависит от того как и откуда будет обновляться софт. первый способ - для распространения софта, второй - внутренний. ну это, разумеется, предпочтительно.
 

Barok

Создатель
Регистрация
20 Июл 2012
Сообщения
40
Реакции
2
Чем вы пользуетесь для организации автоматического обновления?
Я в своих проектах использовал просто сравнение версий в самой проге и той, что записано в тхт файле на хостинге, если вресии различаются, пользователю предлагается автоматическая обнова. При согласии запускается апдейтер. На том же принципе он мог вручную это все проверить. Также автоматом докачивались нужные файлы, если у пользователя они отсутствовали. Что-то вроде этого:
Код:
WebClient client = new WebClient();
                string actual = client.DownloadString("http://mysite.com" + "/version.txt");
                string current = Main.GetPluginVersion();
                if (!File.Exists(Application.StartupPath + "\\mydll.dll))
                {
                    Uri ui = new Uri("http://mysite.com" + "/mydll.dll");
                    client.DownloadFile(ui, Application.StartupPath + "\\mydll.dll");
                }                
                if (!actual.Equals(current))
                {
                    isUpdate = true;
                    DialogResult dial = MessageBox.Show("Доступна новая версия скрипта, обновить?", "Автоматическое обновление", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                    if (dial == DialogResult.Yes)
                    {
                        Process.Start(Application.StartupPath + "\\AutoUpdater.exe");
                        this.Close();
                    }
                    client.Dispose();
                }
 
Сверху