3

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

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

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

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

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

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

4

1 回答 1

4

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

function CompleteInstall(szInstallPath: String) : Integer;
external 'CompleteInstall@files:InstallHelper.dll cdecl setuponly delayload';
于 2009-09-01T21:47:27.840 回答