我有一个复杂的应用程序,它不能与CRT静态链接,但另一方面不需要安装管理员权限(因为它没有做任何需要它的事情)。安装CRT以便可以动态链接的常规方法是安装MS可分发CRT,但它需要管理员权限。
我正在考虑简单地将MSVCRT100 DLL放在与可执行文件相同的目录中以缓解问题,但我不确定这种做法是否有任何缺点,因为它在我看到的任何地方都没有被宽恕或谴责。有没有理由不这样做,除了遵循静态链接和安装distributables的通常做法?
答案 0 :(得分:4)
简短的回答是肯定的。你很可能在微软网站上选择部署应用程序http://msdn.microsoft.com/en-us/library/dd293565.aspx
复制相应的MFC和C运行时(CRT)库文件 - 例如,对于x86平台和Unicode支持,从\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ redist复制mfc100u.dll和msvcr100.dll \ x86 \ - 然后将它们粘贴到MFC项目的\ Release \文件夹中。有关可能必须复制的其他文件的详细信息,请参阅确定要重新分发的DLL。
缺点是可再发行软件包由微软安全修复程序更新。因此,如果部署了安全修复程序,您的应用程序将不会使用它,并且可能仍然不安全。我不是一个大粉丝,但它是winsxs目录的想法,并且自Visual 7.0以来的清单“帮助”您的应用程序始终使用最佳版本。