0

我有点挣扎于套件中与 msi 功能相关的功能。我有包含多个 MSI 文件的套件项目。在一个 MSI 中,我有一些我想要选择安装的功能。

在套件项目中,我添加了这个,以将其与套件功能列表中的复选框相关联。

":MSIPackageFeatureName" 旁边

"选择名称="NewFeature" DisplayName="ID_STRING" 安装="{00000000-0000-0000-0000-000000000000}"

但无论如何都会安装该功能,即使未选中该复选框。

所以我的第一个问题是,我应该添加一些自定义操作来更改安装级别吗?或者如果未选中复选框,我如何阻止安装该功能。

+奖金。出于某种原因,如果我检查它。其他一些文件不安装,这些文件与功能无关。

4

1 回答 1

0

InstallShield Suite 可以在它的一个 MSI 中处理功能选择,但它并不容易。通常,您可能会发现通过将 MSI 拆分为两个(或更多)沿着这些功能线并将这些单独的 MSI 包含在套件中来重构 MSI 会更容易。

如果您无法重构 MSI 的组成(可能是第三方 MSI,或者重构比替代方案更糟糕),您可以遵循从 Suite/Advanced UI 或 Advanced UI Installer 配置包功能的指南。特别要注意以下细微之处:

  • 包含一个以格式引用整个包的选择元素很重要<Selection ... Install="{guid}"/>
  • 此外,您需要多个(最好是子)选择元素,它们引用格式中的特征名称<Selection ... Install="{guid}:FeatureName"/>;请注意,一旦您列出了一个 {guid}:FeatureName,所有功能都必须在某处列出(并选择),否则它们将不会被安装。

在您的示例中,您有一个空 guid,而不是套件分配给包的 guid,并且您没有显示指定功能名称的子元素。因此,有可能通过列出一个功能,但从不列出另一个,无论您选择什么,其他功能都将被排除在安装之外。

也不清楚您是要使用 InstallationFeatures 页面来显示复选框,还是要创建自己的复选框来切换单个功能(后者需要引用伪属性,其中feature-name是您的选择元素)。FEATURE[feature-name].actionState

于 2016-02-12T13:14:19.627 回答