Exemplo n.º 1
0
 private void DownloadReleaseCallback(object sender, EventArgs e)
 {
     GitHub.RequestState state = sender as GitHub.RequestState;
     GitHub.DownloadFileCompleted   -= DownloadReleaseCallback;
     GitHub.DownloadProgressChanged -= DownloadProgressCallback;
     if (ThisDialog != null && ThisDialog.Visible)
     {
         DeniedClose = true;
         try {
             ThisDialog.Invoke((MethodInvoker) delegate {
                 progress.Hide();
                 if (!AuthenticodeTools.IsTrusted(tmpFileRelease))
                 {
                     string msg = "У полученного файла не верная цифровая подпись. Обновление прервано.\n\n" +
                                  "Это может означать, что произошла подмена файла или автор забыл подписать файл. " +
                                  "Может быть временные проблемы с интернетом. В любом случае, можно попробовать " +
                                  "посетить пару мест, где знают о существовании данной программы и спросить там:\n" +
                                  "https://homemediaserver.ru/forum\nhttps://hms.lostcut.net\nhttps://github.com/WendyH/HMSEditor/issues";
                     MessageBox.Show(msg, HMSEditor.MsgCaption, MessageBoxButtons.OK, MessageBoxIcon.Stop);
                     return;
                 }
                 InstallNewFile();
             });
         } finally {
             DeniedClose = false;
         }
     }
 }
Exemplo n.º 2
0
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (HMSEditor.NeedRestart && AuthenticodeTools.IsTrusted(HMSEditor.NeedCopyNewFile))
            {
                string msg = "При перезапуске программы будет возвращён встроенный редактор.\n" +
                             "После перезапуска, чтобы вернуться к данному альтернативному редактору, " +
                             "достаточно закрыть окно и открыть редактирование скриптов заного. ";
                MessageBox.Show(msg, HMSEditor.MsgCaption, MessageBoxButtons.OK, MessageBoxIcon.Information);
                HMSEditor.Exit();
                // waiting 3 sek, copy new file to our path and start our executable
                string           rargs = "/C ping 127.0.0.1 -n 3 && Copy /Y \"" + HMSEditor.NeedCopyNewFile + "\" \"" + Application.ExecutablePath + "\" &&  Del \"" + HMSEditor.NeedCopyNewFile + "\" && \"" + Application.ExecutablePath + "\" " + HMS.StartArgs;
                ProcessStartInfo Info  = new ProcessStartInfo();
                Info.Arguments      = rargs;
                Info.WindowStyle    = ProcessWindowStyle.Hidden;
                Info.CreateNoWindow = true;
                Info.FileName       = "cmd.exe";
                if (!DirIsWriteable(ExecutableDir))
                {
                    msg = "Текущая программа находится в каталоге, где нужны привилегии для записи файлов.\n" +
                          "Будет сделан запрос на ввод имени и пароля пользователя,\n" +
                          "который данными привилегиями обладает.";
                    MessageBox.Show(msg, HMSEditor.MsgCaption, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Info.Verb = "runas";
                }
                try {
                    Process.Start(Info);
                } catch (Exception ex) {
                    msg = "Ошибка обновления программы.\n" +
                          "Возможно, из-за нарушения прав доступа или по какой-то другой причине.\n" +
                          "Автоматическое обновление не произошло.";
                    MessageBox.Show(msg, HMSEditor.MsgCaption, MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    HMS.LogError(ex.ToString());
                    return;
                }
                TryDeleteFile(HMS.ErrorLogFile);
                Application.Exit();
                Close();
                return;
            }
            //progress.Show();
            Refresh();
            btnUpdateProgram.Text           = "Идёт загрузка...";
            btnUpdateProgram.Enabled        = false;
            btnUpdateTemplates.Enabled      = false;
            GitHub.DownloadFileCompleted   += new EventHandler(DownloadReleaseCallback);
            GitHub.DownloadProgressChanged += new EventHandler(DownloadProgressCallback);

            GitHub.DownloadLatestReleaseAsync(tmpFileRelease);
        }