有关部署openSSL dll的建议

时间:2010-07-09 13:23:41

标签: delphi deployment resources openssl indy

我制作了一个使用Indy并需要OpenSSL dll的简单应用程序。

我不打算为它编写安装程序,所以我有两个选项:

1)通过在同一文件夹中复制应用程序exe + libeay32.dll + ssleay32.dll来部署它

2)将libeay32.dll和ssleay32.dll放在exe资源中,并在程序启动时将它们解压缩到applicationpath(但如果我在windowsserver 2008或windows vista上运行exe,这可能会出现问题)使用Program Files文件夹“部署”)

你能评论一下这些技术或提出更好的方法吗?

4 个答案:

答案 0 :(得分:4)

您可以坚持使用选项1):D

或者,您可以使用数字2的变体,但将它们提取到应用程序数据路径:

GetSpecialFolderPath(CSIDL_LOCAL_APPDATA))

并使用

SetDLLDirectory(DirectoryPath:PWideChar) 

指定从

加载dll的位置

当然,说实话,只需写一个简单的安装程序就可以了!

编辑: 哦,是的,正如UnixShadow所提到的那样,哈希dll,这样你就可以确定你正在使用正确的文件!

答案 1 :(得分:3)

选项3:使用Inno进行安装!您可能有充分的理由不想使用安装程序,但如果您认为它太贵(时间或金钱),您可能会查看Inno。我在今年早些时候开始使用它,并惊讶于学习和使用它是多么容易。而且,它是免费的!

当然,学习Inno的另一个好处是,您将来可以在其他项目中使用它...

答案 2 :(得分:2)

根据应用程序的性质,您可以考虑使用Lazarus进行编译。

我知道,我知道,这是一个很大的延伸,我不知道某人用openssl实际做过这个,所以这可能太多了。我还是想记下这个理论解决方案。

这是因为FPC / Lazarus是mingw兼容的,并且可以使用相同的(GNU链接器),你可以尝试静态链接mingw libs(.a's)。

过去有些人已经尝试过它,我听说人们用mysql成功了,但不幸的是他们没有提供详细信息。

所以我没有确凿的证据表明它有效,这使它有点学术化。

答案 3 :(得分:1)

我会将它们安装在同一个文件夹(选项1)中,在启动程序时添加到实际上MD5两个dll。尝试验证它们是否未被修改。这对安全性没有多大帮助,因为黑客可能会修改我的MD5总和,我会比较。但它至少会阻止程序使用腐败的dll。当然,这也会阻止在不更新主应用程序的情况下更新dll的可能性(好的坏)。