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

标签 batch-file cmd inno-setup pascalscript

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

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

这是我在 [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

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


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

请注意,具有讽刺意味的是,您指向的问题是向 avoid using batch files in Inno Setup 提出的。

关于batch-file - 如何在 Inno Setup 中执行卸载时的批处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44446223/

相关文章:

java - 如何通过java执行cmd时捕获输入流?

inno-setup - 如何修改 InnoSetup 中消息框的设计?

inno-setup - 从 Inno Setup 下载页面隐藏 URL

c# - 如何判断csc.exe编译是否成功

batch-file - 批量打开设备和打印机窗口?

batch-file - !modified! 是什么意思?做

command-line - 批处理文件 : copy all file except those its name contain some substring

windows - 可以在 cmd 提示符下使用命令,但无法使用它创建 *.bat 文件

windows - 简单的批处理文件不执行?

inno-setup - 当 'Close' 按钮不可见时,标题栏中的 Inno Setup 'Cancel' 按钮不起作用