为最终客户交付c++应用程序
deliver c++ application for the final customer
我正在visualstudio2010上开发一个c++windows应用程序。
我想把我的应用程序交付给我的客户,这样他就可以安全地使用它,而无需安装visualruntimefx。并在任何地方执行。
如何设置安装程序,使客户不需要单独安装任何所需的Visual Studio运行库?
请给我一个解决这个问题的方案,因为我的客户离计算太远了,他们喜欢"下一个,下一个安装,完成"系统。
谢谢你的帮助。
您可以静态链接产品,使其不具有任何外部依赖项,也可以在构建安装程序时为所需的运行时组件包含MSI合并模块。
一般来说,您有两个选项:
-
构建安装程序(例如,使用WiX或NSIS)。安装程序将安装您的应用程序以及任何所需的库。由于您正在分发应用程序,因此很可能您已经在构建安装程序,因此此解决方案是有意义的。
-
将文件与任何必需的库静态链接。这样,您的应用程序可执行文件就包含了所需的所有代码。当然,这是假设您正在使用的库可以静态链接。事实可能并非如此。
请不要静态链接任何内容。如果您正在生产MSI安装程序,只需按照此处和此处的说明为Visual Studio运行时包含合并模块即可。如果你可以使用WiX的最新版本,你可能想创建一个捆绑包。
通常情况下,选项包括静态链接、私有部署、使用合并模块来重用其他人的逻辑或通过使用引导程序重新分发prereq。
如果不知道你的确切依赖关系是什么,就不可能给出确切的答案,但以下是每种依赖关系的利弊:
静态链接-简单,因为除了你的文件之外没有什么可部署的。主要的缺点是,如果库存在安全漏洞,需要进行修补,则必须重新构建和重新部署应用程序。
私有部署-相对简单,因为您只需在应用程序目录中部署文件。仍然存在服务问题,因为您必须重新构建和重新部署应用程序。Microsoft不会修补您的目录。
合并模块-看起来很简单,只需添加合并模块即可。不过,仍然存在一些主要问题,如果合并模块出现问题,则由供应商决定。(微软)。这就是为什么现在不赞成使用合并模块的原因。
redist-最难实现(您需要定义setup.exe引导程序),但也最容易重用别人的安装程序。这是最佳的,因为供应商可以在不重建您的dll的情况下修补该dll。
因此,一般来说,重新分配是可行的。但并不总是…:)
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?