安装时调用 UninstallDelete 的检查函数

Posted

技术标签:

【中文标题】安装时调用 UninstallDelete 的检查函数【英文标题】:Check function for UninstallDelete is called upon installation 【发布时间】:2015-07-06 15:05:15 【问题描述】:

我正在使用 Inno Setup 来制作我的(卸载)安装程序。我希望能够在卸载后删除一些“剩余”文件,因此我使用[UninstallDelete] 部分和Check 函数。函数返回一些值,但也显示一些调试消息。像这样的:

[UninstallDelete]
Type: filesandordirs; Name: "app\Plugins"; Check: ShouldRemovePlugins

[Code]
//...
var
  DelPlugins: Boolean;
//...
function ShouldRemovePlugins(): Boolean;
var text:string;
begin
  if(DelPlugins = true) then
    text := 'We should remove plugins'
  else
    text := 'We should not remove plugins';
  MsgBox(text, mbInformation, MB_OK);
  Result := DelPlugins;
end;

问题是,根据弹出的消息框,函数在安装时以某种方式调用,而不是卸载。所以,问题是 - 为什么会这样?是关于 Inno Setup 的“工作流程”吗?

【问题讨论】:

【参考方案1】:

在安装过程中确定卸载时将执行哪些卸载任务(包括但不限于UninstallDelete 条目)。

所以你的Check 函数确实会在安装过程中被调用。


看看UninstallDelete部分是如何处理a step of installation的:

实际安装过程开始后,执行各种安装任务的顺序如下:

[InstallDelete] 正在处理中。 [UninstallDelete] 中的条目存储在卸载日志中(在此阶段,卸载日志存储在内存中)。 如有必要,将创建应用程序目录。 ...

要在卸载期间有条件地删除文件,您必须在 CurUninstallStepChanged event function 中明确编码。

使用usUninstallusPostUninstall 步骤。

【讨论】:

以上是关于安装时调用 UninstallDelete 的检查函数的主要内容,如果未能解决你的问题,请参考以下文章

当页面在 Angular 10 中完全加载时调用组件函数

如何在单击网格单元格时调用 js 函数?

ng-repeat 完成时调用函数

如何在设计时调用组件的属性编辑器

仅在选中时调用复选框

当推送通知到达(未收到)设备时调用委托