public override void Execute()
        {
            editorControl = new PackageDeploymentView();
            onLogHandler  = (ss, ee) => { editorControl.ReportProgress(ee.Message, 1, 10); };

            var model = new NuGetPackageDeploymentViewModel
            {
                SharePointConnection = AppService.ActiveSharePointConnection,
                NuGetPackage         = Data
            };

            editorControl.ViewModel = model;

            ShFormUtilsEx.ShowModal(new ShowModalExOptions
            {
                Control        = editorControl,
                OnControlSetup = (control) =>
                {
                    control.OkButton.Text = "Deploy";
                    control.TsEnableOkButton(AppService.ActiveSharePointConnection != null);
                },
                OnOk = (s, e) =>
                {
                    e.Cancel = true;
                    PerformPackageDeploymentAsync(e, model);
                }
            });
        }
        private void PerformPackageDeploymentAsync(ShModalDialogControlClosingEventArgs e, NuGetPackageDeploymentViewModel model)
        {
            TraceService.OnTrace += onLogHandler;

            ShAsync.DoAsync(new ShAsyncOptions
            {
                Do = () =>
                {
                    var count = 10;

                    e.Control.TsEnableOkButton(false);
                    e.Control.TsEnableCancelButton(false);

                    try
                    {
                        DeployNuGetPackageInternal(
                            model.SharePointConnection.Dto,
                            model.NuGetPackage.Package,
                            model.IsForceDeploy);
                    }
                    finally
                    {
                        e.Control.TsEnableOkButton(true);
                        e.Control.TsEnableCancelButton(true);

                        TraceService.OnTrace -= onLogHandler;
                    }
                },
                OnDone = () =>
                {
                }
            });
        }