错误 CNDL0199:Wix 元素的命名空间不正确 'http://schemas.microsoft.com/wix/2003/01/wi'

Error CNDL0199 : The Wix element has an incorrect namespace of 'http://schemas.microsoft.com/wix/2003/01/wi'

我将我的 WIX 项目从 V2 迁移到 V4,然后更改了 .WXS 文件中的命名空间

我替换了下面的命名空间

<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">

<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">

当我 运行 构建安装程序进行更改后,我收到以下错误:

error CNDL0199 : The Wix element has an incorrect namespace of
'http://schemas.microsoft.com/wix/2003/01/wi'.  Please make the Wix element
look like the following: <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
E:\Code\EMR\Wix\src\EMR_Registry_entries.wx

我替换了新的命名空间,但它没有反应。一旦我 运行 构建安装程序,它就会使用旧的命名空间进行设置。我尝试了很多次,但它总是设置旧的命名空间。

请帮我解决问题。

UPDATE: Question that came up from a second read of your question.

Source Control: "Once I run the build installer it is setting with the old namespace." - are you sure the build process doesn't auto-magically 1) check the WiX source out of your source control system? Or 2) maybe it is doing some XML manipulation via the automation script?


WiX 版本:你确定你正在编译 WiX 4 ?也许你是无意中用 WiX 2WiX 3 编译的?尝试在您的构建系统中对 WiX 二进制文件的完整路径进行硬编码——如果您有的话。请看这个(Sean 是一名 WiX 开发人员):Frankly I am not sure how well WiX handles multiple-version installations on the same box combined with migrated sources(不同版本的同名二进制文件 - WiX 2、3、4 - 通过 PATH 变量全局适用?不确定) .

Visual Studio / Cmd.exe?:您是使用 Visual Studio 还是通过命令行? (我不太确定阅读你的问题)。如果您使用的是 Visual Studio,则可能 try via the command line(朝底部)- 反之亦然。确保使用正确的 WiX 二进制文件(换句话说 WiX 4)。

链接文件?: 我没有任何 WiX 2要迁移的源文件,但我想知道您是否有多个相互关联的源文件。在 WiX 2 中甚至可能吗?我不记得了。无论哪种情况,我都会确保您已经更新了在构建过程中引入的所有 WiX 源文件。请仔细阅读日志。也许尝试使用命令行直接用 Candle.exe 编译它们(cmd.exe 而不是 Visual Studio) 查看文件是否编译成功。

Source Files?: 如果还是不行,请把源文件放到网上,我们看看。 Github.com 例如。快速查看源代码(真正的 McCoy)有时会有很长的路要走 - 有时它根本没有帮助。也许试一试。 经过编辑的来源 很好 - 甚至受到鼓励。请密切注意敏感数据:(这也适用于已发布的源文件 - 显然 - 不仅仅是编译的 MSI 及其帮助文件 - 例如静默安装模板批处理文件)。


In summary: That became a lot of babble. Maybe first try to compile the migrated WiX source with the right WiX 4 binaries to determine if that works or not. Then work backwards to figure out what happens during the build process.