Windows installer 如何在安装期间卸载应用程序(MSI)

Windows installer 如何在安装期间卸载应用程序(MSI),windows-installer,advanced-installer,Windows Installer,Advanced Installer,我有一个加载项应用程序A,是用外接程序express构建的。它的安装程序是在VisualStudio安装项目中构建的。现在我已经把它包含在另一个综合应用程序B中。它的安装程序是用高级安装程序构建的 我们希望能够在安装综合应用程序B的过程中卸载A。根据高级安装程序的用户指南“卸载应用程序时如何卸载另一个MSI包?”,我遵循该指南,但它不适用于我 因此,我必须错过一些东西,或者我的AIP中的某些设置不正确。我不知道如何附加aip文件。如何解决此问题?解决方案非常简单。由于A,从我看到的是一个MSI软

我有一个加载项应用程序A,是用外接程序express构建的。它的安装程序是在VisualStudio安装项目中构建的。现在我已经把它包含在另一个综合应用程序B中。它的安装程序是用高级安装程序构建的

我们希望能够在安装综合应用程序B的过程中卸载A。根据高级安装程序的用户指南“卸载应用程序时如何卸载另一个MSI包?”,我遵循该指南,但它不适用于我


因此,我必须错过一些东西,或者我的AIP中的某些设置不正确。我不知道如何附加aip文件。如何解决此问题?

解决方案非常简单。由于A,从我看到的是一个MSI软件包,您只需转到项目B的高级安装程序中的升级页面,然后使用“新建”按钮将应用程序A的MSI添加到列表中

将将App升级代码从B包中添加到升级表中,因此OS将考虑B是对A的升级,并将自动删除它。 编辑

添加自定义操作以运行类似的操作 MSIEXEC.exe/x{21D0F841-65A2-4A42-AA56-D7EF238968DE}/qn
然后添加扩展搜索(按升级代码搜索),使用搜索结果控制自定义操作。有关更多详细信息,请参见comments&chat

您引用的文章提供了卸载主应用程序时删除另一个基于MSI的应用程序的说明。那篇文章不包括你想做的事。如果外接程序已安装在目标计算机上,为什么在安装主应用程序之前需要卸载它(除非主应用程序正在安装其他版本)?请确保,在安装应用程序B时要卸载应用程序a,是吗?因为在您的问题中,您参考了《高级安装程序用户指南》中的一篇文章,其中解释了如何在卸载主应用程序的过程中卸载应用程序,在您的案例B中。@Bogdan。是的,我想在安装B时卸载A。我在《用户指南》中找不到完全相同的内容,所以我找到了我认为可以为我的案例量身定做的文章。不幸的是,我无法让它工作。请让我知道如何做到这一点。thanks@Tim,A只有一个功能,B有包括A在内的多个功能。因此,我们希望在安装B时卸载A。B还包括A的更多错误修复。基本上A将不再单独存在,它包含在B中。thanks@Bogdan,到目前为止,我已尝试了以下方法,但均无效。见最后一篇文章@。谢谢。创建一个exe(控制台程序),在其中运行MSIEXC。然后在自定义操作中添加exe;2.尝试了systemfolder,然后传入[systemfolder]msiexec.exe/x。。。在第三章中。创建了一个bat文件,该文件执行msiexec/x…,在自定义aciton中调用bat。这是Microsoft提供的自动支持,因此应该可以正常工作。如果这两个软件包具有不同的安装类型,即每个用户和每台机器,或者如果软件包B的版本小于A的版本,则此操作将跳过删除。此外,我假设在高级安装程序的升级页面中选择了选项“自动删除旧版本”,对于软件包B?是,自动升级是在AI中检查的。B版本为2.4.0,A版本为0.4.0。为每个用户安装而构建的。B是为每个用户或机器安装而构建的,默认为每台机器安装。在这种情况下,是否可以在安装B时卸载A?使用“升级”页面,只有将B的安装类型也设置为“每个用户”时,它才会工作,因此它与A的安装类型匹配。如果不想更改B的安装类型,可以尝试添加“启动文件或打开URL”预定义的自定义操作,在从InstallUISequence开始标准操作下,将其命令行字段设置为“msiexec/x{product code}”。但是,只有在B的安装使用完整UI运行时,此自定义操作才会运行,并且用户将在删除a时看到一个基本进度对话框,这不是很令人愉快。