首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不使用VCRedist_x86.exe的Visual C++可再发行组件

不使用VCRedist_x86.exe的Visual C++可再发行组件
EN

Stack Overflow用户
提问于 2008-10-07 02:17:38
回答 4查看 37.7K关注 0票数 15

我在一个受严格约束的环境中进行开发,但开发人员也有严格的控制。

VCRedist_x86.exe -一个4Mb的可再发行的-没有乐趣(四个小时的传输)。我真的更喜欢重新发布MFC90.dll,msvcm90.dll,msvcp90.dll和msvcr90.dll -这更像是2Mb。然而,Redistributing Visual C++ Files说:

不支持重新分发没有清单构建的C/C++应用程序。如果没有将应用程序绑定到这些库的清单,则C/C++应用程序无法使用Visual C++库。有关详细信息,请参阅Choosing a Deployment Method

我最初的计划是将DLL复制到程序的工作目录中,但在这个充满清单的新世界中似乎行不通。

我的下一个猜测是虚构将文件填充到WinSxS目录中所需的注册表项,并亲自填充它(而不是使用4Meg程序)。

编辑软件经常更新,因此DLL比静态链接更可取。/edit

如何才能成功地分发必要的文件,同时又能保持较低的开销?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-07 03:05:39

我们使用这个:Howto: Deploy VC2008 apps without installing vcredist_x86.exe

本质上

  • 不要在您的exe文件中嵌入清单。
  • 将C++ DLL及其清单复制到你的应用目录。
  • 从所有清单(您的和微软的)中删除"publicKeyToken“。
  • 如有必要,请更改应用程序清单文件中的版本信息以匹配微软清单文件(反之亦然)
票数 13
EN

Stack Overflow用户

发布于 2008-11-06 07:24:47

我现在是微软的SxS维护者

我强烈建议不要从清单中删除publicKeyToken属性。dlls的私有部署将在此属性保持不变的情况下正常工作。但是,如果在目标计算机上集中安装了较新版本的CRT,则删除它将阻止您的应用程序从安全更新中受益,因为依赖关系将不再匹配。

所以,总结一下:用默认的方式嵌入你的清单是安全的。将CRT manifest + DLL文件直接复制到可执行文件的目录中,无需编辑。就这样。兼容Win2k+。

票数 27
EN

Stack Overflow用户

发布于 2008-10-07 02:21:38

在编译器属性页中为“运行时库”设置指定/MT (多线程)。这是针对运行时库的静态链接,因此您不必安装可再分发包。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/176992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档