5

私は弾薬が必要な開発者です。

ユーザーがプログラムをアンインストールすることを選択した場合、プログラムが HKEY_CURRENT_USER に保持していたデータやユーザー プロファイルの他の部分をどうしますか?

プログラムは、ユーザー データ (ログなど) をユーザー フォルダーに保存します。クライアントは、すべてのユーザーのデータをすべて削除するアンインストールを望んでいます。同時に、通常の管理者以外のユーザーがアンインストールを実行できる必要があります。

これを行うべきではないと述べているホワイトペーパー、ドキュメント、その他を見つけることができませんでした。最後は Raymond Chen の投稿です: http://blogs.msdn.com/oldnewthing/archive/2007/09/17/4948130.aspx

しかし、ブログ投稿は武器としては弱いものです。

別の方法: インストール中に %SYSTEMDRIVE%\FooProgramData を作成します。すべてのユーザーがこのフォルダーに書き込みます。これは醜いです、私は知っています。しかし、これが「アンインストール時にすべてのファイルをクリアする必要がある」という要件を満たす唯一の方法だと思います。

考え?より良い代替手段 (存在する場合)、またはアンインストールによってユーザー データが削除されてはならないという確固たるホワイトペーパー、ドキュメント、またはロゴ要件が必要です。

4

7 に答える 7

3

「同時に、通常の非管理者ユーザーがアンインストールを実行できるはずです。」

管理者以外のアカウントは、他のユーザーのデータを変更してはなりません(また、変更できないようにする必要があります)。

その場合にできることは、現在のユーザーのデータを削除することです。それでも、プロンプトを表示するか、警告を表示する必要があります。

レイモンドと一緒に行ってください、それは単なるブログ投稿かもしれませんが、レイモンドは普通のブロガーとは見なされません:)

編集:http://msdn.microsoft.com/en-us/library/bb204770.aspx#uninstall_cleanを見つけましが、ユーザーデータについては何も明示されていません

于 2009-02-04T09:59:55.517 に答える
2

ユーザーごとのすべてのデータの削除は、アンインストールとは別のプロセスである必要があります。

私の推奨事項(および私たちが行うこと)は、管理者として実行する必要があり、追加のユーザーファイルを削除するプロファイルを列挙する別の「クリーンアップ」ユーティリティを作成することです。オプションで、ユーザーのレジストリハイブを列挙したり、追加のレジストリキーを削除したりすることもできます。クライアントの1つには、まさにそれを実行する独自のカスタムスクリプトがあります。

次に、このクリーンアップツールを顧客に提供し、アンインストール後にすべてのユーザーデータを削除する場合は、これを使用すると言います。

次の場合を考えてみましょう

  • お客様は、新しいバージョンをインストールする前にアンインストールします
  • メジャーアップグレード(古いバージョンがアンインストールされるため、これに注意する必要があります)
  • 実行すべきではなかったが実行する能力を持っていたユーザーによる偶発的なアンインストール

私が考えることができるすべてのユーザーのこのデータを削除する最もクリーンな方法は、アクティブセットアップを利用し、これを使用して、各ユーザーが次にログオンしたときに実行されるユーザーごとのスクリプトをトリガーすることです。アンインストール中はデータが削除されませんが、次回のログオン時に削除されます。また、いくつかのレジストリエントリをそのままにしておきますが、ユーザープロファイルを列挙するよりも、破損を引き起こす可能性は低くなります。

于 2009-02-04T22:52:53.880 に答える
2

クライアントが望んでいない場合を除いて、アンインストールはすべてのクライアントデータを削除する必要があります:)

別の言い方をすれば、一般的なアンインストーラーは、ユーザーがデータを削除するかどうかを選択できるようにする必要があります。

あなたの場合、特にデータの削除を望んでいる顧客がいる場合、それがあなたがしなければならないことだと思いますが、アンインストールが非ユーザーによって実行される場合、それを行うクリーンな方法はありません。 -admin すべてのユーザーがファイルシステムに完全にアクセスできる場所にデータを提案して保存しない限り。

于 2009-02-04T09:58:09.123 に答える
2

Windows の特性についてはわかりませんが、ユーザーとして、ソフトウェアをアンインストールしてもデータが失われないようにしたいと考えています。いくつかの引数は次のとおりです。

  • 他のプログラムが同じデータを処理できる場合があります
  • 後で考えを変えて、ソフトウェアを再インストールすることができました
  • 他の人がデータを必要とする可能性があるので、それを郵送することができます
于 2009-02-04T09:58:31.680 に答える
0

私の最近の「賢明な考え」は、プログラムの最初の実行時に、対応するユーザーのフォルダーに「readme.txt」ファイルを作成することを推奨しています。このファイルには、どのファイルがどのファイルであるかの説明と、「このフォルダーをクリーンアップしてください」という免責事項が含まれている必要があります:-)

質問を明確にするために、特に Windows ロゴ認定に関連するものをもう 1 つ作成しました: Windows Logo clean uninstall

古いジレンマを提起しましたが、Microsoft が推奨する 1 つの選択肢を知りたいです。

于 2012-11-06T17:30:15.107 に答える
0

アンインストール時にユーザーや構成データを削除することは決してありません。ユーザーが本当にすべてを消したい場合は、自分で行う必要があります。

于 2009-02-04T09:57:59.717 に答える
0

私はこのパーティーに数年遅れていることを知っていますが、今自分でこれに対する答えを探しているので、次の新しい MSDN 記事に出くわしました: http://msdn.microsoft.com/en-us/ライブラリ/ウィンドウ/アプリ/jj553522.aspx .

これは Metro スタイル アプリに関連していますが、おそらく他の種類のアプリケーションにも関連しています。彼らの説明は、さまざまな種類のユーザー データ間で非常に必要とされるいくつかの区別を示しており、開発者がファイルを削除するかどうかを決定するのに役立つ場合があります。この区別がなければ、アンインストール中にファイルを削除するかどうかについてさまざまな意見があることは理解できます。

アプリが頻繁に管理または操作するデータには、次の 2 種類があります。

アプリデータ

アプリ自体が作成および管理するデータ。これは、特定のアプリの内部機能または構成に固有の変更可能なデータです。これには、実行時の状態、ユーザー設定、参照コンテンツ (辞書アプリの辞書定義など)、およびその他の設定が含まれます。アプリ データはアプリの存在に関連付けられており、そのアプリにとってのみ意味があります。

ユーザーデータ

ユーザーがアプリ利用時に作成・管理するデータ。これには、ドキュメントまたはメディア ファイル、電子メールまたは通信のトランスクリプト、またはユーザーが作成したコンテンツを保持するデータベース レコードが含まれます。ユーザーが選択した設定またはアプリ構成オプションは、ユーザー データではなく、アプリ データと見なされることに注意してください。ユーザー データは、単一のアプリとは無関係に有用であり、複数のアプリにとって有用または意味がある場合があります。これは多くの場合、ドキュメントなど、アプリ自体とは独立したエンティティとしてユーザーが操作または送信したいデータです。

ここで太字イタリックで示されている文に注意してください。問題のファイルがアプリケーションなしでは無意味である場合、またはファイルにそのアプリケーションのユーザー設定が含まれている場合 ( user.config. アプリケーションに属していると見なされ、アンインストール時に削除されます。

そうは言っても、現在のユーザー以外のユーザーに対してこれを行う簡単な方法をまだ探しています! そのすべてのデータをアプリ データのディレクトリに移動することを検討しています。これにより、個々のユーザーのユーザー データ ストアを台無しにすることなく、より簡単に削除できるようになります。

于 2012-10-04T15:40:53.963 に答える