where
コマンドは、環境変数PATH
で指定されたパスのファイルを検索します。 MATLABのインストールフォルダを見つけるための良い方法でなければならないがあること、
FileSearch('matlab.exe', GetEnv('PATH'))
私が言うと思いますけれども:
は、Inno Setupのパスカルスクリプトでは、あなたは次のように、FileSearch
functionを使用することを実現することができます。
とにかく、あなたはInitializeSetup
event functionでグローバル変数に上記の方法を使用してパスを解決することができます。 MATLABが見つからない場合、インストールを中止することもできます。
そして、この変数をscripted constantを使用してインストールパスとして使用できます。
[Files]
Source: "MyFile.dat"; DestDir: "{code:GetMatlabToolboxLocalPath}"
[Code]
var
MatlabToolboxLocalPath: string;
function GetMatlabToolboxLocalPath(Param: string): string;
begin
Result := MatlabToolboxLocalPath;
end;
function InitializeSetup(): Boolean;
var
MatlabExePath: string;
begin
MatlabExePath := FileSearch('matlab.exe', GetEnv('PATH'));
if MatlabExePath = '' then
begin
MsgBox('Cannot find MATLAB', mbError, MB_OK);
Result := False;
Exit;
end;
MatlabToolboxLocalPath := ExtractFilePath(MatlabExePath) + '..\toolbox\local';
Result := True;
end;
まず最初に、完全に機能するソリューションに感謝します。私は小さな問題に遭遇しました。これは、ユーザが複数バージョンのMATLABをインストールしている場合です。 Windowsコマンドラインの "where matlab"と入力すると、インストールされているすべてのバージョンのMATLABのすべてのパスが返されます。 Inno Setupスクリプトを変更して、すべてのMATLABフォルダにMyFile.datをコピーするにはどうすればよいですか? – Wurlitzer
あなたの問題について:それは*小さな問題ではありません*。新しい質問をする。 –
新しい質問がここにあります:https://stackoverflow.com/questions/46429123 – Wurlitzer