如何实现以下目标:在安装产品A之前,卸载产品B,但如果安装在同一安装目录中,则 。
产品A和产品B是完全独立且不同的产品,即它们具有不同的产品代码和升级代码。
答案 0 :(得分:0)
我认为“相同的安装目录”是指用户可以选择的可浏览文件夹,因此在用户选择文件夹并且安装提交启动之前,您不知道是否要卸载B(因为后退按钮)。显然,如果在其他位置存在文件或注册表冲突,则存在更大的问题。
也许最简单的方法是:
使用ComponentSearch获取A安装目录中的组件ID,它将为您提供该组件的路径。
将该路径与您的安装文件夹(在选择之后)进行比较以查看它们是否相同 - 我知道没有任何内置功能。因此,如果它们相同,请使用自定义操作并设置属性。
升级代码不同并不重要 - 你可以拥有一个引用A的UpgradeCode的升级元素并自动升级,也许奇怪的部分就是你在路径比较属性为true时调整RemoveExistingProducts和升级属性集,您在UpgradeVersion元素中定义的属性集。这显然会影响您升级自己产品的能力,而您还没有说过这是否是一项要求。如果这是一个问题,那么您将在Upgrade元素中添加自己的UpgradeCode,并使用另一个UpgradeVersion属性来检测,然后您在REP上的条件是删除B或您自己的升级属性的条件,并且两者都将被卸载并且您的已安装。