2012-04-30 44 views
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 postingthis 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" 

(請注意,從第一代碼片段HKLMHKCU代替)。

回答

2

您處於正確的軌道上,與HKLM具有相同子路徑的HKCU是正確的位置。

它默認情況下不存在,但應該適用於任何最新版本的Windows(不適用於Win9x,不知道NT4和2000)