2

VC++ 6.0 项目

完成我的项目后,我使用 Create Installer 创建了项目 EXE,

但问题是没有 vc++ 6.0 软件它不会执行 EXE 项目,

它显示错误:

此应用程序无法启动,因为未找到 MFC42.DLL,重新安装应用程序可能会解决此问题。

当我安装 vc++ 6.0 软件时,它不会出错。

请任何人帮助我,在没有 vc++ 6.0 s/w 的情况下必须执行该项目。

或者请告诉我如何制作项目 EXE(设置)

4

3 回答 3

1

您可能需要考虑迁移到使用更广泛的安装实用程序。许多开源项目(以及相当数量的商业项目)使用InnoSetup来构建安装程序。

无论您使用哪种工具,一般过程都是相同的。

  1. 创建程序的发布版本。
  2. 确定所有需要安装的文件。(尝试depends.exe使用 Visual Studio 附带的工具来了解所需的 DLL。)不要忘记帮助文件和示例。
  3. 列出文件和其他安装时任务(创建快捷方式、注册 DLL 等)。
  4. 构建并测试安装包。

测试安装可能很困难,实际上应该是另一个问题的主题。请注意,可以卸载已安装的内容,并且再次运行安装程序会做一些明智的事情。确保您有办法检测用户是否在旧副本仍在运行时尝试安装更新,并在发生这种情况时采取适当的措施,这也是一个好主意。(它会。)

于 2009-03-18T07:45:26.717 回答
1

检查 mfc42.dll 是否可以自由分发。我认为它是 Microsoft 运行时库的一部分,因此重新分发应该是合法的,但您需要验证这一点(除非其他人可以验证它)。

然后只需在您的设置中包含该 dll,以便该 dll 位于启动 exe 的同一文件夹中。

于 2009-03-17T09:43:10.803 回答
1

如果您的应用程序依赖于 Visual C++ 运行时,您可以将它们作为安装程序的一部分包含在内,以简化最终用户的安装体验。本文介绍了如何将 Visual C++ 运行时合并模块包含到您的安装程序中,并解释了您将看到的预期 ICE 警告。

第 1 步:获取正确的 Visual C++ 运行时合并模块 Visual C++ 运行时合并模块随 Visual Studio 一起安装,位于 \Program Files\Common Files\Merge Modules。Visual C++ 8.0 运行时文件是 Microsoft_VC80_CRT_x86.msm。这个相同的 MSM 用于 Visual C++ 8.0 SP1 运行时,但是它由 Visual Studio 2005 SP1 安装程序就地更新。Visual Studio 9.0 运行时文件是 Microsoft_VC90_CRT_x86.msm。通常不需要将策略 MSM 作为安装的一部分。

第 2 步:在安装程序中包含合并模块 要在安装程序中包含合并模块,请使用 and 元素。以下示例说明了如何使用这些元素。

Merge 元素确保合并模块包含在最终的 Windows Installer 程序包中。使用 Id 属性分配唯一的 id。SourceFile 属性指向您机器上合并模块的位置。DiskId 属性应与项目的 Media 元素中指定的 DiskId 匹配。Language 属性应始终为 0。

MergeRef 元素在 Feature 元素中用于实际安装合并模块。在上面的示例中,创建了特定于运行时的功能并将其标记为隐藏,以防止它显示在您的安装程序可能使用的任何 UI 中。MergeRef 通过其唯一 id 引用合并模块。

于 2015-04-16T11:25:54.937 回答