Wix 预处理器变量值包含引号
Wix preprocessor variable value includes quotes
使用 Wix 3.11,使用 msbuild 14.0.25420.1 构建的项目
我遇到过这样一种情况,我在处理器变量中定义的字符串在变量值中包含了引号。
如果有人能告诉我,我将不胜感激:
- 为什么会出现这种情况(我做错了什么吗?)
- 如何用 spaces
引用字符串值
项目有一个主要的.wxs文件,加上一些.wxi Include 个文件。
在主 Product.wxs 中 Wix 元素中:
<?define registry_key_path="SOFTWARE\MySoftwareGroup\MySoftware" ?>
然后在包含文件 Component.wxi 中的 Component 元素中:
<RegistryValue
Root="HKLM"
Key="$(var.registry_key_path)"
Name="InstallFolder"
Value="[INSTALLDIR]"
Type="string" />
安装失败并出现错误:
Error 1406. Could not write value InstallFolder to key
\"SOFTWARE\MySoftwareGroup\MySoftware"
您可以看到密钥包含引号。它应该是:
\SOFTWARE\MySoftwareGroup\MySoftware
如果我从定义中删除引号:
<?define registry_key_path=SOFTWARE\MySoftwareGroup\MySoftware ?>
安装程序正确解析变量并找到正确的注册表项并写入它。
为什么要包含引号?
如果字符串值包含 space,我将如何引用它?
适用于 WiX v3.11.1.2318。在 Orca 中打开您的 .msi 以检查 Registry
table 并查看那里是否存在引号。如果您可以在一个小示例 .wixproj 中重现它,请 open a bug.
使用 Wix 3.11,使用 msbuild 14.0.25420.1 构建的项目
我遇到过这样一种情况,我在处理器变量中定义的字符串在变量值中包含了引号。
如果有人能告诉我,我将不胜感激:
- 为什么会出现这种情况(我做错了什么吗?)
- 如何用 spaces 引用字符串值
项目有一个主要的.wxs文件,加上一些.wxi Include 个文件。
在主 Product.wxs 中 Wix 元素中:
<?define registry_key_path="SOFTWARE\MySoftwareGroup\MySoftware" ?>
然后在包含文件 Component.wxi 中的 Component 元素中:
<RegistryValue
Root="HKLM"
Key="$(var.registry_key_path)"
Name="InstallFolder"
Value="[INSTALLDIR]"
Type="string" />
安装失败并出现错误:
Error 1406. Could not write value InstallFolder to key \"SOFTWARE\MySoftwareGroup\MySoftware"
您可以看到密钥包含引号。它应该是:
\SOFTWARE\MySoftwareGroup\MySoftware
如果我从定义中删除引号:
<?define registry_key_path=SOFTWARE\MySoftwareGroup\MySoftware ?>
安装程序正确解析变量并找到正确的注册表项并写入它。
为什么要包含引号?
如果字符串值包含 space,我将如何引用它?
适用于 WiX v3.11.1.2318。在 Orca 中打开您的 .msi 以检查 Registry
table 并查看那里是否存在引号。如果您可以在一个小示例 .wixproj 中重现它,请 open a bug.