背景 WiX Installer技术对我来说是全新的。
在我的产品中,我使用了EXE安装程序(由WiX创建)来安装软件。安装程序中包含第三方“可执行程序包”(V5版本)。 在我的软件的下一版本中,应将第三方“可执行程序包”升级到V6版本。 所以我的问题是...我如何配置Wix安装程序以检查目标计算机中是否已安装了该第三方“可执行程序包”的旧版本。以及如何在Wix安装程序中自动安装较新版本之前将其卸载?
第三方“可执行程序包”的安装配置现在如下。
<ExePackage
Name="Fingerprint Driver"
DisplayName="Fingerprint Driver"
SourceFile="..\..\common\prereq-packages\FingerprintDriver_64-bit_5.10.32.exe"
Cache="no"
PerMachine="yes"
Permanent="yes"
Vital="yes"
InstallCommand="/s /v"/qb""
UninstallCommand="/x /s /v"/qb""
Compressed="yes"
DetectCondition="Fingerprint"
Description="[Dependency::MyProduction][UpgradeByUninstallInstall][IsTypicalInstall]"
SuppressSignatureVerification="yes">
<dep:Provides Key="Fingerprint" Version="5.10.32.0" />
</ExePackage>
答案 0 :(得分:0)
根据您的示例,这听起来像您要使用的exe
安装程序不支持RepairCommand
。
您尝试做的一件事是在您的InstallCondition
元素上加入ExePackage
属性。从WiX工具集文档中:
在安装软件包之前要评估的条件。仅当条件评估为true时,才会安装该软件包。如果条件评估为false,并且正在安装,修复或修改捆绑软件,则该软件包将被卸载。
话虽如此,我认为这将需要2个ExePackage
元素,一个个接一个。首先进行设置,以便如果DetectCondition
评估为true
(意味着检测到该产品已安装在系统上),而InstallCondition
评估为false
(意味着如果检测到的版本低于您要安装的最新版本),则将执行UninstallCommand
。第二个ExePackage
元素将需要一个DetectCondition
,如果安装了产品的目标版本,则其评估结果为true
,并且您可以省略InstallCondition
,因为我们不会希望在这种情况下可以卸载最新版本。
所有这一切都需要准确检索软件包的当前安装版本,以及DetectCondition
和InstallCondition
中正确的版本比较条件。在这方面,我无法提供建议,因为您的示例没有让我知道如何填充Fingerprint
变量。