最近、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
)。