仅在Inno Setup中成功卸载后运行代码

时间:2017-09-28 11:34:10

标签: inno-setup

当用户在卸载确认提示中单击“否”时,是否可以处理事件?

enter image description here

如果单击NO,则不执行DeinitializeUninstall()?

或者是否可以从DeinitializeUninstall()函数处理NO按钮?

基本上,我不会在这里避免DelTree

procedure DeinitializeUninstall();
begin
  { if we are running in /SILENT mode, then this is an overinstall - }
  { don't delete additional folder}
  if not UninstallSilent() then
  begin
    DelTree(ExpandConstant('{#BSPLOC}'),True, True, True);
  end;
end;

1 个答案:

答案 0 :(得分:1)

我相信你的逻辑错了。它看起来像XY problem

我不认为,你想要发现"否"。我相信,您希望在卸载期间或之后运行代码。

因此请使用符合您要求的事件函数。该函数是CurUninstallStepChanged。根据您何时需要运行代码,检查CurUninstallStep参数(usUninstallusPostUninstallusDone)的相应值。

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usDone then
  begin
    { ... }
  end;
end;

有关类似问题,请参阅:

Ntb,您似乎滥用/SILENT开关来检测卸载程序是否作为某个进程的一部分自动运行(升级?)。如果用户默默地运行卸载程序,该怎么办?您应该添加另一个自定义开关来指示自动运行。但那是另一个问题。