我使用的是 Wix 3.7。我有一个 MSI,我想设置一个注册表项(可能通过自定义操作,因为他必须检查该注册表项是否已存在)。
据我所知,引导程序项目中的捆绑包无法更改计算机状态(例如设置注册表)。因此,我尝试通过传递命令行参数<MsiProperty>
,但似乎没有在引导程序的日志文件中显示为命令行参数。
- 是否可以在捆绑包中设置注册表项?
- 如果没有,我如何添加命令行参数(或其他一些自定义数据)
传递给 MSI。
- MSI 如何读取我传递给它的任何内容(无论它最终是命令行参数还是其他东西)
别的)。
Bundle:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle
Name="MyInstallerBootstrapperLocalDb"
Version="1.0.0.0"
Manufacturer="some company"
UpgradeCode="PUT-GUID-HERE">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<MsiPackage Id="MyInstallerInstaller"
SourceFile="$(var.MyInstallerInstaller.TargetPath)"
Compressed="no">
<!-- TODO - if this is being set correctly, the MSI needs to
interpret it and set up the key-->
<MsiProperty Name="SetLocalDb" Value="yes"/>
</MsiPackage>
</Chain>
</Bundle>
</Wix>
您的 MSI 需要定义如下属性:
<Property Id="SOMEPROPERTY" Value="Default"/>
然后您可以从捆绑包中设置此属性:
<MsiPackage SourceFile="<package>.msi" Id="SomeId">
<MsiProperty Name="SOMEPROPERTY" Value="[SomeProperty]" />
</MsiPackage>
之后,您可以按照此处所述在引导程序中设置属性:WiX Bootstrapper:如何从命令行设置刻录变量? https://stackoverflow.com/questions/14762617/wix-bootstrapper-how-do-i-set-burn-variables-from-the-command-line
请注意,SomeProperty 是一个 Burn 变量,您必须定义它:
<Variable Name="SomeProperty" Type="string" Value="DefaultValue" />
Update:
在 MSI 中,您可以根据此属性进行注册表搜索:
<RegistrySearch Id="GetSomeValue" Root="HKLM" Key="SOFTWARE\<Manufacturer>\[SOMEPROPERTY]" Name="<ValueName>" Type="raw" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)