【问题标题】:Adding Wix Include file throws not "hexadecimal value 0x00, is an invalid character."添加 Wix 包含文件不会引发“十六进制值 0x00,是无效字符”。
【发布时间】:2021-08-15 14:34:28
【问题描述】:

我有一个包含 4 个共享包含文件的 wix 安装程序项目的解决方案。在我的开发机器上一切正常。检查所有内容并开始构建。在构建机器上运行时会抛出以下错误:

    1>D:\agent\_work\6\s\Path\to\WixPorject\Product.wxs(3,0): error CNDL0104: Not a valid source file; detail: '.', hexadecimal value 0x00, is an invalid character. Line 2, position 1.
    1>Done building project "whatever.wixProj" -- FAILED.

我在构建机器上打开了 VS 2019 中的解决方案,并没有发现任何问题。我的 license.rtf 末尾有一个 NULL 字符,但即使在删除它之后,我仍然通过 VS 构建相同的错误。我发现,如果我在 product.wxs 中注释掉 include 语句,替换所有 $(var.Variables) 它构建得很好。两个系统都使用 Wix 工具集 v3.11.2.4516。

config.wxi

<?xml version="1.0" encoding="UTF-8"?>
<Include>
  <?define SourceDir = "D:\agent\_work\6\b" ?>
</Include>

product.wxs

<?xml version='1.0' encoding='UTF-8'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<?include "..\config.wxi" ?>

在我的开发机器上构建没有问题。

【问题讨论】:

  • 也许在构建计算机上测试该路径:按住 Windows 键 => 点击 R => 粘贴:“D:\agent_work\6\b”按 Enter。
  • 目录打开正常。 D:是构建 VM 上的本地驱动器。事实上,由于某种原因,当构建失败并出现错误并且我登录构建机器时,打开解决方案并尝试构建其中一个 msi,它会失败并出现同样的错误。然后 - 如果我打开 config.wxi 文件并说更改路径以使用单引号: build 并且它通过了!真的很郁闷

标签: wix include


【解决方案1】:

好的 - 这是我的问题。我不敢相信我之前没有检查过这个。所以我使用 PowerShell 任务进行替换,它改变了 xml 文件的编码。直到我在 Notepad++ 中将更新后的文件与原始文件进行比较后才意识到这一点,它抛出了“尝试与不同的编码进行比较”警告消息!所以当我在构建机器上用VS打开项目时,它正在纠正编码和构建。

另一个注意事项是,我什至不必更新路径,只需要使用 env var,'SourceDir = $(env.BUILD_BINARIESDIRECTORY)' - 不过,仍然需要更新版本和升级代码。

这是我使用的:

$configFile = "$(Build.SourcesDirectory)\$(Branch)\WixMSI\config.wxi"

    (Get-Content "$configFile") `
        -replace 'SourceDir = "(.*?)"', "SourceDir = ""$(Build.BinariesDirectory)""" `
        -replace 'MSIUpgradeCode = "(.*?)"', "MSIUpgradeCode = ""$(MSIUpgradeCodeHS)""" `
        -replace 'ProductVersion = "(.*?)"', "ProductVersion = ""$(Version)""" `
        -replace 'ReleaseVersion = "(.*?)"', "ReleaseVersion = ""$ReleaseVersion""" |
      Out-File "$configFile"

只需添加:Out-File "$configFile" -Encoding "utf8"

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    相关资源
    最近更新 更多