1

我将 InnoSetup 5.5.1 (a) 用于我的 Delphi 6 软件安装。一位用户刚刚告诉我,如果没有手动卸载,旧的卸载条目会堆积在控制面板删除程序列表中。我正在考虑更改我的安装以自动删除旧条目,但我不想删除有效的旧条目。一些用户喜欢保留一两个旧版本,以防他们不喜欢更高版本或担心更高版本会破坏某些东西。

为了清楚起见,我专门指的是用户通常接受默认安装目录,覆盖现有版本的典型情况。但是,除了一些用户可能将一个或多个版本安装到不同的目录只是为了保留它们,而大多数情况下选择覆盖。我发现这个关于删除旧版本的帖子:

InnoSetup:如何自动卸载以前安装的版本?

但是没有看到任何关于知道如何检测哪些旧版本是多余的。

因此,在安装过程中,如何自动从已安装程序列表中自动删除旧的卸载条目,而不删除用户实际想要保留的任何内容?

4

1 回答 1

1

只要您AppId在应用程序的不同版本之间保持相同,无论用户运行安装程序多少次,都只会有一个添加/删除条目。这是典型应用程序的常规和推荐设计,其中用户只有一个副本并希望使其保持最新。

但是,如果用户在以后的一个或多个安装中选择了备用安装位置,那么旧位置可能会“孤立”——运行卸载将删除较新的副本,但将较旧的副本留在后面,没有添加/删除条目。(仍然可以通过手动运行卸载程序来卸载它。)通常建议通过在您的[Setup]部分中包含这些选项来避免这种情况:

DisableDirPage=auto
DisableProgramGroupPage=auto

使用这些选项将使 Inno 在升级安装时跳过询问这些问题,这有助于防止用户意外制作孤立副本。(如果用户确实想要移动安装,他们仍然可以通过先卸载来完成。)

请注意,我已经稍微回避了您的问题,因为写下来没有意义-如果有多个副本,则无法自动确定哪些是“多余的”,因为这纯粹是对部分的判断的用户。我在这里试图解释的是,您的设计应该旨在阻止这种意外发生。

于 2012-12-24T11:13:57.833 回答