我使用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
或其他东西中指定顺序?
答案 0 :(得分:0)
如果您正在使用此类自定义操作
<CustomAction Id="SetInstallDir" Property="INSTALLDIR" Value="[YourInstallDir]" />
您可以在<InstallExecuteSequence>
部分计算时间,就像这样
<Custom Action="SetInstallDir" Before="CostFinalize" />
您可以在此处使用Before
和After
计算活动时间。这些事件遵循特定顺序(取自FIREGIANT)
- AppSearch
- LaunchConditions
- ValidateProductID
- CostInitialize
- FileCost
- CostFinalize
- InstallValidate
- InstallInitialize
- ProcessComponents
- UnpublishFeatures
- RemoveShortcuts
- RemoveFiles
- InstallFiles
- CreateShortcuts
- RegisterUser
- RegisterProduct
- PublishFeatures
- PublishProduct
- InstallFinalize
- RemoveExistingProducts
对于属性INSTALLDIR
,必须将其设置为正确的事件才能生效(无论您的需求是什么)。对我来说Before=CostFinalize
改变了我想要的路径。