wix - WiX 中基于注册表项值设置的属性值

标签 wix installation windows-installer

如果注册表项 HKEY_CURRENT_USER\Control Panel\International\LocaleName 的值为 de-DE,我希望将 INSTALL_DE 属性值设置为 1。

我编写了以下代码。

<Property Id="INSTALL_DE">
    <RegistrySearch
        Id="NetFramework20"
        Root="HKCU"
        Key="HKEY_CURRENT_USER\Control Panel\International"
        Name="LocaleName"
        Type="raw" />
</Property>

<SetProperty Id="INSTALL_DE" After="AppSearch" Value="1">
    <[CDATA[INSTALL_DE="de-DE"]]>
</SetProperty>

如何纠正它?

最佳答案

按照您的示例代码尽可能接近,我发现三个问题:

  1. 双重使用 identfier(在本例中为 INSTALL_DE)
  2. key 名称错误;不要在搜索路径中添加 HKEY_CURRENT_USER 前缀,Root="HKCU" 会处理它
  3. CDATA 中缺少“!

写例如

<Property Id="LOCAL_NAME">
    <RegistrySearch Id="NetFramework20"
            Root="HKCU"
            Key="Control Panel\International"
            Name="LocaleName"
            Type="raw" />
</Property>

<SetProperty Id="INSTALL_DE" After="AppSearch" Value="1">
    <![CDATA[LOCAL_NAME="de-DE"]]>
</SetProperty>

关于wix - WiX 中基于注册表项值设置的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25363679/

相关文章:

php - 如何在 MAMP 的 php 版本上运行 composer?

installation - 将 InstallScope 更改为 "perMachine"后如何修复 wix 设置的升级逻辑

java - Jsp加载大量数据到内存?

winapi - 查找已安装产品的所有组件

installation - 从命令行传递的 WiX 条件属性不起作用?

.net - 将参数从 Bootstrap 传递到MSI bundle

c# - xml.LoadData - 根级别的数据无效。第 1 行,位置 1

visual-studio-2010 - WiX Burn Bootstrapper 的替代品? (可以使用 InstallShield LE Bootstrap 吗?)

visual-studio-2010 - 用 InstallShield/WIX 替换 VDPROJ 设置文件

wix - 当键路径是RegistryKey/Value时,Wix使用哪些元素自动生成ComponentId guid