代码之家  ›  专栏  ›  技术社区  ›  Agent_9191

在Visual Studio WIX项目中使用WXI文件

  •  4
  • Agent_9191  · 技术社区  · 17 年前

    我遇到过一些消息源,它们声明使用include文件(.wxi)将wix安装文件拆分为单独的部分(变量、组件等)。对我来说非常有意义,因此我将<components>节点从.wxs文件中取出并放在单独的文件中,但当我尝试在Visual Studio 2008中编译项目时,每个<componentRef>都会收到一个错误,说明它是“product:…”部分中“对符号的未解析引用”。

    我尝试过使用<?包括“文件名”?>标记在我的product.wxs文件中,但这似乎破坏了模式验证。如果是这样的话, 哪里 需要去吗?

    我有以下文件。

    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>
    

    组件WXI

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

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

    3 回复  |  直到 13 年前
        1
  •  11
  •   Community Mohan Dere    9 年前

    include文件应该被认为是头文件,您只需要使用它们来声明公共变量,等等,您需要在多个文件之间共享这些变量。 .wxs 文件夹。

    我的项目使用~10.wxs文件和单个.wxi,我在其中定义了产品代码、升级代码等。

    为了更好地了解我所说的内容,请查看SO问题 Wix Tricks & Best Practices WiX Includes vs. Fragments 以及 WX.CHM

        2
  •  4
  •   David McEwing    17 年前

    尝试使用wxs扩展,而不是wxi。我已经把我的机器拆了,用wxs作为扩展,它刚刚开始工作。项目中的所有wxs文件都由wixproj传递到wix编译器中。

        3
  •  0
  •   Nick    13 年前

    在搜索我的问题时发现了这个问题,我想如果有人从我那里来,我会添加我的修复程序。

    如果使用wixproj文件从Visual Studio编译,则此项目类型似乎不支持文件链接(添加现有项…添加为链接)。您将以项目中的链接结束,但当您编译时,它将抱怨有未解决的符号。

    推荐文章