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

时间:2016-07-27 09:02:00

标签: wix windows-installer wix3

我使用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或其他东西中指定顺序?

1 个答案:

答案 0 :(得分:0)

如果您正在使用此类自定义操作

<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改变了我想要的路径。