【问题标题】:Change upgrade location with silent installation of WiX Installer使用 WiX 安装程序的静默安装更改升级位置
【发布时间】:2016-07-27 09:02:00
【问题描述】:

我使用 WiX 构建了一个安装程序,它允许用户将当前安装升级到下一个版本并更改安装文件夹的位置。这在使用 .msi 文件时有效,但在使用 msiexec 静默运行时,我的 INSTALLDIR 设置稍后会在安装过程中被覆盖。

我查看了日志,它正在被当前安装目录覆盖。我有一个属性可以在注册表中搜索当前安装位置并将INSTALLDIR 设置为该值。

我猜在 .msi UI 值中,事情正在以正确的顺序运行,但在静默安装中,它们不是。

MSI (s) (A0:90) [09:47:34:315]: PROPERTY CHANGE: Modifying INSTALLDIR property. Its current value is 'C:\SpecifiedInSilentInstall'. Its new value: 'C:\CurrentInstallDirectoryFromRegistry\'.

有没有办法在CustomAction 或其他东西中指定顺序?

【问题讨论】:

    标签: wix windows-installer wix3


    【解决方案1】:

    如果您正在使用这样的自定义操作

    <CustomAction Id="SetInstallDir" Property="INSTALLDIR" Value="[YourInstallDir]" />
    

    您可以像这样在&lt;InstallExecuteSequence&gt; 部分中计时

    <Custom Action="SetInstallDir" Before="CostFinalize" />
    

    您可以在此处使用BeforeAfter 为您的活动计时。这些事件遵循特定的顺序(取自FIREGIANT

    • 应用搜索
    • 启动条件
    • 验证产品ID
    • 成本初始化
    • 文件成本
    • 成本最终确定
    • 安装验证
    • 安装初始化
    • 流程组件
    • 取消发布功能
    • 删除快捷方式
    • 删除文件
    • 安装文件
    • 创建快捷方式
    • 注册用户
    • 注册产品
    • 发布功能
    • 发布产品
    • InstallFinalize
    • 删除现有产品

    对于属性INSTALLDIR,将其设置在正确的事件上以使其生效(无论您需要什么)非常重要。对我来说Before=CostFinalize 将路径更改为我想要的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 2010-09-11
      • 1970-01-01
      相关资源
      最近更新 更多