如何在Inno Setup中卸载时执行批处理文件?

时间:2017-06-08 21:57:43

标签: batch-file cmd inno-setup pascalscript

我正在使用How do you execute command line tools without using batch file in Inno Setup响应中的代码在安装时(之前,之后)执行我的所有批处理文件。

不,我想在用户单击“是”退出时执行,但无法找到方法。它在确认之前执行

以下是[Code]部分的代码:

function InitializeUninstall(): Boolean;
var
  ResultCode : Integer;    
begin
  Result := True;
  Exec(ExpandConstant('{app}\scripts\unset.bat'), '', '',
       SW_HIDE, ewWaitUntilTerminated, ResultCode); 
end; 

1 个答案:

答案 0 :(得分:3)

将代码移至CurUninstallStepChanged(usUninstall)。 在确认卸载后触发该事件。

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  ResultCode : Integer;    
begin
  if CurUninstallStep = usUninstall then
  begin
    Exec(ExpandConstant('{app}\scripts\unset.bat'), '', '',
         SW_HIDE, ewWaitUntilTerminated, ResultCode); 
  end;
end;

虽然它更容易使用[UninstallRun] section

[UninstallRun]
Filename: "{app}\scripts\unset.bat"; Flags: runhidden

该部分也会在确认后处理,但在卸载任何文件之前。请参阅Uninstallation order

请注意,通常,您不应使用批处理文件。你最好用Pascal代码编写所有脚本。这样,您就可以获得更强大的代码和错误处理。