我正在使用来自 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/