6

私のプログラムには、最初の実行後にプログラムが作成し、updonアプリの使用状況内にデータを保存するsqllitedbファイルが含まれています。データベースは一定期間にわたって構築されます。dbファイルはプログラムのインストールディレクトリに作成されます

バグが修正されたら定期的にアプリを更新する必要があるので、基本的には新しいmsiインストーラーを公開し、インストーラーはdbファイル以外の古いインストールファイルを削除して新しいプログラムファイルをインストールします。

一部のユーザーはデフォルトの場所にインストールしないため、選択した場所にdbファイルが存在しません。

インストールディレクトリの外にあるプログラムデータフォルダにデータファイルを保存しても大丈夫かどうか知りたいですか?私のプログラムのすべての新しい更新がそのプログラムデータフォルダからのデータにアクセスできるように..?

Windows XP、Vista、7にプログラムデータディレクトリはありますか?そしてC#/でそれにアクセスする方法

4

3 に答える 3

10

Environment.SpecialFolder列挙型を見て、データの適切な場所を決定してください。

私はフォルダに投票しRecentますが、他のオプションがあります:

  • ApplicationData(現在のユーザーの移動プロファイル)
  • CommonApplicationData(ローカルマシン上のすべてのユーザー)
  • LocalApplicationData(ローカルマシンの現在のユーザー)

で選択したフォルダを取得します

Environment.GetFolderPath(Environment.SpecialFolder.xxx))
于 2012-11-20T23:23:30.757 に答える
8

アプリケーションフォルダにユーザーデータを保存することは非常に危険です。ユーザーがアプリを更新またはアンインストールするとデータが破棄されるだけでなく、標準ユーザーはアプリディレクトリに書き込むこともできません。

私は通常、シードデータベースをアプリケーションに含め、アプリケーションの起動時にフォルダー内のフォルダーにコピーします Environment.SpecialFolder.ApplicationData。すべてのユーザーデータはコピーに保存されます。ユーザーがアプリケーションをアンインストールすると、シードデータベースは削除されますが、ユーザーデータは残ります。例については、このSOの回答を参照してください。

于 2012-11-20T23:20:08.337 に答える
1

インストールフォルダにデータを保存しないでください。これを試してください。特別なフォルダは、この種のデータを保存できるように設計されています。アプリケーション設定もあります。これは、ユーザーキーと値のペアである情報に簡単にアクセスして保存する方法を提供します。

于 2012-11-20T23:16:46.097 に答える