加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

卸载程序不删除注册表

发布时间:2020-12-14 05:53:58 所属栏目:Windows 来源:网络整理
导读:Function Check32or64BitWindows${If} ${RunningX64} strcpy $INSTDIR "$PROGRAMFILES64${APP_FULL_PATH}" SetRegView 64${Else} SetRegView 32 strcpy $INSTDIR "$PROGRAMFILES32${APP_FULL_PATH}"${EndIf}FunctionEnd 如果检测到旧版本,则执行 ExecWait
Function Check32or64BitWindows
${If} ${RunningX64}
      strcpy $INSTDIR "$PROGRAMFILES64${APP_FULL_PATH}" 
      SetRegView 64

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

如果检测到旧版本,则执行

ExecWait '"$INSTDIRuninst.exe" /S' $0

我的卸载部分:

Section uninstall
!define APP_UNINST_KEY "SoftwareMicrosoftWindowsCurrentVersionUninstall${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

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

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

解决方法

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

如果要安装x64应用程序并在安装期间调用SetRegView 64,则还必须在卸载程序中调用SetRegView 64.

使用Process Monitor调查其他注册表问题…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读