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

Ang*_*Oca 3 cmd inno-setup batch-file pascalscript

我正在使用Inno Setup 响应中如何执行命令行工具而不使用批处理文件中的代码来执行安装时的所有批处理文件(之前、之后)。

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

这是我的部分代码[Code]

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

Mar*_*ryl 5

将您的代码移至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;
Run Code Online (Sandbox Code Playgroud)

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

[UninstallRun]
Filename: "{app}\scripts\unset.bat"; Flags: runhidden
Run Code Online (Sandbox Code Playgroud)

该部分也会在确认后、卸载任何文件之前进行处理。请参阅卸载顺序


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

请注意,具有讽刺意味的是,您指出的问题是为了避免在 Inno Setup 中使用批处理文件