我在发展中的环境受到严重限制,但开发者也有严密的控制。

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,则可以修改清单文件以仅引用您需要的文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top