Inno setup 安装时调用卸载删除的检查函数

Inno setup 安装时调用卸载删除的检查函数,inno-setup,pascalscript,Inno Setup,Pascalscript,我正在使用Inno安装程序制作我的(un)安装程序。我想在卸载后有选择地删除一些“遗留”文件,因此我使用[UninstallDelete]部分的检查功能来完成此操作。函数返回一些值,但也显示一些调试消息。大概是这样的: [卸载删除] 类型:文件和目录;名称:“{app}\Plugins”;检查:应该删除插件吗 [守则] //... 变量 DelPlugins:布尔; //... 函数ShouldRemovePlugins():Boolean; var文本:字符串; 开始 如果(DelPlugin

我正在使用Inno安装程序制作我的(un)安装程序。我想在卸载后有选择地删除一些“遗留”文件,因此我使用
[UninstallDelete]
部分的
检查功能来完成此操作。函数返回一些值,但也显示一些调试消息。大概是这样的:

[卸载删除]
类型:文件和目录;名称:“{app}\Plugins”;检查:应该删除插件吗
[守则]
//...
变量
DelPlugins:布尔;
//...
函数ShouldRemovePlugins():Boolean;
var文本:字符串;
开始
如果(DelPlugins=true),则
text:=“我们应该删除插件”
其他的
text:=“我们不应该删除插件”;
MsgBox(文本,MB信息,MB_OK);
结果:=DelPlugins;
结束;

问题是,根据弹出的消息框,这个函数是在安装时调用的,而不是在卸载时调用的。所以,问题是——为什么会这样?是否与Inno安装“工作流”有关?

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

因此,在安装过程中,
Check
函数确实会被调用


请参见如何处理
UninstallDelete
部分:

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

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

要在卸载过程中有条件地删除文件,必须在
CurUninstallStepChanged
中明确编码

使用
usUninstall
uspostdunload
步骤