当用户在卸载确认提示中单击“否”时,是否可以处理事件?
如果单击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;
答案 0 :(得分:1)
我相信你的逻辑错了。它看起来像XY problem。
我不认为,你想要发现"否"。我相信,您希望在卸载期间或之后运行代码。
因此请使用符合您要求的事件函数。该函数是CurUninstallStepChanged
。根据您何时需要运行代码,检查CurUninstallStep
参数(usUninstall
,usPostUninstall
或usDone
)的相应值。
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usDone then
begin
{ ... }
end;
end;
有关类似问题,请参阅:
Ntb,您似乎滥用/SILENT
开关来检测卸载程序是否作为某个进程的一部分自动运行(升级?)。如果用户默默地运行卸载程序,该怎么办?您应该添加另一个自定义开关来指示自动运行。但那是另一个问题。