32位和64位机器的WiX 3.8 MSI

32位和64位机器的WiX 3.8 MSI,wix,burn,wix3.8,Wix,Burn,Wix3.8,我有,WIX3.8安装项目和引导程序。如果我以32位机器为目标,一切都正常。我想创建两个单独的MSI文件,用于32位和64位的本地化。但是,我在configuration manager中找不到64位目标选项。因此,我手动创建了一个x64目标并尝试编译安装项目。但它完全失败了。我无法包含以下文件: <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi

我有,WIX3.8安装项目和引导程序。如果我以32位机器为目标,一切都正常。我想创建两个单独的MSI文件,用于32位和64位的本地化。但是,我在configuration manager中找不到64位目标选项。因此,我手动创建了一个x64目标并尝试编译安装项目。但它完全失败了。我无法包含以下文件:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">

    <?include $(var.ProjectDir)\Includes\Variables.wxi ?>

    <Fragment>
        <CustomAction somecustomaction />
        ...
        More custom actions...
        ...
    </Fragment>
</Wix>

...
更多自定义操作。。。
...
我得到的错误是:

错误33架构验证失败,第1行第206列出现以下错误: 命名空间“”中的元素“Wix”无法删除 包含文本。预期的可能元素列表:“捆绑产品模块修补程序” 片段“创建”。somefile.wxs 2 1 Some.Installer_x64\Some.Installer)

当我删除include标记时,它就会编译。但是我需要在引用一些变量的其他文件中使用这样的include指令。我真的不明白这里的问题。include标记适用于32位,那么如果我将其用于64位目标,为什么会抛出错误呢?这里的问题是什么


是否有为不同平台创建设置的最佳实践?我还使用Burn引导程序和英语和德语的本地化。关于StackOverflow,我也遇到过类似的问题,但到目前为止没有任何帮助。

我的设置与您基本相同(WiX 3.8,针对两种不同的平台,包括“Variables.wxi”文件,…),它工作得非常好。我最好的猜测是你的变量有问题

要根据目标平台切换某些值,请使用
$(var.platform)
变量:


将您的
Include
标记移到
Wix
标记之外


该错误告诉您在
Wix
标记中有无效内容。

错误在项目文件中。在我的菜单Build->Configuration Manager中,我将活动的构建配置设置为Release | x64。但是,Visual Studio不会自动将我的项目文件内容更改为发行版| x64

当我手动编辑项目文件时,我将平台更改为x64,但没有将配置更改为Release。它处于调试| x64模式,我的VisualStudio安装正在尝试以发行版| x64模式编译。现在,当我手动编辑项目文件以发布| x64时,错误已得到解决,安装程序正在编译


然而,据我所知,当VisualStudio2012出现问题时,我仍然不明白为什么candle.exe会给我这个错误。如果我错了,请有人纠正我。

实际上,模式验证错误是由candle.exe抛出的。我尝试注释Variables.wxi的内容,并给出了一个空Variables.wxi。它仍然抛出同样的错误。还有一件事是,我手动编辑了项目文件,并将平台更改为x64。因为通过VS的设置没有反映在项目文件中。更新WiX项目的项目文件是我没有做的事情。我更新了我的回答。不确定为什么我的回答被否决,因为它解释了错误信息并解决了问题。Wix预处理器命令通常位于Wix标记之前。