卸载程序不删除注册表

2024-02-13

Function Check32or64BitWindows
${If} ${RunningX64}
      strcpy $INSTDIR "$PROGRAMFILES64\${APP_FULL_PATH}" 
      SetRegView 64

${Else}
       SetRegView 32
       strcpy $INSTDIR "$PROGRAMFILES32\${APP_FULL_PATH}"
${EndIf}
FunctionEnd

如果检测到旧版本,那么我执行

ExecWait '"$INSTDIR\uninst.exe" /S' $0

我的卸载部分:

Section uninstall
!define APP_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_VENDOR} ${APP_NAME}"
!define APP_UNINST_ROOT_KEY "HKLM"
DeleteRegKey ${APP_UNINST_ROOT_KEY} "${APP_UNINST_KEY}"
SectionEnd
Section -Post
WriteRegStr ${APP_UNINST_ROOT_KEY} "${APP_UNINST_KEY}" "DisplayName" "${APP_FULL_NAME}"
SectionEnd

发布部分在 Windows 64 位注册表视图中创建注册表项,但卸载程序不会删除该注册表项。

如果我删除对 64 位操作系统的检查,则在 Wow6432Node 中创建和删除注册表可以正常工作。


如果您不安装 x64 应用程序,则根本不应该使用 SetRegView/$PROGRAMFILES64。

如果您正在安装 x64 应用程序并调用SetRegView 64在安装过程中你还必须调用SetRegView 64在卸载程序中。

Use 过程监控器 http://technet.microsoft.com/en-us/sysinternals/bb896645调查其他注册表问题...

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

卸载程序不删除注册表 的相关文章

  • 注册表观察程序 C#

    我是 WMI 的新手 我需要实施注册表值更改事件 http msdn microsoft com en us library aa393042 VS 85 aspx在 C 服务中 我需要一个事件处理程序 每次更改一组注册表值中的任何一个值时
  • 将文件扩展名与程序关联

    我知道怎么做 而且我去过http www codeproject com KB vb VBFileAssociation aspx http www codeproject com KB vb VBFileAssociation aspx前
  • 如何删除注册表中损坏的符号链接

    我正在对注册表进行一些编辑原型 以创建从一个区域到另一个区域的符号链接 我使用了以下代码 HKEY hkFS HKEY hkSOFTWARE DWORD dwDisposition LSTATUS result result RegOpen
  • 如何在 Windows 7 上卸载 Netbeans 6.9?

    我尝试卸载 Netbeans IDE 由于某种原因它拒绝卸载 当我从控制面板运行卸载程序时 我收到一条消息 安装程序锁定文件位于 c users user nbi nbilock 当我删除文件时 我收到一条消息 在注册表中找不到指定的目标组
  • 使用 powershell 从多台计算机中提取注册表值

    我和一位同事正在尝试创建一个 powershell 脚本 该脚本使用一个 CSV 文件 其中包含公司网络上所有计算机的名称 并使用这些名称连接到远程注册表并提取特定值 这是我们目前所拥有的 strMachineName import csv
  • HKEY_CURRENT_USER\Software\Wow6432Node\Classes 与 HKEY_CURRENT_USER\Software\Classes\Wow6432Node

    问题很简单 HKEY CURRENT USER Software Wow6432Node Classes 和 HKEY CURRENT USER Software Classes Wow6432Node 有什么区别 有点晚了 但我走了 科林
  • 读取所有注册表值的快速方法

    我正在编写一个实用程序 需要创建 HKCR 中所有注册表值的列表 我使用递归函数来执行此操作 var list new Dictionary
  • 使用cmd获取当前用户路径变量而不使用系统路径

    当我使用标准用户 也是管理员 登录时 命令echo PATH 返回系统路径 用户路径 如何只获取用户的路径 例如 当我当前用户的路径是C ruby C java bin系统路径是 SystemRoot system32 SystemRoot
  • 无法再卸载 Visual Studio 2017

    我在运行最新的 VS2017 时遇到了严重的问题 因为在我升级它时它进入了不一致的状态 有一些残留的软件包拒绝卸载 因为它们显然缺少来自的缓存文件C Windows Installer文件夹 我从来没有碰过那个文件夹 然而 我确实移动了C
  • NSIS 滚动许可证欢迎屏幕

    我的安装程序在与滚动许可证插件交互时遇到问题 安装程序在没有插件的情况下也能很好地工作 这就是插件让我包括的内容 include MUI nsh define MUI PAGE CUSTOMFUNCTION SHOW LicenseShow
  • 卸载应用程序 uninstallreceiver 未调用

    经过大量谷歌后 我找到了一些很好的解决方案来找出应用程序的卸载接收器 我指的是第一个链接 https stackoverflow com questions 18692571 how it works warning that app is
  • 如何使用 powershell 以编程方式查找用户 HKEY_USERS 注册表项?

    我想知道如果您知道本地计算机上该用户的登录名 是否有办法在 HKEY USERS 中找到该用户的注册表项 我想以编程方式将内容添加到特定用户的注册表项 例如自动运行 但我只知道用户名 如何确定 HKEY USERS 中的哪些神秘用户实际上属
  • 如何“安装”自定义 Windows 驱动程序?

    我计划用 C 语言编写一个基本的 Windows 注册表过滤器 该过滤器的目的是挂钩所有 用户和内核特权 注册表调用 以便我可以在我的程序中使用它们 我基本上是复制 Mark Rusinovich 的 regmon 进程监视器 但更基本 我
  • 无法将值写入密钥\使用管理员帐户在 Windows 7 计算机中安装 SSMS 显示软件

    我在安装SQL Server 2014时出现以下错误 无法将值写入键 SOFTWARE 验证您是否有足够的权限访问该密钥 或联系您的支持人员 当它尝试安装 SSMS 并且我的计算机正在运行 Windows 7 时 就会发生这种情况 为了使其
  • NSIS - 在命令行安装期间打印提示

    我正在使用 NSIS 为 Windows 制作安装程序 并且有许多用户可以使用命令行指定的自定义安装选项 例如 installer exe IDPATH c Program Files Adobe Adobe InDesign CS5 S
  • 检测注册表虚拟化

    我有一组 C v2 应用程序 并且在 Win7 以及较小程度上的 Vista 中的注册表虚拟化方面遇到了困难 我有一个共享注册表配置区域 我的应用程序需要在 HKLM Software Company 中访问该区域 在 Vista 之前 所
  • 通过 RMI 的服务器,无需注册

    我有一个可以通过 RMI 连接的服务对象 目前我正在这样做 Server Registry r LocateRegistry createRegistry 1234 r bind server UnicastRemoteObject exp
  • Windows:列出并启动与扩展关联的应用程序

    如何确定与特定扩展名 例如 JPG 关联的应用程序 然后确定该应用程序的可执行文件所在的位置 以便可以通过调用 System Diagnostics Process Start 来启动它 我已经知道如何读取和写入注册表 注册表的布局使得以标
  • 如何从 Mac OS X 中完全删除 Eclipse(包括设置和插件)?

    我的 Eclipse 与 GAE 损坏并且工作异常 所以我从Application文件夹中删除了Eclipse 但是留下了垃圾 我重新下载了全新的 eclipse 但它以旧设置运行 并且损坏的 GAE 结构仍然存在 如何从 Mac 上完全删
  • 为什么我的 DLL 无法注册?

    我正在 VS2005 中构建一个项目 但我的几个 DLL 无法注册 我在 Visual Studio 中收到的错误消息是 项目 错误 PRJ0019 工具从 注册 ActiveX 控件 返回错误代码 这很模糊 当我通过命令行手动注册DLL时

随机推荐