找到应用程序的路径,并将文件复制到Inno Setup中的该目录

时间:2017-09-18 15:03:33

标签: matlab inno-setup

我想在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

如何做到这一点?

1 个答案:

答案 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;