安装时会调用UninstallDelete的检查功能

时间:2015-07-06 15:05:16

标签: inno-setup pascalscript

我使用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 个答案:

答案 0 :(得分:1)

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

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

了解处理UninstallDelete部分a step of installation的方式:

  

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

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

要在卸载过程中有条件地删除文件,您必须在CurUninstallStepChanged event function中明确地对其进行编码。

使用usUninstallusPostUninstall步骤。