我想在Inno Setup中将文件安装到用户的MATLAB文件夹中。但是根据MATLAB的版本,目录可以改变。
在Windows命令行中,可以像这样获取MATLAB可执行文件的路径:
where matlab
将输出
C:\Program Files (x86)\MATLAB\R2015b\bin\matlab.exe
我想复制以下文件夹中的文件
C:\Program Files (x86)\MATLAB\R2015b\toolbox\local
如何做到这一点?
答案 0 :(得分:1)
where
命令在PATH
环境变量指定的路径中搜索文件。
在Inno Setup Pascal Script中,您可以使用FileSearch
function来实现,例如:
FileSearch('matlab.exe', GetEnv('PATH'))
虽然我说,必须有更好的方法来查找MATLAB的安装文件夹。
无论如何,您可以使用上述方法将路径解析为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;