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