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

How to execute a batch file on uninstall in Inno Setup?

我正在使用 响应中的代码在安装时(之前、之后)执行我的所有批处理文件。

现在我想执行它们就在用户单击“是”卸载程序时,但找不到执行此操作的方法。它在确认之前执行

这是我在 [Code] 部分的代码:

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

将您的代码移至 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

该部分也在确认后处理,但在卸载任何文件之前。参见


请注意,一般情况下,您不应使用批处理文件。您最好用 Pascal 代码编写所有脚本。这样你就可以获得更健壮的代码和更好的错误处理。

请注意,具有讽刺意味的是,您指向的问题被问到