为什么 WiX 安装会在 HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ 中创建两个条目

2024-03-19

我正在尝试卸载我们产品的旧版本,该版本是使用 WiX 构建的安装程序安装的,并且在静默卸载后:

msiexec /x{GUID}

该程序仍然出现在控制面板中。我已经开了一个单独的项目 https://stackoverflow.com/questions/54697934/after-using-msiexec-to-uninstall-a-program-it-remains-in-the-control-panel-add/54698365到 探索这个谜团,但另一个奇怪的问题出现了。我注意到运行该程序的安装后,两个条目(GUID)被添加到 HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall 中。一份带有产品 GUID,另一份我不知道它来自哪里。我已经搜索过 .msi,但它不在那里。每次安装时都会创建两者,如果从控制面板卸载,则两者都会被删除,如果从命令行卸载,则两者都会保留在注册表中。所以看看


有人知道这里发生了什么事吗?


嵌入式安装程序.exe:本质上,您安装的 MSI 也安装了嵌入式non-MSI setup.exe通过作为其自己的安装序列的一部分的自定义操作。或者,有一个setup.exe按顺序启动 MSI 和旧设置的启动器。结果:有两个条目Add / Remove Programs.

卸载:这是显而易见的,但要删除第二个条目,除了卸载 MSI 之外,您还必须运行其卸载序列。在卸载方面,非 MSI 设置不如 MSI 软件包可靠。所有 MSI 软件包的隐式可用卸载以及可靠的静默运行是 MSI 的核心优势之一:微星核心优势 https://stackoverflow.com/questions/49624070/how-to-create-windows-installer/49632260#49632260(以及其他主题)。

卸载命令 https://stackoverflow.com/questions/450027/uninstalling-an-msi-file-from-the-command-line-without-using-msiexec/1055933#1055933:尝试运行静默卸载字符串,我想这就是您所做的?

Run commands elevated! With admin rights!

REM Uninstall MSI
msiexec.exe /x {PRODUCT-GUID} /L*v C:\MySetup.log /QN

REM Uninstall legacy setup.exe
"%SystemDrive%\ProgramData\Package Cache\{c5f0cb3e-1de3-4971-843a-abb981ed670c}\MDRSetup.exe" /uninstall /quiet

静音运行:要以静默方式运行旧版设置,您有时必须记录“响应文件”以记录 GUI 中的所有设置并传递给卸载过程。我之前对此有一些回答。您还需要以管理员权限运行:

  • 从提取的安装文件创建 MSI https://stackoverflow.com/questions/51932661/create-msi-from-extracted-setup-files/51941558#51941558
  • 关于使用 Installshield 2013 (.issuite) 项目文件生成的 Setup.exe 进行静默安装 https://stackoverflow.com/questions/48976617/regarding-silent-installation-using-setup-exe-generated-using-installshield-2013/49011371#49011371
  • 如何使用调整后的设置在 /silent 模式下运行安装 https://stackoverflow.com/questions/52327442/how-to-run-an-installation-in-silent-mode-with-adjusted-settings/52338626#52338626

应用程序重新打包 http://www.installsite.org/pages/en/tt_corp.htm: 您正在安装的软件的名称是什么?MDRSetup.exe, 就是它最大数据恢复1.9?可能不会。摆脱遗留软件可能具有挑战性。如果您有的话,您可以随时尝试将其重新打包为 MSI这样做的工具 http://www.installsite.org/pages/en/tt_corp.htm,或者也许您的公司中有一个团队可以这样做(所有大公司都倾向于这样做)。并非所有旧设置都可以重新打包。可能存在无法捕获的结构,例如某些驱动程序、每台机器生成的唯一密钥等......


Links:

  • 从提取的安装文件创建 MSI https://stackoverflow.com/questions/51932661/create-msi-from-extracted-setup-files/51941558
  • 如何使用 powershell 运行安装程序? https://stackoverflow.com/questions/46221983/how-can-i-use-powershell-to-run-through-an-installer/46224987#46224987
  • Wix - 如何在没有 UI 的情况下运行/安装应用程序 https://stackoverflow.com/questions/48148875/wix-how-to-run-install-application-without-ui/48157650#48157650
  • 捕获 Windows 上应用程序安装期间的所有更改 https://stackoverflow.com/questions/1074556/capturing-all-changes-during-an-application-install-on-windows/1075832#1075832
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 WiX 安装会在 HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ 中创建两个条目 的相关文章

  • 为 Windows 服务创建 MSI 安装程序

    我在 Visual Studio 2008 中有一个 Windows 服务项目 我还添加了安装和部署项目 不幸的是 当我安装它时 该服务没有显示在服务 MMC 管理单元中 我已经将 ProjectInstaller 添加到服务项目中 并且已
  • 使用 WiX 进行重大升级后无法启动 Windows 服务

    我有一个非常简单的 WiX 项目 没有什么花哨 当尝试对现有安装执行 MajorUpgrade 时 无法启动服务 并且不可避免地会回滚到以前的版本并正常启动服务 我已经删除了Start install 并成功手动启动应用程序 所以我知道这不
  • 如何使用 WiX 安装和启动 Windows 服务

    我尝试在 Wix 中使用下面的代码 但是在安装时 安装程 序在 正在启动服务 状态下冻结了大约 3 分钟 然后我收到此消息 Service Jobservice 无法启动 请验证您是否有足够的权限来启动系统服务 我的代码有什么错误吗 并且可
  • WiX 在构建服务器上失败

    我有一个使用 WiX 的项目 它在我的本地计算机上运行良好 但是当我发布到构建服务器时 构建会因以下内容而崩溃 来自 MSBuild 日志 Using HeatDirectory task from assembly C Program F
  • 如何从命令行列出已安装的 MSI? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我们最近将 Windows 软件包从 RPM cygwin 切换到 MSI wix 拥有原生包装是一个非常受欢迎的变化 我们打算坚持下去 然而 MSI
  • 当自动为 WIX 安装程序收集文件时,我的目录结构有多灵活?

    请原谅我的无知 我一直在阅读一些书 但还没有准备好尝试任何东西 目前 我们有一个 wxs 文件 该文件无法轻松维护 每当从 SVN 提交 删除新文件时 都会手动添加 删除所有文件 由于在创建新文件和更新 wxs 安装文件之间发生了失误 我们
  • 如何使用自定义操作在 WiX 中运行脚本 - 最简单的示例?

    WiX新手问题 我该怎么办1 将一次性 shell 脚本与安装程序一起复制到 temp e g
  • Windows 安装程序和安装应用程序合并到一个文件中?

    我使用 Visual Studio 在 C 中编写了一个应用程序 我创建了一个项目设置文件 该文件在我的调试中为我创建了文件 Windows Installer 和安装应用程序都是必需的 但我想将它们合并为一个 就像当您下载应用程序时 安装
  • Visual Studio 2013 Shell(独立)安装失败并出现错误 997:重叠 I/O 操作正在进行

    我正在尝试在 Windows 7 Pro 计算机上安装 Visual Studio 2013 Express for Desktop 我已经下载了 ISO 文件并在本地运行它 我运行安装程序并收到有关未安装某些先决条件 其中之一是 C 运行
  • 如何创建 heat.exe 收集的文件的快捷方式?

    使用 WiX Toolset 3 10 并尝试创建已使用 WiX Toolset 收获的某些文件的快捷方式heat exe效用 如 WIX bin heat exe dir SourceDir nologo platform x64 ke
  • 在wix中添加文件夹到安装程序而不是文件?

    我的安装程序必须将文件复制到 installdir 我的应用程序有大约 2000 个文件 我不可能编写脚本将每个文件添加到安装程序中 wix中是否有任何选项可以让我一次添加所有文件或包含文件的整个文件夹 我是 wix 新手 我在任何教程中都
  • 根据 VS 活动配置定义 Wix 属性和值

    如何定义根据激活的 Visual Studio 配置而变化的 Wix 属性和值 例如对于我们的发布版本 var x 1 对于导出版本 var x 2 我们使用 wixproj 文件将属性传递到 WiX
  • MSI 和 EXE 安装程序有什么区别,我应该选择哪一个? [复制]

    这个问题在这里已经有答案了 可能的重复 msi 和 setup exe 文件之间有什么具体区别 https stackoverflow com questions 1789530 what are the specific differen
  • WIX 自动生成 GUID *?

    假设我生成产品 ID 为 的 WIX XML 文件 另外 对于每个组件 GUID 我都使用
  • 让 WIX 在项目中包含引用

    我对 WiX 和设置自定义安装程序完全陌生 所以我对问题的主题表示歉意 我有一个内部业务应用程序 日记 它构建并运行良好 因此我按照教程 官方文档添加 WiX 项目并引用日记的 csproj 然后构建并运行这个最基本版本的 WiX 安装程序
  • Burn in WiX 3.6 如何将 MSI 文件捆绑到 .exe 中?

    我有兴趣了解 WiX 如何捆绑使用 Burn 创建的 EXE 文件 我知道创建一个自解压 EXE 文件非常简单 我已经完成了一百万次了WinRAR http en wikipedia org wiki WinRAR EXE 文件解压到哪个目
  • wix 3 安装程序:未解析的绑定时变量!(bind.fileVersion.Name.exe)

    我正在尝试使用 Wix3 中的绑定 bind fileVersion 即 3 11 1 由于某些原因 我收到以下错误消息 未解析的绑定时变量 bind fileVersion TestWix3 exe 我的目标是填写 产品 ID 行 特别是
  • 如何制作一个简单包装 EXE 文件的 MSI

    经过大量实验后 我得出的结论是 Windows Installer 是一种糟糕的技术 但客户需要 MSI 文件 那么 如何创建一个 MSI 文件 将 EXE 文件提取到临时目录 并使用与传递给 EXE 文件相同或相似的选项运行它 MSI 的
  • Wix - 自定义安装目录

    我使用的是 Wix 3 x 用户应该能够选择目标目录 我的Setup wxs目前是这样的 http pastebin com uH1EjbDQ http pastebin com uH1EjbDQ 询问用户自定义目标目录的最简单方法是什么
  • 如何使用 Wix 运行 sql 脚本创建数据库

    我在使用 Wix 创建数据库时遇到问题 我能找到的示例 参见下面的链接 都是首先使用 wix 创建数据库并运行创建表 sql 脚本 问题是我需要将 wix 设置为使用 CREATE DATABASE 运行 sql 脚本来创建数据库和表 而不

随机推荐