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;
먼저 완벽하게 작동하는 솔루션에 대해 감사드립니다. 작은 문제가 발생했습니다. 사용자가 여러 버전의 MATLAB을 설치 한 경우입니다. 윈도우 명령 행에서 "where matlab"을 입력하면 설치된 모든 버전의 MATLAB에 대한 모든 경로가 반환됩니다. 모든 MATLAB 폴더에서 MyFile.dat를 복사하도록 Inno Setup 스크립트를 수정하려면 어떻게해야합니까? – Wurlitzer
문제와 관련하여 : * 작은 문제 *가 아닙니다. 새로운 질문을하십시오. –
새로운 질문은 여기에서 찾을 수 있습니다. https://stackoverflow.com/questions/46429123 – Wurlitzer