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

Age*_*191 4 wix visual-studio-2008

我遇到了几个来源,说明使用包含文件(.wxi)将WiX安装文件拆分为单独的部分(变量,组件等).对我来说很有意义,所以我从.wxs文件中取出<components>节点并将它们放在一个单独的文件中,但是当我尝试在Visual Studio 2008中编译项目时,每个<ComponentRef>声明都会出错这是"产品:{...}"一节中的"未解决的符号参考...".

我已经使用<?包括"文件名"?>标记在我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>
Run Code Online (Sandbox Code Playgroud)

Components.wxi

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <Fragment>
    <Component Id="ProductComponent" ...>
      <File .../>
    </Component>
    <Component Id="ContextMenuComponent" ...>
      <RegistryKey .../>
    </Component>
  </Fragment>
</Include>
Run Code Online (Sandbox Code Playgroud)

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

sas*_*ont 11

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

我的项目使用~10 .wxs文件和一个.wxi,我定义了产品代码,升级代码等.

为了更好地了解我正在谈论的内容,请查看Wix技巧和最佳实践以及WiX包含与片段的SO问题以及Wix.chm中的文档.