我可以 select "Installation Designer" 中的多个组件吗?

Can I select more than one component in the "Installation Designer"?

我正在为包含数千个第 3 方 DLL (~2000) 的 64 位应用程序创建安装程序

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

(来自文档) "Each component should contain only one portable executable file (an .exe, .dll, or .ocx file) or WinHelp file (.hlp file)."

所以我有数千个组件需要将“64 位组件”属性 从 "No" 更改为 "Yes"。

组件向导不允许我在创建组件时执行此操作。

问题:有没有办法对所有组件进行多selection,以便能够更改所有组件的属性立刻?还是我必须手动 select 每个组件并更改 属性 ?

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

谢谢。

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

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

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

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

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