1

我有一个基本 MSI 项目,其先决条件刚刚从 VC++ 8 更改为 VC++ 10 SP1。它是一个 32 位安装程序,可安装带有几个 64 位组件的 32 位程序。(它使用 LSP 进行 Internet 监控,因此它需要 32 位和 64 位 LSP,以便可以监控两种应用程序。)因此,需要 32 位和 64 位 VC++ 运行时在 64 位系统上。

使用 VC++ 8 合并模块,这不是问题,因为 WinSxs(并排)文件夹。现在,MS 已经放弃了这一点,并重新将所有运行时都放在 C:\Windows\System32 中,安装两个 VC++ 10 运行时作为先决条件不起作用,因为它们会相互覆盖。(大概是因为 64 位运行时合并模块被重定向到 SysWow64,即使它不应该这样做。)

有没有办法安装这两个运行时?我不介意使用独立的 vcredist_x64 安装程序而不是 x64 合并模块,但是当我尝试启动时,出现“另一个安装过程正在运行”错误。也许可以暂时禁用重定向?

我还考虑了文件夹内运行时安装,DLL 与您的应用程序位于同一个文件夹中,但由于 LSP 必须位于系统文件夹中,因此我对在其中放置另一组运行时感到紧张。

4

1 回答 1

1

您不能一次运行 2 个 MSI(您的 MSI 和 vc_redist_x64),这就是您收到错误的原因。而且您不能在一次安装中使用 x86 和 x64 合并模块,因为您的主要 MSI 是 x86。
我建议您使用引导的 SETUP.EXE 和先决条件。您将 vc_redist_x64 作为先决条件包含在 InstallShield 中。它会在您的 MSI 之前安装所有需要的 VC Redists。

于 2012-12-15T09:03:34.797 回答