【问题标题】:How can I safely remove old InnoSetup installations?如何安全地删除旧的 InnoSetup 安装?
【发布时间】:2012-12-10 12:55:06
【问题描述】:

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

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

InnoSetup: How to automatically uninstall previous installed version?

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

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

【问题讨论】:

    标签: installation inno-setup uninstallation


    【解决方案1】:

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

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

    DisableDirPage=auto
    DisableProgramGroupPage=auto
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 2013-11-03
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      相关资源
      最近更新 更多