Wix 预处理器变量值包括引号



使用Wix 3.11,使用 msbuild 14.0.25420.1 构建的项目

我遇到过这样一种情况,即我在处理器变量中定义的字符串在变量值中包含括起来的引号。

如果有人能告诉我,我将不胜感激:

  1. 为什么会发生这种行为(我做错了什么吗?
  2. 我将如何引用带有空格的字符串值

该项目有一个主.wxs文件,以及许多.wxi包含文件。

Wix元素中的主Product.wxs中:

<?define registry_key_path="SOFTWAREMySoftwareGroupMySoftware" ?>

然后在组件元素内的包含文件Component.wxi中:

<RegistryValue
Root="HKLM"
Key="$(var.registry_key_path)"
Name="InstallFolder"
Value="[INSTALLDIR]"
Type="string" />

安装失败,并显示错误:

错误 1406。无法将值安装文件夹写入密钥 "软件\我的软件组\我的软件">

您可以看到该键包含引号。其内容应为:

\软件\我的软件

组\我的软件

如果我从定义中删除引号:

<?define registry_key_path=SOFTWAREMySoftwareGroupMySoftware ?>

安装程序会正确分析变量并找到正确的注册表项并写入该注册表项。

为什么要包含报价?

如果字符串值包含空格,我将如何引用它?

适用于我 WiX v3.11.1.2318。在 Orca 中打开您的.msi以检查Registry表,看看那里是否存在报价。如果您可以在一个小示例中重现它.wixproj,请打开一个错误。

最新更新