【发布时间】:2013-07-17 18:46:26
【问题描述】:
我使用的是 Wix 3.7。我有一个 MSI,我想设置一个注册表项(可能通过自定义操作,因为他必须检查该项是否已经存在)。
我了解引导程序项目中的 Bundle 无法更改机器状态(例如设置注册表)。因此,我试图通过<MsiProperty> 传递命令行参数,但在我的引导程序日志文件中似乎没有显示为命令行参数。
- 是否可以在 Bundle 中设置注册表项?
- 如果没有,如何添加命令行参数(或其他一些自定义数据) 传递给 MSI。
- MSI 如何读取我传递给它的任何内容(无论它最终是命令行 arg 还是什么 否则)。
捆绑:
<?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 命令行上的属性必须是 PUBLIC 属性。公共财产就是全部大写的财产。所以,它需要是 SETLOCALDB,而不是 SetLocalDb。并且需要在 MSI 中声明为所有大写字母。
标签: wix windows-installer wix3.7