【问题标题】:Wix preprocessor variable value includes quotesWix 预处理器变量值包括引号
【发布时间】:2018-01-25 22:14:51
【问题描述】:

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

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

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

  1. 为什么会出现这种行为(我是不是做错了什么?)
  2. 如何用空格引用字符串值

项目有一个主.wxs文件,外加一些.wxi包含文件。

Wix 元素内的主要 Product.wxs 中:

<?define registry_key_path="SOFTWARE\MySoftwareGroup\MySoftware" ?>

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

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

安装失败并出现错误:

错误 1406。无法将值 InstallFolder 写入键 \"SOFTWARE\MySoftwareGroup\MySoftware"

您可以看到键包含引号。它应该是:

\SOFTWARE\MySoftwareGroup\MySoftware

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

<?define registry_key_path=SOFTWARE\MySoftwareGroup\MySoftware ?>

安装程序正确解析变量并找到正确的注册表项并将其写入。

为什么要包含引号?

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

【问题讨论】:

    标签: wix wix3.11


    【解决方案1】:

    适用于我的 WiX v3.11.1.2318。在 Orca 中打开 .msi 以检查 Registry 表并查看引号是否存在。如果可以在小例子.wixproj中复现,请open a bug

    【讨论】:

    • 谢谢。我已经尝试在一个新项目中创建它,尽管尽可能地将项目复制到原始项目,但我无法重新创建问题。此外,我现在无法在我的原始项目中重新创建问题......所以要么我做了一些愚蠢的事情,要么一个小鬼或重新启动已经解决了它。不过感谢您的帮助。标记为关闭问题的答案。
    猜你喜欢
    • 2011-01-05
    • 2011-02-06
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    相关资源
    最近更新 更多