如何在“ WIX Burn Bootstrapper”中自动升级第三方“可执行程序包”

时间:2018-06-22 02:03:00

标签: wix components upgrade

背景 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&quot;/qb&quot;"
           UninstallCommand="/x /s /v&quot;/qb&quot;"
      Compressed="yes"
      DetectCondition="Fingerprint"
      Description="[Dependency::MyProduction][UpgradeByUninstallInstall][IsTypicalInstall]"
      SuppressSignatureVerification="yes">
        <dep:Provides Key="Fingerprint" Version="5.10.32.0" />
      </ExePackage>

1 个答案:

答案 0 :(得分:0)

根据您的示例,这听起来像您要使用的exe安装程序不支持RepairCommand

您尝试做的一件事是在您的InstallCondition元素上加入ExePackage属性。从WiX工具集文档中:

  

在安装软件包之前要评估的条件。仅当条件评估为true时,才会安装该软件包。如果条件评估为false,并且正在安装,修复或修改捆绑软件,则该软件包将被卸载。

话虽如此,我认为这将需要2个ExePackage元素,一个个接一个。首先进行设置,以便如果DetectCondition评估为true(意味着检测到该产品已安装在系统上),而InstallCondition评估为false(意味着如果检测到的版本低于您要安装的最新版本),则将执行UninstallCommand。第二个ExePackage元素将需要一个DetectCondition,如果安装了产品的目标版本,则其评估结果为true,并且您可以省略InstallCondition,因为我们不会希望在这种情况下可以卸载最新版本。

所有这一切都需要准确检索软件包的当前安装版本,以及DetectConditionInstallCondition中正确的版本比较条件。在这方面,我无法提供建议,因为您的示例没有让我知道如何填充Fingerprint变量。