WIX:为要素

时间:2017-12-12 20:50:17

标签: windows wix windows-installer wix3.5

我正在使用WIX创建Windows Installer MSI。我想将文件分成不同的片段,在每个wxs文件中都有一小块代码。

目前我有以下文件: - Product.wxs ,其中包含Product,Package,MediaTemplate和Feature元素。 - Directories.wxs ,其中包含文件夹结构和组件,可在卸载时为用户授予权限并删除文件夹。

我也希望从 Product.wxs 中获取所有功能,并创建自己的文件,名为 Features.wxs

Directories.wxs 中,我有以下代码行:

<Component Id="Component1" Guid="PUT_GUID_HERE" Directory="Subfolder">
  <CreateFolder>
    <util:PermissionEx GenericAll="yes" ChangePermission="yes" Delete="yes" DeleteChild="yes" User="Users"/>
  </CreateFolder>
</Component>

有了上面的代码,因为我在Feature元素中引用了这个Component,所以我确定我的 Product.wxs 目录是相互关联的。

但是当我创建 Feature.wxs 文件并将代码行移到它下面时:

<Feature Id="CreateDirectoriesFeature" Title="Feature1" Level="1">
  <ComponentRef Id="Component1"/>
</Feature>

我不知道在 Product.wxs 中如何/在何处引用此片段/功能。

2 个答案:

答案 0 :(得分:1)

使用FeatureRef元素创建一个FeatureGroup,然后在Product.wxs中使用FeatureGroupRef进入范围。

答案 1 :(得分:0)

我也将我的功能内容放在不同的文件中,我唯一需要引用它们的是功能ID。

这是一个代码示例。这是我拥有的整个功能文件:

const

以下是我在 Product.wxs 中引用它的方法。我将向您展示从 MajorUpgrade 元素到其最终结果的整个文件:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
      <Feature Id="Feature_Name"
               Level="1">
          <ComponentRef Id="Component_Name"/>
      </Feature>
    </Fragment>
</Wix>

就是这样。也许你没有使用 FeatureRef