示例#1
0
        private void executeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(_packageFilePath))
            {
                Win32Util.ShowError(this, "Откройте сначала пакет, чтобы его выполнить");
                return;
            }
            try
            {
                string workPath          = GetRootPath();
                string installerFullPath = Path.Combine(workPath, "Gin.Installer.exe");

                Process process = new Process();
                process.StartInfo.FileName               = installerFullPath;
                process.StartInfo.Arguments              = @"""" + _packageFilePath + @"""";
                process.StartInfo.CreateNoWindow         = true;
                process.StartInfo.WindowStyle            = ProcessWindowStyle.Hidden;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.UseShellExecute        = false;
                process.StartInfo.ErrorDialog            = true;
                process.Start();
            }
            catch (Exception ex)
            {
                Win32Util.ShowError(this, "Не удалось запустить инсталлятор. Описание ошибки приведено далее. \r\n" + ex.Message + "\r\n" + ex.StackTrace);
            }
        }
示例#2
0
        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()");
        }
示例#3
0
 private void menuItemSavePackageAs_Click(object sender, EventArgs e)
 {
     try
     {
         SavePackageAs();
     }
     catch (Exception ex)
     {
         Win32Util.ShowError(this, "Не удалось сохранить пакет. Описание ошибки приведено далее. \r\n" + ex.Message + "\r\n" + ex.StackTrace);
     }
 }
示例#4
0
 private void MainForm_Load(object sender, EventArgs e)
 {
     try
     {
         ExecuteAsyncWithWait(InitMetadata, null, "Загрузка метаданных");
         listCommands.InitFromCommands(_metaData.Commands);
     }
     catch (Exception ex)
     {
         Win32Util.ShowError(this, "Не удалось запустить редактор пакетов. Описание ошибки приведено далее. \r\n" + ex.Message + "\r\n" + ex.StackTrace);
     }
 }
示例#5
0
 private void MenuItemExportClick(object sender, EventArgs e)
 {
     try
     {
         ChooseExportTypeForm form = new ChooseExportTypeForm();
         if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             SavePackage(_packageFilePath, form.GetResultContentType());
         }
     }
     catch (Exception ex)
     {
         Win32Util.ShowError(this, "Не удалось экспортировать пакет. Описание ошибки приведено далее. \r\n" + ex.Message + "\r\n" + ex.StackTrace);
     }
 }
示例#6
0
 private void MenuItemOpenPackageClick(object sender, EventArgs e)
 {
     try
     {
         OpenFileDialog dialog = new OpenFileDialog();
         DialogResult   result = dialog.ShowDialog();
         if (result == DialogResult.OK)
         {
             _packageFilePath = dialog.FileName;
             ExecuteAsyncWithWait(() => LoadPackage(_packageFilePath), null, "Загрузка пакета");
         }
     }
     catch (Exception ex)
     {
         Win32Util.ShowError(this, "Не удалось открыть пакет. Описание ошибки приведено далее. \r\n" + ex.Message + "\r\n" + ex.StackTrace);
     }
 }
示例#7
0
 private void menuItemSavePackage_Click(object sender, EventArgs e)
 {
     try
     {
         if (_packageFilePath == null)
         {
             SavePackageAs();
         }
         else
         {
             SavePackage(_packageFilePath, PackageContentType.Empty);
         }
     }
     catch (Exception ex)
     {
         Win32Util.ShowError(this, "Не удалось сохранить пакет. Описание ошибки приведено далее. \r\n" + ex.Message + "\r\n" + ex.StackTrace);
     }
 }
示例#8
0
 private void InitMetadataCompleted(IAsyncResult state)
 {
     _executionContext.Log.AddLogInformation("Вход в InitMetadataCompleted()");
     try
     {
         Action initAction = (Action)state.AsyncState;
         initAction.EndInvoke(state);
         _executionContext.Log.AddLogInformation("Вызов InvokeLoadMainPackage()");
         InvokeLoadMainPackage();
     }
     catch (Exception ex)
     {
         _executionContext.Log.AddLogInformation("Поймано исключение в InitMetadataCompleted. Подробности смотрите далее.");
         _executionContext.Log.AddLogException(ex);
         Win32Util.ShowError(this, "Не удалось загрузить метаданные. Дальнейшая работа инсталляционного пакета невозможна. Подробности случившегося сбоя смотрите в лог-файле");
         CloseForm();
     }
     _executionContext.Log.AddLogInformation("Выход из InitMetadataCompleted()");
 }
示例#9
0
 private void LoadMainPackageCallback(IAsyncResult state)
 {
     _executionContext.Log.AddLogInformation("Вход в LoadMainPackageCallback()");
     try
     {
         Action action = (Action)state.AsyncState;
         action.EndInvoke(state);
     }
     catch (Exception ex)
     {
         _executionContext.Log.AddLogInformation("Исключение при работе метода LoadMainPackageCallback(). Подробности смотрите далее.");
         _executionContext.Log.AddLogException(ex);
         Invoke(new Action(() =>
         {
             ExecutedPackage = null;
             Win32Util.ShowError(this, "Ошибка при загрузке пакета");
         }), null);
     }
     _executionContext.Log.AddLogInformation("Выход из LoadMainPackageCallback()");
 }
示例#10
0
 private void LoadMainPackage()
 {
     _executionContext.Log.AddLogInformation("Вход в LoadMainPackage()");
     if (_packageFileName == null)
     {
         string exePath     = GetExePath();
         string packagePath = Path.Combine(exePath, "package.gin");
         _packageFileName = packagePath;
         _executionContext.Log.AddLogInformation("Главный пакет ожидаем в <" + _packageFileName + ">");
     }
     if (File.Exists(_packageFileName))
     {
         _executionContext.Log.AddLogInformation("Файл главного пакета найден.");
         LogMessage("Загружается пакет...");
         ExecutedPackage = new Package(_executionContext);
         try
         {
             _executionContext.Log.AddLogInformation("Начинаем загрузку.");
             ExecutedPackage.Load(_packageFileName);
             _executionContext.Log.AddLogInformation("Загрузка окончена.");
         }
         catch (PackageExecutionCancelledException)
         {
             _executionContext.Log.AddLogInformation("Пользователь остановил загрузку.");
             ExecutedPackage = null;
             Win32Util.ShowError(this, "Загрузка пакета остановлена пользователем");
             CloseForm();
         }
         catch (Exception ex)
         {
             _executionContext.Log.AddLogInformation("Исключение при работе метода LoadMainPackage(). Подробности смотрите далее.");
             _executionContext.Log.AddLogException(ex);
             ExecutedPackage = null;
             Win32Util.ShowError(this, "Не удалось запустить инсталляционный пакет, однако вы можете попробовать запустить другой инсталляцонный пакет. При повторении ошибки обратитесь к разработчику. Подробности случившегося сбоя смотрите в лог-файле");
         }
     }
     _executionContext.Log.AddLogInformation("Закрываем форму загрузки.");
     CloseForm();
     _executionContext.Log.AddLogInformation("Выход из LoadMainPackage()");
 }
示例#11
0
 private void LoadAndExecute(string packagePath)
 {
     _context.Log.AddLogInformation("Вход в LoadAndExecute('" + packagePath + "')");
     try
     {
         buttonBrowse.Enabled = false;
         panelCancel.Visible  = true;
         _package             = new Package(_context);
         panelCancel.Visible  = true;
         buttonBrowse.Enabled = false;
         _context.Log.AddLogInformation("Начинаем загрузку пакета <" + packagePath + ">");
         Func <string, string> load = new Func <string, string>(_package.Load);
         load.BeginInvoke(packagePath, loadCallback, load);
     }
     catch (Exception ex)
     {
         _context.Log.AddLogInformation("Поймано исключение в LoadAndExecute. Подробности смотрите далее.");
         _context.Log.AddLogException(ex);
         Win32Util.ShowError(this, "Ошибка при выполнении пакета. Подробности можно найти в журнале инсталлятора.");
     }
     _context.Log.AddLogInformation("Выход из LoadAndExecute()");
 }
示例#12
0
 private void menuItemNewPackage_Click(object sender, EventArgs e)
 {
     try
     {
         PackageBody body = new PackageBody();
         body.Command = new CommandSequence();
         if (_tree != null)
         {
             ((IDisposable)_tree).Dispose();
         }
         _tree = new TreeViewCommandTree(treeCommands);
         _tree.LoadTree(body);
         _tree.ExpandAll();
         _tree.SelectCommandTreeNode += new SelectCommandTreeNodeDelegate(TreeSelectCommandTreeNode);
         _packageFilePath             = null;
         SetFilePathStatus(_packageFilePath);
     }
     catch (Exception ex)
     {
         Win32Util.ShowError(this, "Не удалось создать новый пакет. Описание ошибки приведено далее. \r\n" + ex.Message + "\r\n" + ex.StackTrace);
     }
 }
示例#13
0
        private void ExecuteAsyncWithWait(Action method, AutoResetEvent cancelEvent, string message)
        {
            StartScreenForm form = new StartScreenForm(cancelEvent, message);

            method.BeginInvoke(ar =>
            {
                try
                {
                    Win32Util.ExecuteOrInvoke(form, form.Close);
                    method.EndInvoke(ar);
                }
                catch (Exception ex)
                {
                    Win32Util.ShowError(this, "Не удалось выполнить операцию. Описание ошибки приведено далее. \r\n" + ex.Message + "\r\n" + ex.StackTrace);
                }
            }, null);

            if (form.ShowDialog() == DialogResult.Cancel && cancelEvent != null)
            {
                cancelEvent.Set();
            }
        }
示例#14
0
 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");
 }
示例#15
0
        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");
        }