2012-12-04 55 views
0

我在C++ Windows应用程序工作在Visual Studio 2010中为最终客户

我想送我的应用我的客户这样他就可以伊斯利使用它提供C++应用程序,而无需安装视觉运行时的义务FX。并在每个地方执行。

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

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

谢谢你的帮助。

+1

我已尽力将您的问题“修复”到我认为您所问的问题上,但它可能仍会最终关闭。 – CashCow

+2

我想这取决于你正在使用的安装程序工具。可能有运行时的打包安装程序,您可以将它们用作部件。 – dutt

+1

如果您对C++和Visual Studio 2010有合理的能力,则一起安装MSI安装包应该是前瞻性的。 Windows SDK和Visual Studio都包含如何将应用程序分发到目标主机的示例。 – WhozCraig

回答

1

通常,这些选项是静态链接,私有部署,使用合并模块重用某个elses逻辑或通过使用引导程序重新分发prereq。

这是不可能给出一个确切的答案不知道你确切的依赖关系是什么,但这里是亲的和反对的每个:

静态链接 - 简单,因为其中没有部署其他那么你的文件。主要的缺点是,如果图书馆具有安全可用性并需要修补,那么无需重建和重新部署应用程序即可。

私人部署 - 相对容易,因为您只需在应用程序目录中部署该文件。由于您必须重建和重新部署应用程序,因此仍然存在服务问题。微软不会修补你的目录。

合并模块 - 看起来很简单,只需添加合并模块。尽管如此,如果合并模块出现问题,您仍然受到供应商的摆布,但仍然存在主要问题。 (微软)。这就是为什么在这些日子里合并模块的使用受到诟病的原因。

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

所以一般来说,redists是要走的路。但并不总是...... :)

+0

这是一个很好的答案:彻底,干净,易于阅读。 –

+1

真的吗?当我提到prereq和bootstrappers而没有解释它们是什么时,我想我会失去每个人。 :) –

2

一般来说,你有两个选择:

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

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

2

你要么静态链接你的产品,使其不具有任何外部依赖,或者你包括MSI Merge Modules当你生成安装程序需要运行时组件。

2

请不要静态链接任何东西。如果您正在生产MSI安装程序,请按照herehere的说明包含Visual Studio运行时的合并模块。如果您可以使用最新版本的WiX,则可能需要创建一个bundle

相关问题