我将InnoSetup 5.5.1(a)用于我的Delphi 6软件安装。用户刚刚通知我,如果未手动卸载旧的卸载条目,则会在“控制面板删除程序”列表中堆积。我想更改我的安装以自动删除旧条目,但我不想删除有效的旧条目。有些用户喜欢保留一两个旧版本,以防他们不喜欢以后的版本,或者担心以后的版本会破坏某些内容。
为了清楚起见,我特指的是用户通常接受默认安装目录,覆盖现有版本的典型情况。但是,除了某些用户可能会将一个或多个版本安装到不同的目录以保留它们,同时选择在大多数时间覆盖。我找到了关于删除旧版本的SO帖子:
InnoSetup: How to automatically uninstall previous installed version?
但是没有看到任何提及如何检测哪些旧版本是多余的。
因此,在安装过程中,如何自动从已安装的程序列表中自动删除旧的卸载条目,而不删除用户实际想要保留的内容?
答案 0 :(得分:1)
只要您在应用程序的不同版本之间保持AppId
相同,无论用户运行安装程序多少次,都只会有一个添加/删除条目。这是典型应用程序的常规和推荐设计,其中用户只有一个副本并希望保持最新。
但是,如果用户在一个或多个后续安装中选择备用安装位置,则旧位置可能会出现孤立的" - 运行卸载将删除较新的副本,但保留较旧的副本,没有添加/删除条目。 (仍然可以通过手动运行卸载程序来卸载它。)通常建议您通过在[Setup]
部分中包含这些选项来避免这种情况:
DisableDirPage=auto
DisableProgramGroupPage=auto
使用这些选项将使Inno跳过询问升级安装的这些问题,这有助于防止用户意外制作孤立副本。 (如果用户确实想要移动安装,他们仍然可以先卸载它。)
请注意,我已经回避了你的问题,因为如果写的没有意义 - 如果有多个副本,那么就没有办法自动确定哪些是&# 34;多余的",因为这纯粹是用户方面的判断。我在这里试图解释的是,你的设计应该旨在不小心阻止这种情况发生。