视觉C++不使用可再发行组件VCRedist_x86.exe
-
05-07-2019 - |
题
我在发展中的环境受到严重限制,但开发者也有严密的控制。
VCRedist_x86.exe -一4m可再发-是没有乐趣(四小时内传输)。我真的很喜欢只是重新分配MFC90.dll,msvcm90.dll,msvcp90.dll 和msvcr90.dll -这是更喜欢2mb.但是, 重新分配视C++的文件 说:
它不支持重新分配C/C++的应用程序内没有一个清单。视觉C++库不是用C++应用程序,没有清单的结合应用这些图书馆。更多信息,请参阅 选择一个部署方法.
我原来计划的复制Dll入程序的工作目录似乎不到 工作在这个勇敢的新世界的清单。
我的下一个猜测是决定不了注册条目需要填写文件成本;目录和填充我自己(而不是使用第4meg程序)。
[编辑]软件经常更新,因此Dll强烈的首选的静态联系起来。[/编辑]
怎么我可以成功地分发必要的文件,但保留在顶下来?
解决方案
我们使用这样的: Howto:部署VC2008应用程序,不安装vcredist_x86.exe
基本上
- 不嵌入一个体现在你exe文件。
- 复制的C++Dll和他们的表现给你的应用程序的目录。
- 删除"程序"从所有清单(你和微软)。
- 如果有必要更改的版本信息在应用的清单的文件匹配的Microsoft清单的文件(反之亦然)
其他提示
[我是微软当前的SxS维护者]
我强烈建议反对从清单中删除publicKeyToken属性。 dll的私有部署将完好无损,此属性保持不变。 但是,如果在目标计算机上集中安装了较新版本的CRT,则删除它将阻止您的应用程序从安全更新中受益,因为依赖项将不再匹配。
因此,总结一下:使用默认值嵌入清单是安全的。将CRT清单+ DLL文件直接复制到可执行文件的目录中,不进行编辑。而已。兼容的Win2k +。
为“运行时库”指定/ MT(多线程)在编译器属性页面中进行设置。这静态链接到运行时库,因此您不必安装可再发行组件。
将它们安装为私有程序集。见这里:
http://msdn.microsoft.com/en-us/library /ms235291.aspx
请注意,如果您不需要提供的所有DLL,则可以修改清单文件以仅引用您需要的文件。