从我们的应用程序启动VSIXInstaller.exe时,我们尝试使用Process对象上的ExitCode属性来确定软件包是否已成功安装,但我们发现即使用户点击,退出代码为0对话框中的“取消”按钮。
我预计在该场景中会返回一些其他代码,类似于msiexec所做的。
但是,当我搜索有关VSIXInstaller使用的退出代码的文档时,我找不到任何内容。我正在寻找along these lines的东西。
答案 0 :(得分:11)
这些退出代码来自Microsoft.VisualStudio.ExtensionManager.ExtensionManagerException
类的各种继承者:
1001 ExtensionManager.AlreadyInstalledException
1002 ExtensionManager.NotInstalledException
1003 ExtensionManager.NotPendingDeletionException
1005 ExtensionManager.IdentifierConflictException
1006 ExtensionManager.MissingTargetFrameworkException
1007 ExtensionManager.MissingReferencesException
1008 ExtensionManager.BreaksExistingExtensionsException
1009 ExtensionManager.InstallByMsiException
1010 ExtensionManager.SystemComponentException
1011 ExtensionManager.MissingPackagePartException
1012 ExtensionManager.InvalidExtensionManifestException
1013 ExtensionManager.InvalidExtensionPackageException
1014 ExtensionManager.NestedExtensionInstallException
1015 ExtensionManager.RequiresAdminRightsException
1016 ExtensionManager.ProxyCredentialsRequiredException
1017 ExtensionManager.InvalidPerMachineOperationException
1018 ExtensionManager.ReferenceConstraintException
1019 ExtensionManager.DependencyException
1020 ExtensionManager.InconsistentNestedReferenceIdException
1021 ExtensionManager.UnsupportedProductException
1022 ExtensionManager.DirectoryExistsException
1023 ExtensionManager.FilesInUseException
1024 ExtensionManager.CannotUninstallOrphanedComponentsException
1025 ExtensionManager.CorruptInstanceException
1026 ExtensionManager.RunFromEnginePathLocationException
2001 VSIXInstaller.InvalidCommandLineException
2002 VSIXInstaller.InvalidLicenseException
2003 VSIXInstaller.NoApplicableSKUsException
2004 VSIXInstaller.BlockingProcessesException
2005 VSIXInstaller.UserCancelledException
3001 means any other exception.
P.S。要在用户单击"取消"时避免获取零退出代码的情况,请在您的方案中使用静默安装(/quiet
标记在命令行中)。
编辑:从Visual Studio 2017 15.7开始,如果用户取消安装,VSIXInstaller将返回2005的退出代码。