最近,我将基于 NSIS 的安装程序从安装到“程序文件”文件夹中更改为安装到本地用户文件夹中,以使普通用户帐户无需管理 UAC 提升即可安装(类似于 SkyDrive 或 Google Chrome 的做法)。
要启用卸载,安装程序使用了类似的东西:
; Shortcut for the key.
!define REG_U "Software\Microsoft\Windows\CurrentVersion\Uninstall\ZetaUploader"
; Write uninstall strings.
WriteRegStr HKLM "${REG_U}" "DisplayName" "Zeta Uploader ${VERSION}"
WriteRegStr HKLM "${REG_U}" "DisplayVersion" "${VERSION}"
WriteRegStr HKLM "${REG_U}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKLM "${REG_U}" "Publisher" "Zeta Software GmbH"
WriteRegStr HKLM "${REG_U}" "URLInfoAbout" "https://www.zeta-uploader.com"
这在使用管理权限运行时效果很好,但在使用用户权限运行时会失败(静默)。
因此,我的问题是:
是否有可能在没有管理权限的情况下添加到中央卸载控制面板窗口?
我试图搜索HKCU
类似于HKLM
卸载密钥的密钥,但没有找到。此外,我知道我可以编写一个开始菜单项来卸载,但我不希望我的用户太容易删除应用程序。
更新 1 / 解决方案:
根据Anders 的回答,我发现这篇博客文章使用这个示例 NSI 脚本以同样的方式解释它。
所以最终的解决方案如下:
; Shortcut for the key.
!define REG_U "Software\Microsoft\Windows\CurrentVersion\Uninstall\ZetaUploader"
; Write uninstall strings.
WriteRegStr HKCU "${REG_U}" "DisplayName" "Zeta Uploader ${VERSION}"
WriteRegStr HKCU "${REG_U}" "DisplayVersion" "${VERSION}"
WriteRegStr HKCU "${REG_U}" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKCU "${REG_U}" "Publisher" "Zeta Software GmbH"
WriteRegStr HKCU "${REG_U}" "URLInfoAbout" "http://www.zeta-uploader.com"
(请注意,HKLM
第一个代码片段被替换为HKCU
)。