2
最近,我將基於NSIS的安裝程序從安裝到「程序文件」文件夾安裝到本地用戶文件夾,以使普通用戶帳戶無需管理UAC提升即可安裝(類似於SkyDrive或Google Chrome的操作方式)。與用戶權限運行時,可能寫沒有管理權限的NSIS卸載信息?
; 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"
這個工作很好地管理權限運行時,但失敗(默默):
要啓用卸載安裝用過的東西等等。因此
我的問題是:
是否有可能加入到中央卸載控制面板窗口沒有管理權限?
我試圖尋找一個類似於HKLM
鍵的HKCU
鍵來卸載,但沒有找到。此外,我知道我可以編寫一個開始菜單條目來卸載,但我不想讓我的用戶很容易刪除該應用程序。
更新1 /解決方案:
基於Anders answer,我發現this blog posting與this example NSI script,解釋它的方式相同。
所以最終的解決方案是這樣的:
; 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
代替)。