private void InstallerControl_Load(object sender, EventArgs e) { this.busyPictureBox.Visible = this.busyMessageLabel.Visible = true; _worker = new BackgroundWorker(); _worker2 = new BackgroundWorker(); _worker.DoWork += (object doWorkSender, DoWorkEventArgs doWorkEventArgs) => { string filePath = Helper.GetMsiFile(MigrationConstants.WebPIUrl64, "webpi.msi"); string pathToExecute = string.Format(" /q /i \"{0}\"", filePath); //MessageBox.Show(pathToExecute); Helper.ExecuteFile(pathToExecute); _installHelper = Helper.SetupInstall(); }; _worker.RunWorkerCompleted += (object runWorkerCompletedSender, RunWorkerCompletedEventArgs runWorkerCompletedEventArgs) => { // Hide busy animation. this.busyPictureBox.Visible = this.busyMessageLabel.Visible = false; if (runWorkerCompletedEventArgs.Error != null) { Helper.ShowErrorMessageAndExit(runWorkerCompletedEventArgs.Error.Message); } foreach (var product in _installHelper.ProductList) { var installerItem = new InstallerItemControl(product); installerItem.Dock = DockStyle.Top; statusPanel.Controls.Add(installerItem); _productControlMap[product] = installerItem; } _worker2.RunWorkerAsync(); }; _worker2.DoWork += (object doWorkSender, DoWorkEventArgs doWorkEventArgs) => { _installHelper.BeginInstall(this); }; _worker2.RunWorkerCompleted += (object runWorkerCompletedSender, RunWorkerCompletedEventArgs runWorkerCompletedEventArgs) => { if (runWorkerCompletedEventArgs.Error != null) { _installHelper.LogInformation(runWorkerCompletedEventArgs.Error.Message); Helper.ShowErrorMessageAndExit(runWorkerCompletedEventArgs.Error.Message); } }; _worker.RunWorkerAsync(); }