2

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

4

1 に答える 1

2

あなたは正しい方向に進んでいました。HKLMと同じサブパスを持つHKCUが正しい場所です。

デフォルトでは存在しませんが、最近のバージョンのWindowsで動作するはずです(Win9xでは動作しません。NT4と2000についてはわかりません)

于 2012-05-01T05:06:41.890 に答える