3

ヘルパー DLL と、セットアップ スクリプトの最後に呼び出す関数があります。オペレーティングシステムのバージョンに応じて実行したいだけです。

コード セクションに次の行を含めます。

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

[Files] セクションの DLL の Source ステートメントに「Check: IsXPorHigher」を追加して、DLL が抽出されないようにする関数を作成しました。

セットアップ プログラムが開始されると、external ステートメントが原因で外部関数を解決しようとし、実行時エラー (インポートできません...) が発生するようです。私の DLL は、古い OS では使用できない関数に依存しているためです。

スクリプトで関数を条件付きで宣言できますか?それとも、古いバージョンの OS 用に別のインストーラーが必要ですか? 私は、すべてのシナリオに対して 1 つのスクリプトだけを維持するように努めています。

4

1 に答える 1

4

オプションを使ってみましたdelayloadか?Pascal Scriptingの下にある Inno Setup ドキュメントのUsing DLLsセクションを参照してください。

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