Inno setup在安装跟进过程中执行[Uninstall Run]

Inno setup executes [UninstallRun] during installation followup

本题:

Inno setup executes [UninstallRun] during installation

例如代码:

[UninstallRun]
Filename: "{sys}\OfflineSvc.exe"; Parameters: "-uninstall"; WorkingDir: "{sys}"; Flags: skipifdoesntexist 32bit; StatusMsg: "Offline Processing service is being uninstalled. Please wait..."; BeforeInstall: SimpleStopService('Offline_Service', True, False); Flags: waituntilterminated

没有明确的解决方案。它似乎指出了原因,但没有提供明显的解决方案(也许我只是太笨了)。

为什么 UNINSTALLRUN 项目 运行 在安装过程中?

如果那是正常的 - 你如何预防它?

INNO 帮助说:

[UninstallRun] 部分也是可选的,它指定要执行的任意数量的程序作为卸载 的第一步。

所以人们会期望 UNINSTALLRUN 部分只会在卸载时执行。

抱歉 - 我刚开始在 SO 上发帖,它不允许我对上述问题发表评论,所以除了发布新问题外,我看不到任何其他方法来获取更多信息。如果新手有更好的方法,请告诉我我应该怎么做。

[Uninstall运行] 部分在安装期间实际上并不运行,而是写入在安装期间创建的卸载程序日志中。您只需在安装脚本中指定 [Uninstall运行] 部分,这样您就可以告诉卸载程序除了删除已安装的任何内容之外还要做什么,例如您可以使用它来停止和删除您在安装期间使用 [运行] 部分中的 sc.exe 安装的服务。

在引用的示例中,它正在评估 {code} 函数以确定要添加到卸载程序日志中的硬编码文件名,因为我相信卸载程序无法在卸载时评估代码查询,只有硬编码存储在卸载日志中的文件名和路径。