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();
        }
        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();
        }