我是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/