【问题标题】:How do I conditionally import a function from a DLL in an Inno Setup script?如何有条件地从 Inno Setup 脚本中的 DLL 导入函数?
【发布时间】:2009-09-01 21:33:43
【问题描述】:

我有一个辅助 DLL 和一个我在安装脚本末尾调用的函数。我只想根据操作系统版本运行它。

我在代码部分包含以下几行:

function CompleteInstall(szInstallPath: String) :  Integer;
external 'CompleteInstall@files:InstallHelper.dll cdecl setuponly';

我编写了一个函数来防止 DLL 被提取,在 [Files] 部分的 DLL 的 Source 语句中添加“Check: IsXPorHigher”。

似乎当安装程序开始时,由于外部语句,它尝试解析外部函数,导致运行时错误(无法导入...),因为我的 DLL 依赖于旧操作系统上不可用的函数。

我可以有条件地在脚本中声明该函数,还是需要单独安装旧版本操作系统的安装程序?我正在努力为所有场景只维护一个脚本。

【问题讨论】:

    标签: import inno-setup


    【解决方案1】:

    您是否尝试过使用delayload 选项?请参阅 Inno Setup 文档中的 使用 DLLs 部分,在 Pascal 脚本 下。

    function CompleteInstall(szInstallPath: String) : Integer;
    external 'CompleteInstall@files:InstallHelper.dll cdecl setuponly delayload';
    

    【讨论】:

    • 优秀。感谢您的提示。
    猜你喜欢
    • 2011-04-02
    • 2016-08-18
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多