如何在Inno Setup脚本中有条件地从DLL导入函数?

时间:2009-09-01 21:33:44

标签: import inno-setup

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

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

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

我编写了一个函数来阻止DLL被解压缩,将[Check:IsXPorHigher]添加到[Files]部分中DLL的Source语句中。

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

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

1 个答案:

答案 0 :(得分:4)

您是否尝试过使用delayload选项?请参阅Inno Setup文档中 Pascal Scripting 下的使用DLL 部分。

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