Inno Setup 安装提取时如何将文件提取到 {app} 的上一级文件夹

查看 41|回复 1
作者:chishingchan   
在制作 Inno Setup 的安装包时,需要将某一个文件安装到目标目录 {app} 的上一级目录,查遍了说明也没找到方法,求助,谢谢!
注:不能使用绝对路径

文件, 如何将

jamstory   

在 Inno Setup 中,可以使用 {src} 常量来获取安装程序所在的目录,然后通过编写脚本来实现将文件安装到目标目录 {app} 的上一级目录。
下面是一个示例脚本:
[Files]
Source: "MyFile.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
[Code]
function GetParentDir(Path: String): String;
begin
  Result := ExtractFilePath(ExcludeTrailingPathDelimiter(Path));
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
  ParentDir: String;
begin
  if CurStep = ssInstall then
  begin
    ParentDir := GetParentDir(ExpandConstant('{app}'));
    if not DirExists(ParentDir) then
      CreateDir(ParentDir);
    FileCopy(ExpandConstant('{tmp}\MyFile.exe'), ParentDir + '\MyFile.exe', False);
  end;
end;
这个脚本中,{tmp} 常量表示 Inno Setup 运行时的临时目录,我们将需要安装到 {app} 上一级目录的文件放到了该临时目录中。然后,在 CurStepChanged 函数中,当安装步骤切换到 ssInstall(即安装阶段)时,先获取目标目录 {app} 的上一级目录路径,并检查该目录是否存在,若不存在则创建之。最后使用 FileCopy 函数将文件从临时目录拷贝到上一级目录。
请注意,由于在 Inno Setup 中可以通过用户选择来修改安装目录 {app} 的值,因此有可能会出现无法正确获取上一级目录的情况。如果您希望确保能够正确地安装文件到指定的目录,建议在安装程序中添加必要的提示或限制。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部