如何安全删除旧的 InnoSetup 安装?

2023-12-08

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

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

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

但没有看到任何提及如何检测哪些旧版本是多余的或不是多余的。

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


只要你保留你的AppId在应用程序的不同版本之间也是如此,无论用户运行安装程序多少次,它都只会有一个“添加/删除”条目。对于典型应用程序来说,这是正常且推荐的设计,其中用户只有一份副本并希望使其保持最新。

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

DisableDirPage=auto
DisableProgramGroupPage=auto

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何安全删除旧的 InnoSetup 安装? 的相关文章

  • 在 VS Toolbox 中安装自定义控件

    我们公司提供安装 Inno Setup 的第三方组件 我们用VS套餐自动将我们的组件放入 Visual Studio Toolbox 中 但有时会失败 VS 包还需要一些名为 包加载密钥 尽管我们对其进行了测试 但 Visual Studi
  • 如何从网站的 .NET 安装程序中排除文件夹?

    我们的网站有一个安装程序 效果很好 我在创建安装程序时排除了 web config 和其他一些文件 但是我似乎无法排除文件夹 这可能吗 我已使用 NET 内置 Web 安装项目创建了安装程序 该项目可在新项目对话框中的 Visual Stu
  • Eclipse 安装程序内部错误:注册表目录不可用

    我曾经像平常一样使用 Oomph Eclipse 安装程序 直到我更改了注册表中的用户配置文件 以删除烦人的空格 从那时起 除了 eclipse 安装程序之外 我没有遇到任何问题 它不断尝试在旧用户文件夹中查找注册表目录 该文件夹已不存在
  • 导入 SciPy 或 scikit-image,“from scipy.linalg import _fblas:导入错误:DLL 失败”

    我正在导入 from scipy import misc io 但我收到这些错误 Traceback most recent call last File C work asaaki code generateProposals py li
  • 如何制作可修补/可更新的应用程序?

    我已经完成了一个学生项目 该项目从互联网上的 xml 文件中提取数据并将其保存到数据库并显示 我以几种不同的方式使用这些数据 例如在主页上显示在另一个选项卡中作为表格 并创建一些图表 我通过制作 5 个不同的类来完成这一切 每个类提取不同类
  • 无法通过 Homebrew 安装旧版本的 ImageMagick

    我需要安装 ImageMagick 6 5 8 或更早版本可能会这样做 但即使当我签出早期提交时 它也会安装最新版本 6 6 9 4 我这样做了 git checkout b im 6 5 6 ff414bb 然后确认工作树显示 image
  • 在 Inno Setup 中安装之前使用 [Code] 更改 AppId

    在设置中 我为用户提供使用单选按钮安装 32 位或 64 位版本的选项 然后我想附加 32 or 64 to the AppId 我知道我可以改变AppId使用脚本常量 但在安装程序启动时调用所需的函数 但此时单选按钮尚不存在 因此我收到错
  • 如何打包java web应用程序

    我们公司开发了一个基于Struts2 Spring Hibernate的Web应用程序 老板要我制作一张包含JRE Tomcat MySQL以及我们的产品的安装光盘 这样客户只要点击installMe exe之类的 按照向导就可以完成安装
  • 从 C# 调用 MsiEnumRelatedProducts 崩溃

    我在从 C 调用 MsiEnumRelatedProducts 时遇到了无穷无尽的麻烦 我尝试了 p invoke 定义的几种变体 但没有成功 out 和 ref 我认为问题在于最后一个参数 它是一个 LPTSTR 应该指向一个 39 个字
  • WiX 自定义操作项目 - BadImageFormatException

    我正在开发我的第一个自定义操作 但无法加载生成的 CA dll 文件 这是最简单的过程和结果 我创建了一个自定义操作项目并保留所有默认值 该类看起来像这样 using Microsoft Deployment WindowsInstalle
  • Python Shapely 安装不起作用?

    有什么想法吗 我尝试卸载 Shapely 并使用 PIP 安装 我有 Anaconda 并安装了 Fiona 很好 Shapely 看起来也很好 简单代码 import fiona import shapely dirVar C Users
  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • VS 2015 SSDT 安装失败

    我的计算机上安装了 Microsoft Visual Studio Professional 2015 还安装了 SQL Server 2017 我正在尝试在我的计算机上安装用于 BI 项目的 SQL Server 开发工具 我尝试安装 S
  • PHP Solr PECL 扩展安装

    我已经使用命令安装了 pecl solr pecl install solr 和梨使用 wget http pear php net go pear phar php go pear phar 重启Apache后 我仍然收到错误 Fatal
  • 为什么.NET Framework 4.0安装程序的大小小于3.0/3.5?

    我看到 Net Framework 4 0的beta2安装程序只有55MB 而 Net 3 5的安装程序有200 MB 这是怎么回事 NET 3 5 之所以这么大 是因为它在同一个包中包含 x64 版本的框架 2 0 3 0 软件包针对 x
  • 卸载以前的版本安装新版本的安装项目

    我创建了一个安装项目并安装在Windows系统中 在安装安装项目之前 我将其设置为 DetectNewInstallerVersion true and RemovePreviousVersion True 我也每次都换版本 但是 如果我重
  • Tensorflow 导入错误:没有名为“tensorflow”的模块

    我在 Windows Python 3 5 Anaconda 环境中安装了 TensorFlow 验证成功 有警告 tensorflow C gt python Python 3 5 3 英特尔公司 默认 2017 年 4 月 27 日 1
  • Mac OS X - 使钥匙串证书可供 Atlassian Bamboo 使用

    我有一个构建包的 Bamboo 计划 我想用我的开发者证书签署该包 在我的构建脚本中 我有这个 productsign sign Name of my certificate input pkg output pkg 从命令行运行此脚本可以
  • 如何为 Windows 安装开源 Qt 库 5 二进制版本

    这个问题具体是关于Qt libraries 5 0 0 for Windows VS 2010 406 MB at http qt project org downloads http qt project org downloads 但我
  • 用于检查和安装先决条件的安装项目与引导程序项目

    这是我的情况 我创建了一个普通的 WiX 安装项目 然后我尝试检查一些先决条件 例如是否安装了 NET 框架 我似乎无法从 WiX 安装项目中执行此操作 所以我创造 WiX Bootstrapper 项目 我能够检查并安装它们 先决条件 我

随机推荐

  • 在 Android 中读取 Zip 存档中的文件并将其内容放入字符串中

    这是我的第一个问题 尽管我已经使用了 Stack Overflow 上的很多技巧 但对于这种情况我还没有找到解决办法 情况是这样的 我有一个压缩文件 我想读取一个特定的文件并将其内容放入一个 String 变量中 该变量将被返回并放入 An
  • 用于检查属性是否存在的简写函数[重复]

    这个问题在这里已经有答案了 你们能帮我制作一个速记函数来确定对象属性是否存在吗 在 99 的情况下 我想用它来检查返回的 json 对象是否包含指定的属性 请注意 不保证必须定义任何父属性甚至 json 对象本身 我是这样想的 functi
  • 模型衍生 API 响应未通过 Jackson 映射

    是否对模型派生 API 的响应对象进行了更新 因为我们在将 3D 模型请求的响应映射回清单和元数据对象时遇到问题 两人都抛出了杰克逊的错误 GetManifest 返回未处理的角色枚举 GetMetadataForGuid 抛出 非法字符
  • 根据邮政编码确定 USPS 邮政区域的公式

    我希望能够更轻松地按 USPS 邮区对数百个信封进行分类 困难在于必须根据原始邮政编码对美国 8 个区域中的每一个区域进行手动排序 91352 http postcalc usps gov ZoneCharts 我有一个包含 ZIP 列的联
  • 对 ? 的行为感到困惑。操作员

    这是我的代码 class Address public bool IsAppartment get set class Employee public string Name get set public Address Address g
  • 关闭选项卡前确认框

    我希望当用户尝试关闭窗口时有一个确认框 window onbeforeunload function evt var message Are you sure you want to leave cause there are some u
  • HTML5 输入模式中的正则表达式无效

    我需要在 HTML 输入中使用这个正则表达式 取自以逗号或逗号和空格分隔的项目列表的正则表达式 s s 所以我将其设置为输入
  • 如何触发 Chrome 扩展按钮的点击?

    我正在建立一个自动化测试套件使用 Selenium Web 驱动程序 在某个时刻 我必须通过以下方式测试页面的工作方式 Chrome 扩展程序打开或关闭 可以将其想象为您想要单击 Adblock 扩展 然后单击对此站点的禁用 然后 再次打开
  • g++ -fdump-class-hierarchy 输出中的第一个 (int (*)(...))0 vtable 条目是什么?

    对于这段代码 class B1 public virtual void f1 class D public B1 public void f1 int main B1 b1 new B1 D d new D return 0 编译后 我得到
  • 使用 CloudWatch Metric Filter 报告内存消耗百分比

    我们广泛使用 AWS Lambda 作为我们基础设施的一部分 为了获得更好的可见性 我希望能够报告一个自定义的 CloudWatch 指标 其值为内存已使用 内存分配 这可以使用 CloudWatch 日志和指标过滤器来实现 考虑以下日志消
  • 当我调用代码格式化程序时,如何避免扩展折叠区域?

    如您所知 Delphi 2010 具有内置代码格式化功能 但是 格式化会展开所有折叠的代码块 有什么想法如何修复它吗 这个 功能 对我来说特别烦人 当我找不到任何关于这个问题的提及时 我真的很惊讶 我尝试过的 寻找替代方案 例如 GExpe
  • 检查所有复选框 Jquery

    我使用此代码来检查树视图中的复选框 HTML div ul li li ul div
  • 如何从Around Advise获取调用者方法信息

    ThisJoinPoint只能获取当前方法信息 反正要获取调用者方法信息 您可以尝试特殊变量thisEnclosingJoinPointStaticPart它保存封闭 JoinPoint 的静态部分 提及here 示例 和here docs
  • 如果更改索引中使用的字段,mongodb 是否会重新索引?

    假设您有一个带有名为 primary key 字段的集合 primary key 1234 name jimmy lastname page 我有一个关于 primary key 的索引 这个集合有数百万行 我想看看更改其中一条记录的pri
  • 如何以编程方式设置文件标签

    当使用 Windows 资源管理器查看文件时 我可以选择设置 标签 类别 或其他属性 对于 JPEG 可以选择一组不同的属性 包括 标签 我希望能够以编程方式设置这些 如何使用 Delphi 以编程方式设置文件标记和其他文件属性 我有 De
  • 如何在 Jupyter 笔记本上从 * .IPYNB 文件执行 * .PY 文件?

    我正在开发一个 Python Notebook 我想要这样大输入代码 输入 打包成 PY 文件并从笔记本中调用该文件 运行 的动作我知道笔记本中的 PY 文件 并且命令在 Linux 或 Windows 之间有所不同 但是 当我执行此操作并
  • 如何移出 IntelliJ IDEA 中自动完成的括号(不使用箭头键)?

    我最近从 Eclipse 切换到 IntelliJ IDEA 并发现自己想知道如何将光标移出一对自动完成的括号 在 Eclipse 中 当我输入完一对括号后 按 Tab 键将使我退出括号 不使用箭头键如何做同样的事情 非常感谢您的帮助 ID
  • 使用 htaccess 创建 SEO 友好的 url

    我正在尝试重写网站的 url 我应该提到的是 index php 现在的工作方式是获取 p 页面 参数并包含适当的文件 所以请求一个页面是这样的 www domain com index php p home www domain com
  • 在 Camera2 API 中切换闪光灯

    我的问题是 当我在不同的 Flash 模式之间切换然后想要捕获图像时 我的 captureBuilder 不会设置所选的 Flash 模式 仅当我关闭并重新打开相机时它才有效 我拿了https github com googlesample
  • 如何安全删除旧的 InnoSetup 安装?

    我使用 InnoSetup 5 5 1 a 来安装 Delphi 6 软件 一位用户刚刚告诉我 如果不手动卸载 旧的卸载条目会堆积在控制面板的删除程序列表中 我正在考虑更改我的安装以自动删除旧条目 但我不想删除有效的旧条目 一些用户喜欢保留