我在一个受严格约束的环境中进行开发,但开发人员也有严格的控制。
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
如何才能成功地分发必要的文件,同时又能保持较低的开销?
发布于 2008-10-07 03:05:39
我们使用这个:Howto: Deploy VC2008 apps without installing vcredist_x86.exe
本质上
发布于 2008-11-06 07:24:47
我现在是微软的SxS维护者
我强烈建议不要从清单中删除publicKeyToken属性。dlls的私有部署将在此属性保持不变的情况下正常工作。但是,如果在目标计算机上集中安装了较新版本的CRT,则删除它将阻止您的应用程序从安全更新中受益,因为依赖关系将不再匹配。
所以,总结一下:用默认的方式嵌入你的清单是安全的。将CRT manifest + DLL文件直接复制到可执行文件的目录中,无需编辑。就这样。兼容Win2k+。
发布于 2008-10-07 02:21:38
在编译器属性页中为“运行时库”设置指定/MT (多线程)。这是针对运行时库的静态链接,因此您不必安装可再分发包。
https://stackoverflow.com/questions/176992
复制相似问题