为最终客户提供c ++应用程序

时间:2012-12-04 16:55:35

标签: c++ windows winapi windows-installer

我正在使用visual studio 2010上的c ++ windows应用程序。

我想将我的应用程序交付给我的客户,以便他可以轻松地使用它,而无需安装visual runtime fx。并在每个地方执行。

如何设置安装程序,以便客户无需单独安装任何所需的Visual Studio运行时库?

我想要一个解决这个问题的方法,因为我的客户远离计算机,他们只喜欢“下一个,下一个,安装,完成”系统。

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

一般来说,您有两种选择:

  • 构建安装程序(例如,使用WiX或NSIS)。安装程序将安装您的应用程序以及任何所需的库。由于您正在分发您的应用程序,因此您可能已经构建了一个安装程序,因此这个解决方案很有意义。

  • 将文件与任何所需的库静态链接。这样,您的应用程序可执行文件包含它所需的所有代码。当然,这假定您使用的库可以静态链接。情况可能并非如此。

答案 1 :(得分:2)

您要么静态链接您的产品,以使其没有任何外部依赖关系,要么在构建安装程序时为运行时组件包含MSI Merge Modules

答案 2 :(得分:2)

请不要静态链接任何内容。如果要生成MSI安装程序,请按照herehere所述,为Visual Studio运行时包含合并模块。如果您可以使用最新版本的WiX,则可能需要创建bundle

答案 3 :(得分:1)

通常,选项是静态链接,私有部署,使用合并模块来重用某些逻辑或通过使用引导程序重新分配先决条件。

在不知道你的确切依赖关系的情况下,不可能给出确切的答案,但这里是每个人的专业人士和骗子:

静态链接 - 很简单,因为除了你的文件之外没有任何东西可以部署。主要的缺点是如果图书馆具有安全性并且需要修补,那么您无法重建和重新部署应用程序。

私有部署 - 只需在应用程序目录中部署文件即可。由于必须重建和重新部署应用程序,因此仍然存在服务问题。 Microsoft不会修补您的目录。

合并模块 - 看似简单,只需添加合并模块即可。仍存在一些重大问题,如果合并模块出现问题,您将受到供应商的支配。 (微软)。这就是为什么合并模块的使用在这些日子里不受欢迎。

redist - 最难实现(您需要定义一个setup.exe引导程序),但最简单的方法是重用其他人的安装程序。这是最佳的,因为供应商可以在不重建您的情况下修补该DLL。

所以一般情况下,红色人才是最佳选择。但并非总是......:)