file - 更新以前的安装设置

标签 file inno-setup updates uninstallation

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

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

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

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

为了这个项目的目的,我不能改变初始安装,所以一切都必须从更新安装开始。有没有办法删除放在 UninstallRun 部分中的现有文件?

最佳答案

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

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

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

关于file - 更新以前的安装设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13547378/

相关文章:

batch-file - 调试从 Inno Setup 安装程序执行的非工作批处理文件或命令

installation - Inno Setup 在 Windows x64 上设置命名管道

windows - 从虚拟化的 Windows 注册表中读取 key

ios - 更新iOS应用程序后,是否会删除库/缓存中的文件?

java - 如何检测 URL 中文件的真实类型?

c - 在C中,关闭程序数据库时无法更新

c++ - Linux 配置文件库

sql - T-SQL插入触发器在多个表上根据if条件插入、更新

javascript - Highcharts:数据实现时更新图表

C - 试图回到文件中的上一行