3

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

要删除 EXE,我尝试在更新的[InstallDelete]. 这会删除文件,但在卸载时仍会抛出错误消息(即使所有文件都已明确删除)。

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

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

出于本项目的目的,我无法更改初始安装,因此一切都必须从更新安装开始。有没有办法删除放在一个UninstallRun部分中的现有文件?

4

1 回答 1

4

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

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

如果您没有使用 a RunOnceId,则没有任何方法可以覆盖上一个条目。你只需要放入一个什么都不做的虚拟 exe 文件。

于 2012-11-25T09:01:28.290 回答