Installation 如果已经安装了其他产品,如何使用Wix防止安装
我们有两种不同的产品,它们不可能同时安装在同一台机器上而不损坏,因此我们需要在Wix安装程序中为第一个产品添加一个检查,称为a,以防止它安装在已经安装了另一个(例如B)的机器上 我们已经为A和B定义了不同的升级代码,但是我需要向Wix安装XML中添加什么,比如说Installation 如果已经安装了其他产品,如何使用Wix防止安装,installation,wix,Installation,Wix,我们有两种不同的产品,它们不可能同时安装在同一台机器上而不损坏,因此我们需要在Wix安装程序中为第一个产品添加一个检查,称为a,以防止它安装在已经安装了另一个(例如B)的机器上 我们已经为A和B定义了不同的升级代码,但是我需要向Wix安装XML中添加什么,比如说“如果您发现有升级代码A,请不要安装它,因为它有升级代码B”。 我在这里看到了类似的问题但是答案通常不提供清晰的xml,而且只是部分相似,例如检查同一产品的x86与64,或者只是阻止安装同一产品的旧版本,我们已经这样做了。这里几乎所有的W
“如果您发现有升级代码A,请不要安装它,因为它有升级代码B”。
我在这里看到了类似的问题但是答案通常不提供清晰的xml,而且只是部分相似,例如检查同一产品的x86与64,或者只是阻止安装同一产品的旧版本,我们已经这样做了。这里几乎所有的Wix答案实际上都不包含xml,我觉得这很奇怪,因为这是我知道如何定义这些东西的唯一方法
关于这个的Wix文档也非常稀少,我找到了一些关于AppSearch()的东西,但这并不能帮助我弄清楚如何在xml中使用它来防止安装,如果找到了应用,或者如何通过升级代码或其他方式进行搜索。您应该能够在产品A中添加一些升级检测:
<Upgrade Id="$(var.ProductBInstallerUpgradeGUID)" >
<UpgradeVersion
IncludeMaximum ="yes"
IncludeMinimum="yes"
Maximum="255.255.65535.65535"
Minimum="1.0.0.0"
MigrateFeatures="no"
Property="PRODUCTBISINSTALLED"
OnlyDetect="yes" />
</Upgrade>
然后您可以使用启动条件
<Condition Message="!(loc.CannotInstallWithProductBInstalled)">NOT PRODUCTBISINSTALLED OR Installed</Condition>
未安装或未安装
因此,如果在此计算机上检测到产品b,它将停止安装,并显示由本地化文件中的“CannotInstallWithProductBinInstalled”字符串定义的错误消息
类似地,对于产品B中的产品A检测,您应该能够在产品A中添加一些升级检测:
<Upgrade Id="$(var.ProductBInstallerUpgradeGUID)" >
<UpgradeVersion
IncludeMaximum ="yes"
IncludeMinimum="yes"
Maximum="255.255.65535.65535"
Minimum="1.0.0.0"
MigrateFeatures="no"
Property="PRODUCTBISINSTALLED"
OnlyDetect="yes" />
</Upgrade>
然后您可以使用启动条件
<Condition Message="!(loc.CannotInstallWithProductBInstalled)">NOT PRODUCTBISINSTALLED OR Installed</Condition>
未安装或未安装
因此,如果在此计算机上检测到产品b,它将停止安装,并显示由本地化文件中的“CannotInstallWithProductBinInstalled”字符串定义的错误消息
类似地,对于产品B中的产品A检测,您可以使用包含componentsearch的属性声明从其他已安装产品中搜索组件id,如下面使用属性id和componentsearch的示例: 然后在启动条件下使用该属性
升级代码检测在大多数情况下有效,但不会跨上下文工作。如果以前的产品是每台机器(或每用户)安装的,而您的产品正好相反,则升级搜索不会检测到它。假设所有安装都相同并在InstallScope中指定,则可以进行升级搜索 您可以使用包含componentsearch的属性声明从其他已安装产品中搜索组件id,如下面使用Property id和componentsearch的示例: 然后在启动条件下使用该属性
升级代码检测在大多数情况下有效,但不会跨上下文工作。如果以前的产品是每台机器(或每用户)安装的,而您的产品正好相反,则升级搜索不会检测到它。假设所有安装都相同并在InstallScope中指定,则可以进行升级搜索 也许我可以使用这个的一个变体,如果我能解决它,我会发布一个答案。这很可能也会有帮助:也许我可以使用它的一个变体,如果我能解决它,我会发布一个答案。这很可能也有助于: