private static void RemoveSubscriptionExposure(SubscriptionState subState)
 {
     ShellExposure.RemoveSubscriptionShellExposure(subState);
 }
Beispiel #2
0
        private void MaintainSubscriptionInternal(string textualSubId)
        {
            bool flag1 = false;

            string[] strArray = new string[4]
            {
                "Maintain_Exception",
                "Maintain_Completed",
                "Maintain_Failed",
                "Maintain_FailedMsg"
            };
            bool      flag2          = false;
            Exception exception      = (Exception)null;
            bool      flag3          = false;
            string    linkUrlMessage = Resources.GetString("ErrorMessage_GenericLinkUrlMessage");
            string    linkUrl        = (string)null;
            string    str            = (string)null;

            Logger.StartCurrentThreadLogging();
            Logger.SetTextualSubscriptionIdentity(textualSubId);
            using (UserInterface userInterface = new UserInterface())
            {
                MaintenanceInfo maintenanceInfo = new MaintenanceInfo();
                try
                {
                    UserInterfaceInfo info = new UserInterfaceInfo();
                    Logger.AddPhaseInformation(Resources.GetString("PhaseLog_StoreQueryForMaintenanceInfo"));
                    SubscriptionState subscriptionState = this.GetSubscriptionState(textualSubId);
                    bool flag4;
                    try
                    {
                        subscriptionState.SubscriptionStore.CheckInstalledAndShellVisible(subscriptionState);
                        if (subscriptionState.RollbackDeployment == null)
                        {
                            maintenanceInfo.maintenanceFlags |= MaintenanceFlags.RemoveSelected;
                        }
                        else
                        {
                            maintenanceInfo.maintenanceFlags |= MaintenanceFlags.RestorationPossible;
                            maintenanceInfo.maintenanceFlags |= MaintenanceFlags.RestoreSelected;
                        }
                        AssemblyManifest deploymentManifest = subscriptionState.CurrentDeploymentManifest;
                        if (deploymentManifest != null && deploymentManifest.Description != null)
                        {
                            str = deploymentManifest.Description.ErrorReportUrl;
                        }
                        Description effectiveDescription = subscriptionState.EffectiveDescription;
                        info.productName = effectiveDescription.Product;
                        info.supportUrl  = effectiveDescription.SupportUrl;
                        info.formTitle   = string.Format((IFormatProvider)CultureInfo.CurrentUICulture, Resources.GetString("UI_MaintenanceTitle"), new object[1]
                        {
                            (object)info.productName
                        });
                        flag4 = true;
                    }
                    catch (DeploymentException ex)
                    {
                        flag4 = false;
                        Logger.AddErrorInformation(Resources.GetString("MaintainLogMsg_FailedStoreLookup"), (Exception)ex);
                        maintenanceInfo.maintenanceFlags |= MaintenanceFlags.RemoveSelected;
                    }
                    catch (FormatException ex)
                    {
                        flag4 = false;
                        Logger.AddErrorInformation(Resources.GetString("MaintainLogMsg_FailedStoreLookup"), (Exception)ex);
                        maintenanceInfo.maintenanceFlags |= MaintenanceFlags.RemoveSelected;
                    }
                    bool flag5 = false;
                    if (flag4)
                    {
                        if (userInterface.ShowMaintenance(info, maintenanceInfo) == UserInterfaceModalResult.Ok)
                        {
                            flag5 = true;
                        }
                    }
                    else
                    {
                        maintenanceInfo.maintenanceFlags = MaintenanceFlags.RemoveSelected;
                        flag5 = true;
                    }
                    if (!flag5)
                    {
                        return;
                    }
                    flag2 = true;
                    if ((maintenanceInfo.maintenanceFlags & MaintenanceFlags.RestoreSelected) != MaintenanceFlags.ClearFlag)
                    {
                        strArray = new string[4]
                        {
                            "Rollback_Exception",
                            "Rollback_Completed",
                            "Rollback_Failed",
                            "Rollback_FailedMsg"
                        };
                        subscriptionState.SubscriptionStore.RollbackSubscription(subscriptionState);
                        flag2 = false;
                        userInterface.ShowMessage(Resources.GetString("UI_RollbackCompletedMsg"), Resources.GetString("UI_RollbackCompletedTitle"));
                    }
                    else if ((maintenanceInfo.maintenanceFlags & MaintenanceFlags.RemoveSelected) != MaintenanceFlags.ClearFlag)
                    {
                        strArray = new string[4]
                        {
                            "Uninstall_Exception",
                            "Uninstall_Completed",
                            "Uninstall_Failed",
                            "Uninstall_FailedMsg"
                        };
                        try
                        {
                            subscriptionState.SubscriptionStore.UninstallSubscription(subscriptionState);
                            flag2 = false;
                        }
                        catch (DeploymentException ex)
                        {
                            Logger.AddErrorInformation(Resources.GetString("MaintainLogMsg_UninstallFailed"), (Exception)ex);
                            flag3 = true;
                            ShellExposure.RemoveSubscriptionShellExposure(subscriptionState);
                            flag3 = false;
                        }
                    }
                    flag1 = true;
                }
                catch (DeploymentException ex)
                {
                    Logger.AddErrorInformation((Exception)ex, Resources.GetString(strArray[0]), new object[1]
                    {
                        (object)textualSubId
                    });
                    exception = (Exception)ex;
                }
                finally
                {
                    Logger.AddPhaseInformation(Resources.GetString(flag1 ? strArray[1] : strArray[2]), new object[1]
                    {
                        (object)textualSubId
                    });
                    if ((uint)(maintenanceInfo.maintenanceFlags & MaintenanceFlags.RestoreSelected) > 0U & flag2 || (maintenanceInfo.maintenanceFlags & MaintenanceFlags.RemoveSelected) != MaintenanceFlags.ClearFlag && flag3 & flag2)
                    {
                        string logFileLocation = Logger.GetLogFilePath();
                        if (!Logger.FlushCurrentThreadLogs())
                        {
                            logFileLocation = (string)null;
                        }
                        if (str != null && exception != null)
                        {
                            Exception innerMostException = this.GetInnerMostException(exception);
                            linkUrl = string.Format("{0}?outer={1}&&inner={2}&&msg={3}", new object[4]
                            {
                                (object)str,
                                (object)exception.GetType().ToString(),
                                (object)innerMostException.GetType().ToString(),
                                (object)innerMostException.Message
                            });
                            if (linkUrl.Length > 2048)
                            {
                                linkUrl = linkUrl.Substring(0, 2048);
                            }
                        }
                        userInterface.ShowError(Resources.GetString("UI_MaintenceErrorTitle"), Resources.GetString(strArray[3]), logFileLocation, linkUrl, linkUrlMessage);
                    }
                    Logger.EndCurrentThreadLogging();
                }
            }
        }