最近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 scriptとthis 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"
(最初のコードスニペットからHKLM
がHKCU
に置き換えたことに注意してください):
だから、最終的な解決策は次のようになります。