2016-07-27 125 views
0

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

我看了一下日志,它正在用当前安装目录写下来。我有一个属性,它在注册表中搜索当前安装位置,并将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或其他?

回答

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