WiX:如何在安装到同一目录之前卸载产品?

WiX:如何在安装到同一目录之前卸载产品?,wix,Wix,如何实现以下目标:在安装产品A之前,卸载产品B,但仅当产品B安装在同一安装目录中时才卸载 产品A和产品B是完全独立和不同的产品,即它们有不同的产品代码和升级代码。我假设“相同的安装目录”是指用户可以选择的可浏览文件夹,因此,在用户选择文件夹并承诺开始安装之前(由于返回按钮),您不知道是否要卸载B。显然,如果在其他位置存在文件或注册表冲突,则会出现更大的问题 也许最简单的方法是: 使用ComponentSearch在a的安装目录中搜索组件id,该id将为您提供该组件的路径 将该路径与您的安装文件夹

如何实现以下目标:在安装产品A之前,卸载产品B,但仅当产品B安装在同一安装目录中时才卸载

产品A和产品B是完全独立和不同的产品,即它们有不同的产品代码和升级代码。

我假设“相同的安装目录”是指用户可以选择的可浏览文件夹,因此,在用户选择文件夹并承诺开始安装之前(由于返回按钮),您不知道是否要卸载B。显然,如果在其他位置存在文件或注册表冲突,则会出现更大的问题

也许最简单的方法是:

  • 使用ComponentSearch在a的安装目录中搜索组件id,该id将为您提供该组件的路径

  • 将该路径与您的安装文件夹(选择后)进行比较,看看它们是否相同-我不知道有什么内置的方法可以做到这一点。因此,如果它们相同,请使用自定义操作并设置属性

  • UpgradeCodes不同并不重要-您可以有一个Upgrade元素,它引用A的UpgradeCode并自动执行升级,奇怪的是,您在path compare属性true和UpgradeVersion元素中定义的Upgrade属性集上条件RemoveExistingProducts。这显然会影响你升级自己产品的能力,你还没有说这是不是一个要求。如果是问题,那么您应该在升级元素中添加自己的UpgradeCode,并使用另一个UpgradeVersion属性来检测,然后您在REP上的条件就是删除B或您自己的升级属性的条件,这两个条件都将被卸载并安装您的A