2011-11-18 24 views
10

32/64ビットインストールのソースフォルダ(および保存先フォルダ)を動的に取得します。ですから、Innoセットアップの[Files]セクションでどのように指定すればいいですか? 以下は、コンパイルエラーを与える: - >Inno Setupの[Files]セクションで "code"を使用するにはどうすればよいですか?

[Files] 
Source: {#MySourcePath}\{code:GetSourceLibFolder}\*.jar; DestDir: {code:GetAppDir}\lib\; 

私はコードセクションで定義されたGetSourceLibFolder()GetAppDir()機能を持っています。 機能は非常に単純で、単に変数を返す:

function GetSourceLibFolder(Param: String): String; 
begin 
    Result:= SourceLibFolder; 
end; 

function GetSourceBinFolder(Param: String): String; 
begin 
    Result:= SourceBinFolder; 
end; 

ありがとう!

+1

コードを '[Code]'から呼び出し、InnoSetupスクリプトの他の場所で使用できるかどうかはわかりません。 '#define'文を使って関数を適用する文字列を作成する方法はありますか?([http://stackoverflow.com/questions/2329979/can-the-setup-filename-be-derived-from-the-executable -file-version-number](http://stackoverflow.com/questions/2329979/can-the-setup-filename-be-derived-from-the-executable-file-version-number)) –

+0

このソースはどこですかlibフォルダ:あなたのInnoSetupスクリプトのベースフォルダを基準にしたソースフォルダ内にありますか?あなたが '{app}'だけを使うことができるとき、なぜあなたは目的地のフォルダに気を配っていますか?例えば、あなたのInnoSetupスクリプトファイルが '。\'フォルダにあり、あなたのjarライブラリが '。\ install \ lib'にあり、アプリケーションフォルダ' {app} 'の' lib'フォルダに入れたいとしましょう。ソース: "install \ lib \ *。jar"を定義することができます。 DestDir: "{app}¥lib" '簡単な方法:各スクリプトファイルに異なるソースフォルダを定義することで、32ビットおよび64ビットのセットアップごとに別々のInnoSetupスクリプトを作成できます。 – ecle

+0

@eee:32ビットと64ビットのシステム用に1つのインストーラが必要なので、2つの異なる "lib"フォルダがあります。 lib-32とlib-64は動的に設定され、動的に読み込みたいものです。 – Saurabh

答えて

4

コンパイル時にソースパスを使用する必要があります(externalフラグがない場合)。つまり、ISPPと#defineを使用する必要があります。 [Code]セクションは、実行/インストールタイムコードのためのもので、ターゲットパスで動作します。

GetSourceLibFolder機能のコードを提供すると、誰かがそれをISPPに変換できます。

+0

ありがとう!私は元の投稿を編集して関数定義を追加しました。 – Saurabh

+0

また、 'SourceLibFolder'とは何ですか?実行時ではなくコンパイル時に取得する必要があることを忘れないでください。 – Deanna

+0

'SourceLibFolder'は、' [Setup] 'セクションの' DefaultDestDir'変数のコードセクションで値を取得するグローバル変数です: 'DefaultDirName = {code:SetProgramFileLocation} \ HP \ Pulse \ {#MyAppName}' – Saurabh

関連する問題