0

当我们进行升级时,我们刚刚开始收到上面的错误消息。但是,如果我导航到 PreReq 文件夹 ( C:\ProductName\ISSetupPrerequisites\{AAEC4BE2-1C6B-45E0-B33D-0D657A05F292}) 并运行 vcredist_x86.exe 并转到另一个 prereq 文件夹 ( C:\ProductName\ISSetupPrerequisites\{8034C99E-3BC0-4E53-BC6E-02E3D8CF5378})(按此顺序),它可以正常工作并安装。我假设其中一个用于 C++ 2005,一个用于 SP1 版本,但我不确定哪个是哪个。

我假设第一个用于第一个版本,第二个用于 SP1,因为如果我以相反的顺序安装它们会失败。有趣的是,两者都没有被选为 Installshield 的 Redistributables 选项卡上的先决条件。所以问题可能是它试图安装它们的顺序。我什至没有在 IS 中的可再发行组件列表中看到 C++ 2005(非 SP1),但由于某种原因,两个 vcredist_x86.exe 文件包含在发行版中,并且当以正确的顺序运行时(在安装之外)它们可以工作美好的。

那么如何更改安装程序中的顺序或让它正常工作呢?在这开始发生之前,我将 .ism 文件中的所有更改都还原了回来,但这并没有帮助。

PS 我也将这个问题发布到 InstallShield 论坛。

4

1 回答 1

0

据我了解,没有理由同时安装这两个 VC++ 2005 可再发行组件。您可能只需要较新的。

由于您说未在Redistributables选项卡上检查它们,这意味着它们很可能在构建时由 InstallShield 自动添加。发生这种情况是因为您在某些组件上将.NET Scan at Build选项设置为依赖项和属性。使用此设置,InstallShield 会扫描组件文件并尝试添加所需的任何依赖项。如果您知道需要哪些依赖项,则可以关闭该设置,然后在 Redistributables(或先决条件)选项卡上自行选择必要的依赖项。

这些 GUID 没有什么神奇之处 - 它们只是 InstallShield 在其预定义的先决条件中使用的 GUID:

  • {8034C99E-3BC0-4E53-BC6E-02E3D8CF5378} 是 VC++ 2005 SP1 (x86)
  • {AAEC4BE2-1C6B-45E0-B33D-0D657A05F292} 是 VC++ 2005 SP1 MFC 安全更新 KB2538141 (x86)

如果您需要的先决条件未包含在 InstallShield 中,您可以定义自己的先决条件。转到工具/先决条件编辑器

于 2018-01-17T19:32:57.767 回答