private void MainForm_Load(object sender, EventArgs e) { _context.Log.AddLogInformation("Вход в MainForm.FormLoad()"); try { panelCancel.Visible = false; if (_package != null) { _context.Log.AddLogInformation("Есть пакет для запуска"); buttonBrowse.Enabled = false; panelCancel.Visible = true; Action action = new Action(_package.Execute); _context.Log.AddLogInformation("Запускаем пакет"); ExecutePackageAsyncState state = new ExecutePackageAsyncState() { action = action, package = _package }; action.BeginInvoke(execCallback, state); } else { _context.Log.AddLogInformation("Нет пакета для запуска"); buttonBrowse.Enabled = true; } } catch (Exception ex) { _context.Log.AddLogInformation("Поймано исключение в MainForm.FormLoad. Подробности смотрите далее."); _context.Log.AddLogException(ex); Win32Util.ShowError(this, "Ошибка при выполнении пакета. Подробности можно найти в журнале инсталлятора."); } _context.Log.AddLogInformation("Выход из MainForm.FormLoad()"); }
void execCallback(IAsyncResult result) { _context.Log.AddLogInformation("Вход в execCallback"); try { ExecutePackageAsyncState state = (ExecutePackageAsyncState)result.AsyncState; state.action.EndInvoke(result); Win32Util.ExecuteOrInvoke(this, () => { buttonBrowse.Enabled = true; panelCancel.Visible = false; MessageBox.Show(this, "Пакет выполнен успешно", "Выполнение пакета завершено", MessageBoxButtons.OK, MessageBoxIcon.Information); panelMain.Controls.Clear(); }); } catch (Exception ex) { _context.Log.AddLogInformation("Поймано исключение в execCallback. Подробности смотрите далее."); _context.Log.AddLogException(ex); Win32Util.ShowError(this, "Ошибка при выполнении пакета. Подробности можно найти в журнале инсталлятора."); } _context.Log.AddLogInformation("Выход из execCallback"); }
void loadCallback(IAsyncResult result) { _context.Log.AddLogInformation("Вход в loadCallback"); try { Func <string, string> load = (Func <string, string>)result.AsyncState; load.EndInvoke(result); _context.Log.AddLogInformation("Пакет загружен."); Action exec = new Action(_package.Execute); ExecutePackageAsyncState state = new ExecutePackageAsyncState() { action = exec, package = _package }; _context.Log.AddLogInformation("Начинаем выполнение пакета"); exec.BeginInvoke(execCallback, state); } catch (PackageExecutionCancelledException) { Win32Util.ExecuteOrInvoke(this, () => { buttonBrowse.Enabled = true; panelCancel.Visible = false; MessageBox.Show(this, "Прервано пользователем", "Ошибка при выполнении пакета", MessageBoxButtons.OK, MessageBoxIcon.Error); panelMain.Controls.Clear(); }); } catch (Exception ex) { _context.Log.AddLogInformation("Поймано исключение в loadCallback. Подробности смотрите далее."); _context.Log.AddLogException(ex); Win32Util.ShowError(this, "Ошибка при выполнении пакета. Подробности можно найти в журнале инсталлятора."); } _context.Log.AddLogInformation("Выход из loadCallback"); }
void loadCallback(IAsyncResult result) { _context.Log.AddLogInformation("Вход в loadCallback"); try { Func<string, string> load = (Func<string, string>)result.AsyncState; load.EndInvoke(result); _context.Log.AddLogInformation("Пакет загружен."); Action exec = new Action(_package.Execute); ExecutePackageAsyncState state = new ExecutePackageAsyncState() { action = exec, package = _package }; _context.Log.AddLogInformation("Начинаем выполнение пакета"); exec.BeginInvoke(execCallback, state); } catch (PackageExecutionCancelledException) { Win32Util.ExecuteOrInvoke(this, () => { buttonBrowse.Enabled = true; panelCancel.Visible = false; MessageBox.Show(this, "Прервано пользователем", "Ошибка при выполнении пакета", MessageBoxButtons.OK, MessageBoxIcon.Error); panelMain.Controls.Clear(); }); } catch (Exception ex) { _context.Log.AddLogInformation("Поймано исключение в loadCallback. Подробности смотрите далее."); _context.Log.AddLogException(ex); Win32Util.ShowError(this, "Ошибка при выполнении пакета. Подробности можно найти в журнале инсталлятора."); } _context.Log.AddLogInformation("Выход из loadCallback"); }