【问题标题】:WIX: Create a fragment for featuresWIX:为特征创建片段
【发布时间】:2017-12-12 20:50:16
【问题描述】:

我正在使用 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 元素中引用了这个组件,我确信我的 Product.wxsDirectories 是链接的。

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

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

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

【问题讨论】:

    标签: windows wix windows-installer wix3.5


    【解决方案1】:

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

    【讨论】:

    • Product 中的以下简单行就足够了吗?
    • 包含 Product 元素的 wxs 是“主” wxs 文件。当您在另一个 wxs 中引用某些内容时,整个 wxs 都会被纳入范围。
    • 谢谢。我按照你上面说的做了,效果很好:)
    • FWIW,我维护了一个名为 IsWiX 的开源项目。它的功能之一是为您提供项目模板/脚手架。它创建了一个解决方案结构,因此您不必立即担心这一点。每种说法没有对错之分……这只是一种快速轻松地做到这一点的方法,因此您可以专注于其他事情。它还包括图形设计师来完成大部分繁重的 XML 工作。
    【解决方案2】:

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

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

    <?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>
    

    这就是我在 Product.wxs 中引用它的方式。我将向您展示从 MajorUpgrade 元素到其苦涩的整个文件:

            <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
            <MediaTemplate EmbedCab="yes"/>
            <FeatureRef Id="Feature_Name"/>
        </Product>
    </Wix>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      相关资源
      最近更新 更多