Wix包含文件(.wxi)抛出异常

时间:2012-03-19 18:21:26

标签: wix wix3.5

我是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;,不是合法的整数值。

有人可以帮帮我吗?非常感谢任何帮助。

2 个答案:

答案 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变量。你的所有变量都用大括号括起来而不是圆括号。