我是Wix的初学者,我们正在尝试从Installshield迁移到Wix。但是我遇到了一个我无法解决的错误。在发布此消息之前,我已经完成了我的在线研究,我希望能得到一些专家的帮助,以防有人遇到类似的问题,并且能够指出我在这里犯下的愚蠢错误。
这是我的Wix包含文件:properties.wxi
<Include>
<?define Language="1033"?>
<?define Manufacturer="ABC Inc"?>
<?define Name="TRIAL-MSI"?>
<?define UpgradeCode="....GUID...."?>
<?define Version="09.00.0021"?>
<?define Comments="Contact: team@abc.com"?>
<?define Description="TRIAL Application"?>
</Include>
我在我的代码中调用它如下:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?include properties.wxi ?>
<Product Id="*"
Name="${var.Name}"
Language="${var.Language}"
Manufacturer="${var.Manufacturer}"
UpgradeCode="${var.UpgradeCode}"
Version="${var.Version}" >
<Package Comments="${var.Contact}"
Description="${var.Description}"
InstallerVersion="200"
Keywords="Installer,MSI,Database"
Languages="${var.Language}"
Manufacturer="${var.Manufacturer}"
Compressed="yes"
Platform="x86" />
我正在命令行编译我的脚本:
candle -arch x86 -I properties.wxi trial.wxs
我不断收到如下错误:
错误CNDL0048:文档元素名称&#39;包含&#39;是无效的。 Windows Installer XML源文件必须使用&#39; Wix&#39;作为文档元素名称。源跟踪:
我猜是因为Candle不接受包含文件,因此会抛出异常:
错误CNDL0008:产品/ @语言属性的值,&#39; $ {var.Language}&#39;,不是合法的整数值。
有人可以帮帮我吗?非常感谢任何帮助。
答案 0 :(得分:6)
将wxs
文件迁移到wxi
将Visual Studio中的文件Build Action
属性从Compile
设置为Content
修复它。
答案 1 :(得分:1)
蜡烛的-I
标志用于指定搜索包含文件的目录:
用法:candle.exe [ - ?] [-nologo] [-out outputFile] sourceFile [sourceFile ...] [@responseFile]
-I add to include search path
Wix预处理器将自动在当前源文件的目录中查找包含文件,因此没有理由在命令行上指定包含文件。您的命令行应该只包含Wix源文件:
candle -arch x86 trial.wxs
使用$(var.VARIABLENAME)
插入Wix变量。你的所有变量都用大括号括起来而不是圆括号。