2017-09-18 18 views
1

Inno SetupのユーザーのMATLABフォルダにファイルをインストールしたいと思います。しかし、MATLABのバージョンによっては、ディレクトリが変更される可能性があります。 Windowsのコマンドラインでアプリケーションのパスを見つけ、Inno Setupのそのディレクトリにファイルをコピーします。

、そうのようなMATLABの実行ファイルのパスを取得することが可能である:

出力

C:\Program Files (x86)\MATLAB\R2015b\bin\matlab.exe 

は、私は、ファイルをコピーしたいと思います

where matlab 

次のフォルダ

C:\Program Files (x86)\MATLAB\R2015b\toolbox\local 

どのようにすることができますか?

答えて

1

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; 
+0

まず最初に、完全に機能するソリューションに感謝します。私は小さな問題に遭遇しました。これは、ユーザが複数バージョンのMATLABをインストールしている場合です。 Windowsコマンドラインの "where matlab"と入力すると、インストールされているすべてのバージョンのMATLABのすべてのパスが返されます。 Inno Setupスクリプトを変更して、すべてのMATLABフォルダにMyFile.datをコピーするにはどうすればよいですか? – Wurlitzer

+0

あなたの問題について:それは*小さな問題ではありません*。新しい質問をする。 –

+0

新しい質問がここにあります:https://stackoverflow.com/questions/46429123 – Wurlitzer

関連する問題