繁体   English   中英

如何让 Windows 安装程序更新注册表字符串值(不是多字符串)中的列表?

[英]How to make windows installer update a list in a Registry string value (NOT multistring)?

我需要制作一个安装程序,它必须更改另一个应用程序(第三方)的注册表。 另一个应用程序有一个带有逗号分隔值列表的 REG_SZ(纯字符串,不是多字符串)。 我的值必须附加到该列表中(并在卸载时删除)。

ListToUpdate (REG_SZ) = "val1, val2, val3, myval"

Windows Installer 是否有任何内置工具可以做到这一点? 如果是这样,(我实际上不相信),如何通过 wix 使用它?

如果没有,wix 本身是否有任何扩展程序可以为我们创建一些自定义操作? 还是我必须实现自己的?

您可以读取注册表并获取属性的值。 然后使用旧值和新值写入同一个注册表。 这是如何做到的。

读取旧值

<Property Id="OLDVALUE">
    <RegistrySearch Id="TestReg"
                    Root="HKLM"
                    Key="Software\TestKey\TestKey2"
                    Name="Test"
                    Type="raw" />
</Property>

写回注册表

<Component Guid="A7C42303-1D77-4C70-8D5C-0FD0F9158EC4" Id="REGComponent" Directory="TEST">
      <RegistryKey Root="HKLM"
                 Key="Software\TestKey\TestKey2">
        <RegistryValue Name="Test"
                       Action="write"
                       Value="[OLDVALUE], MyVal"
                       Type="string"
                       KeyPath="yes" />
      </RegistryKey>
      </Component>

如果您想在卸载时删除您的值,您可以编写一个自定义操作来执行此操作。 还要确保 msi 应该在管理员模式下运行,否则注册表将不会被修改。

我认为您必须为此创建一个自定义操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM