如何将Win32 API应用程序部署为可执行文件

时间:2013-04-18 12:40:41

标签: winapi exe

如何将我的Win32应用程序部署为EXE应用程序,以便其他人(未安装VC ++)可以使用它?

我在Windows 7上使用VC ++ 2010。

3 个答案:

答案 0 :(得分:5)

如果在编译完成的程序时切换到“Release”模式(而不是在开发期间用于调试它的“Debug”),则应该获得一个可在未安装Visual Studio的计算机上运行的可执行文件。

但是,该可执行文件仍然需要安装适当版本的C运行时库。例如,如果您在Visual C ++ 2010中开发它,则需要安装CRT版本10。这是一个可自由再发行的库,可下载here

因此,您有几种部署选项:

  1. 手动展开

    向人们提供裸可执行文件,并将可再发行组件的安装程序包含在安装介质上的另一个文件夹中。如果他们将可执行文件复制到磁盘并且因为收到错误消息而无法运行它们,则应该从包含的可再发行组件安装程序安装CRT库。然后可执行文件就可以运行了。

    如果您拥有相对精通计算机的受众群体,或者您正在部署到固定范围的计算机(如学校或公司),则此功能非常有用。但是,对于客户的一般部署,它不能很好地工作。

    实际上,您甚至不需要安装程序。您可以将CRT DLL放在与可执行文件相同的文件夹中,它可以正常运行。这就是我测试我在干净的虚拟机上开发的应用程序的方法。它就像一个魅力。根本不需要运行CRT安装程序。您将在Visual Studio安装中找到这些必需的库:

    <Program Files folder>\Microsoft Visual Studio 10.0\VC\redist\x86
    
  2. 自动部署

    创建一个安装程序,自动安装您的应用程序及其所需的任何依赖项,包括CRT可再发行组件。这就是大多数商业应用程序所做的。除了最简单的应用之外,我推荐它。

    完整版本的Visual Studio 2010(即非Express版本)可以创建一个安装项目,您可以根据需要进行自定义以作为应用程序的安装程序。但这不再是创建安装程序的推荐方法,而是此功能has been removed from the latest version of Visual Studio, 2012

    所以即使您有安装项目可用的旧版VS,我建议您使用其他内容。没有必要浪费时间创建一些你以后必须更新的东西。我个人最喜欢的创建安装程序的选择是WiXInno Setup。两者都是免费的,并且可以在线获得大量文档。

    创建不需要做很多事情的简单设置非常简单 - 这可能是你的情况,因为你需要做的就是安装CRT可再发行组件(如果它还没有)。我愿意打赌你可以在WiX或Inno Setup中找到一个演练或在线演示如何做到这一点。

    如果你需要做更复杂的事情,这两个安装包都支持它。它们具有广泛的可定制性和强大功能,只需要更多的工作就可以完成所有工作。

  3. 静态链接

    如果您绝对需要能够分发在双击时保证简单工作的裸可执行文件,则需要将项目切换到所需运行时库中的静态链接。这意味着链接器实际上将所有CRT代码直接嵌入到您的可执行文件中,这意味着您不必单独重新分发CRT库。

    这种方法的缺点是,从CRT发布的改进,错误修复和安全补丁中受益的唯一方法是重新编译和重新分发您的应用程序。如果动态链接(默认设置),您的应用程序将自动受益于已安装的CRT库版本的增强功能。 Microsoft strongly recommends against static linking

    要在Visual Studio中切换这些模式,请按照下列步骤操作:

    • 在解决方案资源管理器中右键单击您的项目,然后选择“属性”。
    • 确保在对话框顶部的下拉框中选择“发布”配置。
    • 展开TreeView中的“C / C ++”项,然后选择“代码生成”。
    • 将“运行时库”选项的设置更改为“多线程(/ MT)”。

    my answer here中给出了关于这些神秘编译器开关的含义以及应该使用哪些内容的进一步说明。

  4. 最后注意事项:CRT库的“调试”版本不可再发行,但这并不重要,因为您应始终分发“发布”版本的无论如何你的应用程序,从来没有“调试”构建。

答案 1 :(得分:0)

确保您在发布模式下构建。正如Floris Velleman所说,你正在使用不需要的库来实现独立的可执行文件。

有关详情,请查看 Compiler Options (MSDN)。

答案 2 :(得分:0)

  1. 一般情况下,EXE文件在您构建或更高版本的任何Windows版本上运行的可能性非常大。

    所有下注,例如,如果您在Windows 7上使用Visual Studio 2012 Professional构建,并尝试在Windows 95上运行它。但是,否则,您可能是安全的:)

  2. 测试是否有任何依赖关系的最佳方法是在“干净的机器”上安装和运行。

    获取(和重用)“清洁机器”的最佳方法是使用VM。

    我建议VMWare。但Virtual BoxWindows Virtual PC也是可行的选择。

  3. 就安装人员而言,我强烈建议您查看InnoSetup

  4. 我希望有所帮助!