我可以在"安装设计器"中选择多个组件吗?

时间:2016-09-02 15:23:23

标签: installshield installshield-2012

我正在为64位应用程序创建一个安装程序,其中包含数千个第三方DLL(~2000)

根据InstallShield的最佳实践,每个DLL必须位于不同的组件中。

(来自doc) "每个组件应只包含一个可移植的可执行文件(.exe,.dll或.ocx文件)或WinHelp文件(.hlp文件)。"

所以我需要更多数千个组件才能更改" 64位组件"来自" No"到"是"。

在创建组件时,组件向导不允许我这样做。

问题:有没有办法对所有组件进行多选,以便能够一次更改所有组件的属性?或者我是否必须手动选择每个组件并更改属性?

注意:我知道如果1个组件被标记为64位,那么安装将是" 64位"察觉。

感谢。

1 个答案:

答案 0 :(得分:1)

不支持多选组件和编辑它们。但是,至少有三种解决方法具有不同的易用性。

  • 修改Component tableDirect Editor的“属性”列。在常见情况下,您将使用值8(msidbComponentAttributesSharedDllRefCount)替换一系列组件,其中一个组件还包含256(msidbComponentAttributes64bit)。如果是这种情况,您可以将它们批量修改为264。
  • 使用自动化界面属性ISWiComponent.Attrib64BitComponent通过脚本修改组件。
  • 在InstallShield 2016或更高版本中,在创建组件之前,请将InstallShield表中的MsiComponentAttributes设置为264之类的值。

请注意,在花时间将所有组件修改为64位之前,您应该确保需要这样做。如果这些组件仅将DLL安装到32位文件位置,并且不将注册表项安装到任何64位注册表位置(包括COM提取;如果您对这些文件使用COM提取,则它们可能 具有64位注册表项,因此需要为64位),不需要将它们标记为64位。

一旦确认需要更改它们,请注意,如果您之前使用该组件的32位变体发布了该软件包,则还需要为该组件创建新的GUID,作为以下内容的一部分组件规则。

请注意(如您所述)将任何组件标记为64位后,您需要将整个软件包标记为64位,并且它将不再安装在32位计算机上。