Installshield:套件和MSI功能

时间:2016-02-12 10:16:44

标签: windows-installer installshield suite installshield-2015

我有点与使用msi功能的套件相关的功能。 我有套件项目,有多个MSI文件。在一个MSI中我有我想要选择安装的功能。

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

  

“:

旁边的”MSIPackageFeatureName“      

“Selection Name =”NewFeature“DisplayName =”ID_STRING“   安装= “{} 00000000-0000-0000-0000-000000000000”

但是无论如何都要安装该功能,即使没有选中该复选框。

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

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

1 个答案:

答案 0 :(得分:0)

InstallShield Suite可以在其中一个MSI中处理功能选择,但它并不容易。通常,您可能会发现通过将MSI沿着这些要素线分成两个(或更多)并且包括套件中的那些单独的MSI,可以更轻松地重构MSI。

如果您无法重构MSI的组成(可能是第三方MSI,或者重构可能更糟),您可以遵循Configuring Package Features from a Suite/Advanced UI or Advanced UI Installer的指导原则。特别要注意以下几点:

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

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

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