【问题标题】:Suggestions for deploying openSSL dlls部署 openSSL dll 的建议
【发布时间】:2011-03-13 21:07:33
【问题描述】:

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

我不会为它编写安装程序,所以我有两个选择:

1) 将应用程序 exe + libeay32.dll + ssleay32.dll 复制到同一个文件夹进行部署

2) 将 libeay32.dll 和 ssleay32.dll 放入 exe 资源中,并在程序启动时将它们解压缩到应用程序路径(但如果我在 windowsserver 2008 或 windows vista 上运行 exe 和我使用 Program Files 文件夹“部署”)

您能否对这些技术发表评论或提出更好的方法?

【问题讨论】:

    标签: delphi deployment resources openssl indy


    【解决方案1】:

    方案三:使用 Inno 安装!您可能有充分的理由不想使用安装程序,但如果您认为它太贵(在时间或金钱方面),您可以查看 Inno。我今年早些时候开始使用它,并且对它的学习和使用如此简单感到惊讶。而且,它是免费的!

    当然,学习 Inno 的附带好处是您将来可以将其用于其他项目...

    【讨论】:

    • +1 一旦开始手动复制多个文件进行安装,最好开始查看安装程序。 Inno 非常直接且易于学习,尤其是对于像这样简单的事情。
    • 是的,我过去确实使用过 Inno,我计划在我的主要应用程序中再次使用它,但我现在尝试安装的只是一个工具,一个 exe + 2 个 dll。无论如何我也可以写一个 Inno 安装程序,好建议。
    【解决方案2】:

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

    【讨论】:

    • MD5 是一个很好的建议,但这并不能回答我的问题,或者至少这意味着您同意选择 (1),对吗?
    • 对文件进行哈希处理有一个缺点——如果用户想要安装更新版本的 DLL(例如修复安全漏洞/漏洞),应用程序会抱怨甚至停止工作......
    • 不,不要散列!即使您的 DLL 感染了病毒,您也希望您的应用程序能够正常工作。教育用户不是你的问题。保护用户免受病毒侵害不是您的问题。当然,除非您正在编写 AV 程序。
    【解决方案3】:

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

    我知道,我知道,这是一个很长的范围,而且我不知道谁实际上用 openssl 完成了这个,所以这可能是太多的工作。不过我还是想记下这个理论上的解决方案。

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

    过去有人做过实验,听说有人用mysql成功过,可惜没有给出细节。

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

    【讨论】:

    • 感谢学术回答。我没有时间尝试 Lazarus,反正你描述的功能听起来很有趣。顺便说一下,对于我正在编写的应用程序的性质,最好用 lazarus 编译它,因为它是一个服务器应用程序,并且能够在 linux 上运行它会很棒。无论如何,这是对未来的梦想。
    【解决方案4】:

    你可以坚持选项 1) :D

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

    GetSpecialFolderPath(CSIDL_LOCAL_APPDATA))
    

    并使用

    SetDLLDirectory(DirectoryPath:PWideChar) 
    

    指定从哪里加载 dll

    当然,老实说,写一个简单的安装程序会更快!

    编辑: 哦,是的,正如 UnixShadow 所提到的,对 dll 进行哈希处理,这样您就可以确定您使用的是正确的文件!

    【讨论】:

    • 是的,编写速度更快,但部署速度不快(复制文件而不是运行安装程序)。无论如何,这是一个很好的答案,感谢 SetDLLDirectory 的想法。此外,如果 dll 在应用程序数据中,则减少了散列的需要,因为它们更加隐藏。
    • 安装程序的编写和部署速度更快,尤其是在您(作者)不是安装应用程序的人的情况下。单击网络链接 -> 运行 -> 下一步 -> 下一步 -> 下一步 -> 完成。反对:点击网络链接-> errr ...保存? -> 双击文件-> 错误,不工作?双击此其他文件-> errr,您无法从 zip 文件启动应用程序???哦,我需要从存档中提取文件!什么是存档?
    • 我还想提一下,在较新的操作系统上,如果您从 Internet 下载文件(使用 Internet Explorer),它会被标记为不安全,并且在没有提示框的情况下无法打开,这非常烦人,安装程序将克服这个问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多