一旦实际安装过程开始,这是执行各种安装任务的顺序:
[InstallDelete]被处理。[UninstallDelete]中的条目存储在卸载日志中(在这个阶段,存储在内存中)。如果需要的话,将创建应用程序目录。
[Dirs]被处理。如果需要,保留卸载日志的文件名。
[Files]被处理。(文件注册尚未发生)。
[Icons]被处理。
[INI]被处理。
[Registry]被处理。现在需要注册需要注册的文件,除非系统需要重新启动,在这种情况下,直到重新启动系统才注册文件。如果需要,创建程序的添加/删除程序条目。
[UninstallRun]中的条目存储在卸载日志中。卸载器EXE和日志已完成并保存到磁盘。完成此操作后,禁止用户取消安装,任何后续错误都不会导致之前被安装的东西被回滚。
[Run]被处理,除了带有安装标记的条目,在显示安装完成向导页面之后,该条目得到处理。如果ChangesAssociations设置为“是”,则现在更新文件关联。如果ChangesEnvironment设置为“是”,则在此通知其他应用程序。所有条目按照安装程序在一个部分中出现的顺序进行处理。卸载程序由安装程序以相反的顺序撤消。这是因为卸载日志从端到端进行解析。
例子:
[ ini ]
Filename: "{win}\\MYPROG.INI";Section: "InstallSettings"; Flags: uninsdeletesectionifempty
Filename: "{win}\\MYPROG.INI";Section: "InstallSettings"; Key: "InstallPath"; String:"{app}"; Flags: uninsdeleteentry
安装程序将首先在卸载日志中记录第一条目的uninsdeletesectionifempty标志的数据,创建第二条目的key,然后在卸载日志中记录uninsdeleteentry条目的数据。当程序卸载时,卸载程序将首先处理uninsdeleteentry条目标志,删除条目,然后处理uninsdeletesectionifempty标志,删除该节。
注意,卸载程序按照[UninstallRun]和[UninstallDelete]在脚本中出现的顺序(不会改变顺序)。