2012-12-23 58 views
1

我使用InnoSetup 5.5.1(a)进行Delphi 6软件安装。用户刚刚告诉我,旧的卸载条目如果未手动卸载,则会在“控制面板删除程序”列表中堆积。我正在考虑更改安装以自动删除旧条目,但我不想删除有效的旧条目。有些用户喜欢保留一两个旧版本,以防他们不喜欢以后的版本,或者担心以后的版本会破坏某些东西。我该如何安全地移除旧的InnoSetup安装?

为了清楚起见,我特别提到了用户通常接受默认安装目录并覆盖现有版本的典型情况。但是,除了某些用户可能会将一个或多个版本安装到不同的目录中以保留它们,而选择大部分时间进行覆盖时。我发现这个SO张贴在删除旧版本:

InnoSetup: How to automatically uninstall previous installed version?

但没有看到知道如何检测其旧版本的都是多余的或没有任何提及。

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

回答

1

只要你保持你的AppId在不同版本的应用程序之间保持一致,无论用户运行安装程序多少次,它都将只有一个添加/删除条目。对于典型应用而言,这是常规和推荐的设计,用户只需拥有其中一个副本并希望保持最新状态。

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

DisableDirPage=auto 
DisableProgramGroupPage=auto 

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

请注意,我已经回避了您的问题,因为按照书面形式,它没有任何意义 - 如果有是多个副本,没有办法自动确定哪些是“多余的”,因为这纯粹是用户方面的判断。我试图在这里解释的是,你的设计应该旨在阻止这种意外发生。