我想设置我的WiX安装程序以检查是否存在现有应用程序,作为安装它的条件。如果目标服务器上尚未安装必备应用程序,则安装应终止。
首先,我愿意接受一个基于(但不仅仅是)自定义行动或启动条件的解决方案,尽管我必须承认我可能更倾向于发现条件,因为我发现它更容易使用。
其次,由于ProductCode或GUID是必备应用程序的唯一属性,该应用程序在其安装的所有服务器的Windows注册表中一致地记录,我的偏好是针对以下解决方案:以这家酒店为基础。换句话说,我更喜欢启动条件或自定义操作,以验证目标服务器上是否存在具有给定ProductCode或GUID的应用程序。
我可以添加以下几点,因为我还不确定我的场景是否完全被理解。
我有两个单独的产品,为了清楚起见,我将其称为产品A和产品B.作为安装产品B的先决条件,产品A应该已经安装在目标服务器上。我是否可以重申这两种产品都是从两个不同的MSI安装程序安装的,并且完全不相关。
Rick Bowerman,您在解决方案中引用了升级ID。您在此引用产品A的升级ID,是否已生成要插入产品B的产品标签中的代码段?
最后,如果可能的话,我真的很欢迎任何提议的解决方案的例子。
答案 0 :(得分:0)
由于您拥有产品A的GUID,因此可以检测到版本,如果在产品B中未检测到该版本,则会失败。在产品B中的产品标记之后添加此项。
<Upgrade Id ="Product A GUID">
<UpgradeVersion OnlyDetect="yes" Minimum="0.0.0.0"
Property="APPDETECTED" IncludeMinimum="yes" />
</Upgrade>
<Condition Message="Please Install Product A">
<![CDATA[APPDETECTED OR Installed]]>
</Condition>
更多相关信息here。