我正在用Java实现一个安装程序,它应该为Windows中的非特权用户(从XP及以上版本)下载并安装应用程序。该应用程序是用C ++编写的,依赖于通常的VC运行时库(msvcm90.dll和朋友)。为了节省带宽,我想避免下载VC可再发行组件(如果它们已经可供用户使用)。但是,我确实找到一种可靠的方法来检测是否安装了一个组件。
如果缺少程序集,我将按照此处所述进行部署:
http://msdn.microsoft.com/en-us/library/ms235291%28VS.80%29.aspx
所以问题是如何检测机器上是否安装了(任何)组件。并不要求这可以通过Java完成。我可以很容易地用C ++编写一个小探针并静态链接它以完成任务。
jgaa
答案 0 :(得分:2)
如果您愿意编写一个小型测试程序,而不是编写一个查找依赖项的程序,请编写一个与您的应用程序具有相同依赖项的程序。尝试运行它。如果它运行,依赖关系就位。如果失败,可能的原因是缺少依赖关系。
答案 1 :(得分:0)
似乎是一个相当复杂的技巧,这取决于这些可能已经存在于几个可能位置的设置。也许你最好的选择是使用WinAPI LoadLibrary测试这些DLL的存在 - 这应该找到任何自动共享并适合构建的DLL。
更好的LoadLibrary是一个需要它们的DLL,如Ben所暗示的那样。