我是Inno Setup的新手。困扰一个问题〜如何配置卸载程序以删除应用程序创建的所有文件,文件夹,子文件夹,甚至新文件/文件夹等(换句话说,是100%删除应用程序和相关文件)。

我在这里和他们的论坛上四处搜寻,空了出来。谁能指出我有关此操作的文档,常见问题解答等?

更新

感谢到目前为止的所有反馈(非常棒)。因此,看起来我可以使用卸载部分中的{app} *。*指令删除所有内容。看起来每个人都在建议这样做。 因此,现在的问题变为(我想知道这是否应该是一个全新的问题),在卸载过程中是否有一种方法可以让用户询问“您是否要删除与此应用程序关联的所有项目文件?”如果他们回答"is",则运行卸载{app} *。*件?

谢谢 -

最佳答案

您可能应该提出一个全新的问题,但是我也会在这里回答您更新的问题。请查看Inno设置文档中的“Pascal脚本:卸载代码”一节

举例说明如何在卸载过程中有条件地删除数据文件:

[Code]

procedure DeleteBitmaps(ADirName: string);
var
  FindRec: TFindRec;
begin
  if FindFirst(ADirName + '\*.*', FindRec) then begin
    try
      repeat
        if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0 then begin
          if (FindRec.Name <> '.') and (FindRec.Name <> '..') then begin
            DeleteBitmaps(ADirName + '\' + FindRec.Name);
            RemoveDir(ADirName + '\' + FindRec.Name);
          end;
        end else if Pos('.bmp', AnsiLowerCase(FindRec.Name)) > 0 then
          DeleteFile(ADirName + '\' + FindRec.Name);
      until not FindNext(FindRec);
    finally
      FindClose(FindRec);
    end;
  end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usUninstall then begin
    if MsgBox('Do you want to delete all data files?', mbConfirmation,
        MB_YESNO) = IDYES
    then begin
      DeleteBitmaps(ExpandConstant('{app}'));
    end;
  end;
end;

但是,根据需要清理的内容的数量,最好创建一个特殊的帮助程序,该程序是安装的一部分,可以在卸载应用程序时执行(使用[UninstallRun]中的条目来执行)部分)。

关于inno-setup - 如何配置Inno Setup卸载所有内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/643547/

10-15 11:22