更新以前的安装设置

时间:2012-11-25 01:13:51

标签: file inno-setup updates uninstall

我正在创建更新设置文件。在我的初始安装中,我有一个在[UninstallRun]中调用的EXE文件。在更新中,我想永久删除此EXE文件,但在更新后卸载时似乎总是抛出错误“无法删除某些元素”。

要删除EXE,我尝试在更新[InstallDelete]期间删除它。这将删除该文件,但在卸载时仍会抛出错误消息(即使所有文件都已被删除)。

我尝试在更新中替换EXE并使用deleteafterinstall标志,但这并没有什么区别。

如果我什么都不做,只安装它,当我运行卸载程序时,即使更新不再包含[UninstallRun]部分,也会调用EXE文件。所以看起来初始安装的安装文件正用于卸载部分。

出于本项目的目的,我无法更改初始安装,因此必须从更新安装完成所有操作。有没有办法删除放置在UninstallRun部分的现有文件?

1 个答案:

答案 0 :(得分:4)

问题是先前安装的[UninstallRun]条目已经在卸载日志中注册,因此只需将其从脚本中删除就不会使其生效,默认情况下删除该文件它产生了这个错误,因为(大概)由于文件丢失,一些必需的卸载任务没有发生。

您是否记得在原始安装程序的RunOnceId条目上放置[UninstallRun]?如果是这样,您可以使用相同的ID放置“替换”条目。你仍然必须指向一个exe,但是你可以把它变成一个没有操作的,或者(更好)使用Flags: skipifdoesntexist并将它指向你删除的那个。

如果您没有使用RunOnceId,则无法覆盖之前的条目。你只需要输入一个什么都不做的虚拟exe文件。