是否可以使用INNO脚本移动现有目录/文件?

Wil*_*ill 5 inno-setup

我们最近有一个使用INNO脚本进行重大重组的应用程序.

不幸的是,应用程序要求某些文件在版本之间保持不变.

更不幸的是,这些文件的位置在重组过程中发生了变化.

最不幸的是,现在我需要制作一个INNO脚本片段,它将查看这些文件是否存在,并将它们从以前的位置移动到新位置.

是否有可能进行INNO脚本检查以查看文件(与任何容量的INNO脚本本身无关)是否存在,如果存在,则在安装完成之前/之后将它们移动到新位置?

编辑1:清晰度

我说这些文件与INNO脚本无关,因为它们是用户生成的内容.

Wos*_*osi 5

对的,这是可能的.下面的代码是复制和删除(而不是原始移动或重命名).

使用该[code]部分实现此逻辑.

有关支持的功能您可以处理事件的文档非常好.

如何对开始安装做出反应:

procedure CurStepChanged(CurStep: TSetupStep);
begin

  case CurStep of
    ssInstall:
    begin
      // will be executed just before the actual installation starts
    end; 

   ssPostInstall:
    begin
      // will be executed just after the actual installation finishes
    end; 
  end;

end;
Run Code Online (Sandbox Code Playgroud)

如何知道文件是否存在

if FileExists(FileName) then
begin
  // do something when the file exists
end; 
Run Code Online (Sandbox Code Playgroud)

复制文件(覆盖现有文件)

if not FileCopy(ExistingFileName, NewFileName: String, false) then
begin
  // handle copy error
end;
Run Code Online (Sandbox Code Playgroud)

删除文件

if not DeleteFile(FileName) then
begin
  // handle delete error
end;
Run Code Online (Sandbox Code Playgroud)

  • 要移动文件,请使用[`RenameFile`函数](http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_renamefile) (2认同)
  • 复制然后删除也不是没有问题的。你可能要花很长时间做一些本可以立即完成的事情。复制和删除也会使用大量磁盘空间,如果您的驱动器空间不足,可能会失败。 (2认同)