3

ユーザーがファイルを参照して選択し、このファイルを選択したソースからアプリフォルダーにコピーする必要があります。

この投稿に続いて 、Inno SetupのInputDirPageでユーザーが選択したアプリパス{app}を表示/使用するにはどうすればよいですか? とInnoSetupのドキュメントで、私はこのコードにたどり着きました。

[Files]
Source: {code:GetDBPath}; DestDir: "{app}"; Flags: confirmoverwrite uninsneveruninstall;

[Code]
var
  SelectDBPage: TInputDirWizardPage;  
  DBPath: String;

procedure InitializeWizard;
begin
  SelectDBPage := CreateInputDirPage(wpSelectDir, 'Select file', 'Select file',    'Select file', False, '');
  SelectDBPage.Add('');
  SelectDBPage.Values[0] := ExpandConstant('{src}\DB.FDB');
  DBPath := SelectDBPage.Values[0];
end;

function GetDBPath():String;
begin
    Result := DBPath;
end;

私の問題はファイルパスを取得することです。命令で'ソース:{コード:GetDBPath}''不明なファイル名プレフィックス{コード:'エラーが発生します。[ファイル]セクションで選択したファイルパスを参照するにはどうすればよいですか?

ありがとうございました

4

1 に答える 1

3

エントリにexternalフラグを追加する必要があります。これは、ソースが実行時に評価され、定数[Files]を含めることができることを意味します。{code:...}

また、関数で正しい値を取得していませんGetDBPath()DBPathから最新の値を取得するのではなく、ページの作成後に更新されていないの値を返していますSelectDBPage.Values[0]

于 2013-02-01T13:46:09.637 に答える