【问题标题】:Wix Include file (.wxi) throws exceptionWix 包含文件 (.wxi) 引发异常
【发布时间】:2012-03-19 18:21:26
【问题描述】:

我是 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:文档元素名称“包含”无效。 Windows Installer XML 源文件必须使用“Wix”作为文档元素名称。源跟踪:

我猜是因为 Candle 不接受包含文件,所以它会抛出异常:

错误 CNDL0008:Product/@Language 属性的值“${var.Language}”不是合法的整数值。

有人可以帮我解决这个问题吗?非常感谢任何帮助。

【问题讨论】:

    标签: wix wix3.5


    【解决方案1】:

    wxs 文件迁移到wxi 时出现此错误

    将 Visual Studio 中的文件 Build Action 属性从 Compile 设置为 Content 修复了它。

    【讨论】:

    • 谢谢,这就是原因。
    【解决方案2】:

    candle 的-I 标志用于指定搜索包含文件的目录:

    用法:candle.exe [-?] [-nologo] [-out outputFile] sourceFile [源文件 ...] [@responseFile]

    -我添加包括搜索路径

    Wix 预处理器会自动在当前源文件的目录中查找包含文件,因此没有理由在命令行上指定包含文件。您的命令行应该只包含 Wix 源文件:

    candle -arch x86 trial.wxs
    

    更新:

    使用$(var.VARIABLENAME) 插入Wix 变量。您的所有变量都用大括号而不是括号括起来。

    【讨论】:

    • 感谢您的回复。如果我删除 -I 标志,那么我仍然会收到另一个错误:错误 CNDL0008:Product/@Language 属性的值“${var.Language}”不是合法的整数值。合法整数值从 -2,147,483,648 到 2,147,483,647。我不认为它是从 properties.wxi 读取值
    • @HiteshSavla,查看我的更新。您的示例中还缺少 $(var.Contact) 的定义。
    • 我知道我这样做很愚蠢。非常感谢您在这方面帮助我!。
    • 对于我们这些使用.wixproj 文件的人,您可以使用Candle task 的IncludeSearchPaths 属性向包含路径添加一些内容。例如:&lt;IncludeSearchPaths&gt;dirs&lt;/IncludeSearchPaths&gt;
    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多