如何使windows安装程序更新注册表字符串值中的列表(非多字符串)



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

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

Windows安装程序有内置的功能吗?如果是这样的话(我其实不相信),如何通过wix来利用它?

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

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

读取旧值

<Property Id="OLDVALUE">
    <RegistrySearch Id="TestReg"
                    Root="HKLM"
                    Key="SoftwareTestKeyTestKey2"
                    Name="Test"
                    Type="raw" />
</Property>

正在写回注册表

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

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

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

最新更新