2012-04-30 10 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 example NSI scriptthis blog postingを見つけ

それと同じ方法を説明します。

; 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についてはわかりません)

関連する問題