使用静默安装 WiX Installer 更改升级位置

Change upgrade location with silent installation of WiX Installer

我使用 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 之类的地方指定顺序?

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

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

您可以像这样在 <InstallExecuteSequence> 部分计时

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

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

  • AppSearch
  • LaunchConditions
  • ValidateProductID
  • CostInitialize
  • FileCost
  • CostFinalize
  • InstallValidate
  • InstallInitialize
  • ProcessComponents
  • UnpublishFeatures
  • RemoveShortcuts
  • RemoveFiles
  • InstallFiles
  • CreateShortcuts
  • RegisterUser
  • RegisterProduct
  • PublishFeatures
  • PublishProduct
  • InstallFinalize
  • RemoveExistingProducts

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