0

我正在使用 wix 创建安装程序,但在写入注册表时遇到问题。这是我的 RegistryValue 元素:

<Component Id="CMP_odbcreg" Guid="{115B002E-F4C9-48CD-8E1C-E8803B16AE69}">
        <RegistryValue Id="rg_psql" 
                       Root="HKLM" 
                       Key="SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers" 
                       Name="PostgreSQL" 
                       Value="Installed" 
                       Type="string" 
                       KeyPath="yes" 
                       Action="write"/>
</Component>

没有任何内容被写入注册表。该组件在我的主要安装功能中,因此它应该始终写入注册表。我查看了我的日志文件,发现了这个:

MSI (s) (60:1C) [00:00:07:080]: Doing action: WriteRegistryValues
MSI (s) (60:1C) [00:00:07:080]: Note: 1: 2205 2:  3: ActionText 
Action 0:00:07: WriteRegistryValues. Writing system registry values
Action start 0:00:07: WriteRegistryValues.
WriteRegistryValues: Key: Writing system registry values, Name: , Value: 
Action ended 0:00:07: WriteRegistryValues. Return value 1.

我不知道我的解释是否正确,但似乎根本没有将任何内容写入注册表。除了 CMP_odbcreg 之外,我还有几个使用 heat 生成的其他组件,其中包含应执行的 RegistryValue 元素。我检查了我的 Windows 注册表并确认没有写入任何值。

我有一个 wix 手册,其中包含写入注册表的示例。我尝试将其复制并粘贴到我的安装程序中,并将其添加到主要安装功能中。那也没用

请帮忙!

4

2 回答 2

0

所以事实证明我正在查看错误的注册表。Windows 7 机器有一个 32 位和一个 64 位注册表,所以我应该查看 Windows\SysWOW64 中的 regedit.exe。

于 2013-08-26T22:41:07.407 回答
0

由于现在 64 位系统广泛传播,我推荐一个关于注册表重定向的小讲座,我相信你会发现这些信息对未来很有用。这适用于任何访问注册表的应用程序,而不仅仅是安装程序。

在您的情况下,如果您需要禁用安装程序的重定向,您可以查看这个 SO thread

于 2013-08-27T06:37:39.203 回答