2017-09-18 3 views
1

Inno Setup에서 사용자의 MATLAB 폴더에 파일을 설치하고 싶습니다. 그러나 MATLAB 버전에 따라 디렉토리가 변경 될 수 있습니다. Windows 명령 행에서 응용 프로그램의 경로를 찾고 Inno Setup에서 해당 디렉토리로 파일을 복사하십시오.

는, 그렇게 같은 MATLAB 실행 파일의 경로를 얻을 수 있습니다 :

where matlab 

어떤 출력합니다

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

내가에서 파일을 복사 할 다음 폴더

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

어떻게이 작업을 수행 할 수 있습니까?

답변

1

where 명령은 PATH 환경 변수로 지정된 경로에서 파일을 검색합니다. MATLAB의 설치 폴더를 찾을 수있는 더 좋은 방법이 있어야이 있다고,

FileSearch('matlab.exe', GetEnv('PATH')) 

내가 말하고 싶지만 비록 :

는 이노 설치 파스칼 스크립트, 당신은 같은 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을 설치 한 경우입니다. 윈도우 명령 행에서 "where matlab"을 입력하면 설치된 모든 버전의 MATLAB에 대한 모든 경로가 반환됩니다. 모든 MATLAB 폴더에서 MyFile.dat를 복사하도록 Inno Setup 스크립트를 수정하려면 어떻게해야합니까? – Wurlitzer

+0

문제와 관련하여 : * 작은 문제 *가 아닙니다. 새로운 질문을하십시오. –

+0

새로운 질문은 여기에서 찾을 수 있습니다. https://stackoverflow.com/questions/46429123 – Wurlitzer