在安装过程中使用 Inno Setup 删除未随 Inno Setup 安装的其他应用程序

2024-01-14

我有一个旧的 VB6 应用程序,它是使用非常旧的 16 位版本的 InstallShield 部署的。我已经使用 Inno Setup 创建了一个新的安装程序,以便通过更新对我的 VB6 应用程序进行 64 位友好。

我的所有用户都已安装现有的 InstallShield 版本。目前,我的 Inno Setup 正在运行。问题是,我不想覆盖旧的 InstallShield 安装文件,因此我的 Inno Setup 安装到另一个目录。这会导致问题,因为现在我安装了两个版本,有两个单独的图标。

当我安装新的 Inno Setup 版本时,我需要一种方法来调用旧 InstallShield 应用程序的卸载程序。如何通过 Inno Setup 从 Windows 添加/删除程序调用卸载程序?如果我重复使用 InstallShield 版本的应用程序 ID 与 Inno Setup 相同,然后手动删除旧文件,这样可以吗?


您必须找到 InstallShield 卸载注册表项,该注册表项将驻留在以下任一位置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ or HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\然后执行它的UninstallString价值。完成后,删除注册表项:无法在 Inno Setup 中重复使用相同的项,因为它总是会追加_is1给你的AppId生成卸载注册表项名称。此外,在较旧的 Windows 版本上,由于长度限制,它还可能会截断此密钥名称并附加校验和。

做这一切从PrepareToInstall事件函数。

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

在安装过程中使用 Inno Setup 删除未随 Inno Setup 安装的其他应用程序 的相关文章

  • 根据用户输入更改 AppID 和 AppName

    我想在同一系统上多次安装同一应用程序 例如两个用户使用两个不同的 Web 服务 每个都有自己的 在我的设置脚本中我想更改AppID and AppName基于用户的输入 例如我的默认值AppName Service App 应该改为AppN
  • 如何使用 Inno Setup 检查互联网连接

    我正在学习 Inno Setup 来制作一个简单的安装程序 在安装过程中我需要从网站下载文件 因此检查是否有互联网连接很重要 在安装过程中如何检查或采取一些警报以连接互联网 Thanks 最好的检查是尝试实际下载该文件 互联网 几乎不是一个
  • 安装前检查 Java 是否存在

    我正在为 jar 应用程序创建 Inno Setup 安装程序 我现在想做的是在继续安装之前检查 java 是否存在 所以我只需要确保用户能够运行 java jar my app jar 我现在正在做的是 Code function Ini
  • 如何将带有值的命令行参数传递给 Inno Setup 编译器,以便我可以在代码中使用它们?

    我有两种可能的构建选项 由于我不希望我的客户使用某些参数启动安装程序 因此我最好将它们传递给编译器并在我的代码中完成所有工作 假设我有变量UNION它可能有两个值 0 and 1 我必须在代码中分析该变量的值 并根据结果包含或不包含某些文件
  • InstallShield 为 x86 和 x64 添加不同的先决条件

    我想根据平台使用 InstallShield 添加不同版本的 Crystal Reports 作为安装先决条件 对于 x86 应安装 32 位版本 对于 x64 64 位版本 我应该添加什么样的条件才能这样做 我发现我可以选择特定操作系统作
  • 如果在 Inno Setup 中更新安装,则排除 ssPostInstall 步骤中的部分代码部分

    我尝试对两者使用相同的安装程序 全新安装和更新 因此 如果用户第一次尝试安装我的应用程序 它将运行完整安装 包括 MySQL 安装程序作为先决条件 以及 MySQL 安装的一部分 Code 就会正常执行 但是 如果用户已经安装了我的应用程序
  • 获取安装目录安装盾

    我想通过安装盾来创建我的设置 我使用命令参数Setup exe path SETUPEXEDIR log txt我的设置位置是Desktop myapp Setup exe使用 SETUPEXEDIR 时返回临时文件夹 我希望在使用 SET
  • 使用自定义操作卸载多个产品

    我正在为我们的产品开发基于 WIX 的安装程序 该产品有一个基础产品和许多插件 基础版和插件将作为单独的 MSI 提供 仅当底座可用时才能安装插件 基础和插件在根文件夹下共享公共文件夹树 例如 C Program files MyProdu
  • ISCC - /D 编译器参数似乎没有效果

    我正在尝试使用 Inno Setup 命令行编译器的 D 参数来选择哪些文件应包含在我的设置中 代码如下所示 define MyAppName MyApp define MyAppVersion 1 0 0 define PHASE Set
  • Inno Setup 卸载进度条更改事件

    有没有类似的事件 函数CurInstallProgressChanged对于进度条CurProgress and MaxProgressInno Setup 中卸载表单中的值 对此没有本机支持 您可以做的是设置一个计时器并观察时间的变化Un
  • 如何将参数传递给用 C# 编写的托管代码 dll 的自定义操作?

    我有一个要求 必须将 3 个参数传递给 C 代码 以便在 installshield 中执行托管代码自定义操作 给不了代码啊请有人帮助我 即使是基本的方法 提前致谢 既然您提到了自定义操作 请参阅在程序集自定义操作中指定托管方法的签名 ht
  • Inno Setup 无法导入 DLL

    我没有运气将 Delphi DLL 导入 Inno Setup Unicode 该DLL有一个简单的过程 procedure Foo stdcall begin end exports Foo 该 DLL 包含在安装程序源中 并添加到文件列
  • 从 Inno Setup 项目内部调用 MySQL

    我正在为一些使用 MySQL 的软件编写安装程序 我正在尝试运行 sql用于在安装时设置数据库的脚本 唉 我目前在执行它时遇到了很大的问题 这个问题似乎是由于这样一个事实而产生的 当你设置一条通往 sql文件内的 execute SOURC
  • Vista幻影目录

    我们有一个程序 安装程序会检查配置文件是否存在 如果存在 它不会复制该文件 它假设用户已修改其配置文件并希望保留这些修改 不幸的是 这是一个 Vista 之前的应用程序 它将配置文件保存在 Program Files 中 问题是 如果你在重
  • Installshield 在次要升级时不更新相关 DLL

    我目前正在使用 InstallShield 部署 NET Winforms 应用程序 我是 InstallShield 的新手 不太喜欢学习过程 Winforms 应用程序具有三个相关的 DLL 这些 DLL 在次要升级期间不会更新 例如
  • 欢迎页面未显示,SelectDir 页面首先显示

    我正在尝试使用 Inno Setup 来制作安装程序 我想先显示欢迎页面 然后显示 SelectDir This is CurPageChanged示例代码 procedure CurPageChanged CurPageID intege
  • Inc 函数 Inno Setup

    这可能非常简单 但是当我尝试编译包含以下内容的程序时 Inc Count 在 Inno Setup 中我不断得到 未知标识符 Inc 我相信这就是在 Pascal 中递增整数的方式 并且对如何继续这里感到困惑 我正在使用 Inno Setu
  • 在 Inno Setup 中编译安装程序时跳过不存在的源文件

    In the Files 部分 我必须通过尝试编译一个不存在的文件来实现这一点 编译器不会失败并遵循其过程 例如在这段代码中 Files Source D pais modulo IMG image png DestDir userdocs
  • 以编程方式卸载 Android 应用程序

    我希望能够允许我的用户从我的应用程序中卸载应用程序 就像 Google Play 商店允许其用户一样 请下图 主要问题是如何定义一个按钮 按下它我们可以通过提供包名称或其他一些信息来卸载应用程序 就像图像上的卸载按钮一样 try Inten
  • Inno Setup:使用缩进保存 XML 文档

    我正在尝试在 Inno Setup 中向 XML 文件添加一个新节点 节点添加正确 但下一个标记之前的换行符被删除或未添加换行符 这是我的添加节点代码 NewNode XMLDoc createElement Test XMLDoc set

随机推荐

  • 如何在 Bash 中隐藏命令输出

    我想让我的 Bash 脚本对最终用户来说更加优雅 Bash 执行命令时如何隐藏输出 例如 当 Bash 执行时 yum install nano 执行 Bash 的用户将看到以下内容 Loaded plugins fastestmirror
  • Apache TOMCAT 上的 Ember-CLI

    我正在尝试在 Apache tomcat 上加载 ember cli 内置服务器应用程序 我使用以下命令在生产模式下构建了我的应用程序 ember build 环境制作 我把文件移到了我的 dist文件夹到我的 apache tomcat
  • setInterval和clearInterval,如何只运行1次?

    我只想运行该函数 1 次 timerA setInterval function codes clearInterval timerA 2000 我只想调用 setInterval 内的函数 1 次 我该如何使用 setInterval 和
  • 添加新 UIWindow 时以编程方式隐藏状态栏?

    当显示我自己的自定义警报时 我目前正在向我的应用程序添加一个新的 UIWindow 在添加此 UIWindow 之前 我的应用程序隐藏了状态栏 但现在它是可见的 如何在这个新窗口中以编程方式隐藏状态栏 我已经尝试了一切 但它不起作用 这就是
  • (在哪里)clang 是否记录了实现定义的行为?

    C 中实现定义的行为是未指定的行为 每个符合要求的实现都必须记录其选择 我很容易找到 gcc 的此类文档here https gcc gnu org onlinedocs gcc 5 3 0 gcc C Implementation htm
  • 无法从 RTCPeerConnection 获取 IP V4 地址 - chrome

    我需要从 Web 应用程序获取客户端本地 IP 地址 为此 我使用标准 RTCPeerConnection 实现来获取 但是返回的ice候选并不携带IP V4地址 而是一个看起来像guid的地址 asdf xxxx saass xxxx l
  • 如何让我的 Perl 脚本对子进程使用多个核心?

    我正在研究一个数学模型 该模型使用 XFOIL 生成的数据 XFOIL 是一种流行的航空航天工具 用于查找机翼的升力和阻力系数 我有一个 Perl 脚本 它使用不同的输入参数重复调用 XFOIL 以生成我需要的数据 我需要 XFOIL 运行
  • 使用ansible playbook执行curl -X

    我想使用 ansible playbook 执行下一个命令 curl X POST email protected cdn cgi l email protection H Content Type application json htt
  • SQL Server 的 LIMIT 和 OFFSET 等效吗?

    在 PostgreSQL 中有Limit and Offset关键字将允许非常轻松地对结果集进行分页 SQL Server 的等效语法是什么 SQL Server 2012 中现在可以轻松实现此功能 从 SQL Server 2012 开始
  • 将 mysql 值赋给变量 inline

    为什么这不起作用我试图获取之前和当前的值来计算百分比变化 我正确地得到了两个值 但现在我如何重用它们来进行数学运算 当我尝试下面的命令时我得到 错误 1054 42S22 字段列表 中存在未知列 currentVal SELECT IFNU
  • 构建有关使用 Sun 专有 API 的警告

    我正在尝试清理我的构建环境 并发现了一些关于使用 Sun 专有 API 的警告 javac workspace
  • 为什么谷歌主页使用 (0, obj.func)(args) 语法?

    有时我盯着google com主页提供的js 发现他们倾向于使用 0 obj func args 句法 以下是脚本的摘录 var function var window this try mb function a return 0 win
  • 直到达到停止值为止的骰子数量

    我正在尝试计算骰子掷出的次数 直到达到明确的停止值 例如 我希望停止值为 100 我正在编写以下代码 sumofsides lt function stopvalue totalsum lt 0 while totalsum lt stop
  • Fabric.js 使用旋转手柄将旋转限制为 x 度

    我正在使用 Fabric js 并尝试使用旋转手柄允许画布上的任何对象旋转 不是自由 360 度 而是一次只能旋转 15 度 我非常努力地搜索 但到目前为止找不到答案 这可能吗 更短的解决方案 canvas on object rotati
  • ionic 4 - 添加插件时未捕获类型错误

    我创建了一个离子项目 版本 4 0 6 添加插件 cordova plugin x socialsharing 后出现以下错误https beta ionicframework com docs native social sharing
  • Phalcon PHP - 表单和模型验证

    Phalcon 支持 2 个验证组件 Phalcon Validation Validator Phalcon Mvc Model Validator 我不知道如何在我的情况下使用它们 我有一张注册表 其中包含 csrf username
  • Google Admin SDK - 服务帐户无法访问资源

    我已通过 console developers google com 创建了服务帐户客户端 生成的密钥 p12 证书 启用 DwD 等等 然后我继续在管理员中担任描述者API参考 https developers google com id
  • OpenLayers 3 图像和文本样式 zindex

    我注意到文本和图像样式在渲染时似乎不遵守其图层顺序 例如 当具有这些样式的许多要素靠近时 所有文本都会呈现在其他重叠矢量要素之上 有没有办法禁用或覆盖这种行为 谢谢 myFeature setStyle new ol style Style
  • LINQ - 按名称分组到 Dictionary>

    我正在构建一个图书馆应用程序 我有一个书籍列表 其中一些书籍的名称重复 同一本书的副本很少 我想将列表转换为 Dictionary gt 其中字符串是一本书的名称 列表将包含具有该名称的所有 Book 对象 我已经做到了这一点 var re
  • 在安装过程中使用 Inno Setup 删除未随 Inno Setup 安装的其他应用程序

    我有一个旧的 VB6 应用程序 它是使用非常旧的 16 位版本的 InstallShield 部署的 我已经使用 Inno Setup 创建了一个新的安装程序 以便通过更新对我的 VB6 应用程序进行 64 位友好 我的所有用户都已安装现有