【问题标题】:Using WXI files in Visual Studio WiX Project在 Visual Studio WiX 项目中使用 WXI 文件
【发布时间】:2009-04-29 19:46:36
【问题描述】:

我遇到了几个来源,声明使用包含文件 (.wxi) 将 WiX 安装文件拆分为单独的部分(变量、组件等)。对我来说非常有意义,所以我将 节点从 .wxs 文件中取出并将它们放在单独的文件中,但是当我尝试在 Visual Studio 2008 中编译项目时,每个 都会出现错误说明它是“'Product:{...}' 部分中对符号 '...' 的未解决引用”。

我尝试在我的 Product.wxs 文件中使用 标记,但这似乎破坏了架构验证。如果这是包含它的方式,它需要去哪里?

我拥有的文件如下。

Product.wxs

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product ...>
    <Package .../>
    <Media .../>
    <Directory Id="TARGETDIR" Name="SourceDir">
    </Directory>
    <Feature Id="MainProgram" Level="1">
      <ComponentRef Id="ProductComponent" />
      <Feature Id="ContextMenu" Level="2">
        <ComponentRef Id="ContextMenuComponent" />
      </Feature>
    </Feature>
  </Product>
</Wix>

Components.wxi

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <Fragment>
    <Component Id="ProductComponent" ...>
      <File .../>
    </Component>
    <Component Id="ContextMenuComponent" ...>
      <RegistryKey .../>
    </Component>
  </Fragment>
</Include>

如何让它在 Visual Studio 中构建?编写构建脚本似乎更简单,但还不是我的问题。

【问题讨论】:

    标签: visual-studio-2008 wix


    【解决方案1】:

    包含文件应该被认为是头文件,你真的只想用它们来声明你需要在多个.wxs文件之间共享的公共变量等。

    我的项目使用约 10 个 .wxs 文件和一个用于定义产品代码、升级代码等的 .wxi。

    为了更好地了解我在说什么,请查看 SO 问题 Wix Tricks & Best PracticesWiX Includes vs. Fragments,以及一如既往地查看 Wix.chm

    中的文档

    【讨论】:

    • @sascha 在这里有正确的建议。您在上面的系统中根本不需要包含。这就是蜡烛/光的力量。
    【解决方案2】:

    尝试使用 WXS 扩展而不是 WXI。我已经分解了我的并使用 WXS 作为扩展,它只是工作。项目中的所有 WXS 文件都由 wixproj 传入 wix 编译器。

    【讨论】:

    • @David McEwing 是的,所有的 .wxs 文件都传递给了蜡烛(创建一堆 .wixobjs 的编译器)然后所有的 .wixobjs 都传递给light(“链接”.wixobjs 和 .wixlibs 的链接器)过滤掉您不引用的内容并创建 .MSI/.MSM。
    【解决方案3】:

    发现这个问题正在寻找我的问题,我想我会添加我的修复以防有人来自我所做的地方。

    如果您使用 wixproj 文件从 Visual Studio 编译,似乎此项目类型不支持文件链接(添加现有项目...添加为链接)。您最终会得到项目中的链接,但是当您编译它时会抱怨存在未解析的符号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 2014-11-24
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多