クロスプラットフォーム アプリはデータをどこに保存する必要がありますか?
-
09-06-2019 - |
質問
近々、Windows、Mac、Linux を対象としたアプリケーションを構築する予定です。設定などのアプリケーションデータをどこに保存すればよいか悩んでいます。
アプリケーションのインストール フォルダーを選択するのが最も簡単ですが、Vista の新しいセキュリティ モデルではそれが問題になる可能性があると思います。さらに、ユーザーは別の設定を必要とする場合もあります。
C:\Documents and Settings\username\MyApp は Vista と XP の両方に適していますか?/home/username/.MyApp は Linux と Mac に適していますか?
アイデアやベストプラクティスへのリンクをいただければ幸いです。
ありがとう!
ファン
解決
各プラットフォームには、ユーザーのホーム フォルダー、ドキュメント フォルダー、または設定フォルダーを検索するための独自の API があります。
- ウィンドウズ:SHGetFolderPath() または SHGetKnownFolderPath()
- Mac OS X および iPhone OS:NSSearchPathForDirectoriesInDomains()
- ユニックス:$HOME 環境変数
特定のパスをハードコーディングしたり、ユーザー名に接頭辞や接尾辞を追加したりしないでください。また、ファイルの命名にはプラットフォームの規則に従うようにしてください。
他のヒント
ベスト プラクティスに関しては、Jeff がユーザー スペースの汚染に関する記事を投稿しました。これは役立つと思われます。 ユーザースペースを汚さないでください
一般的なポイントとして、設定の実装を「設定プロバイダー」に抽象化し、プラットフォームごとに異なるプロバイダーを提供することをお勧めします。こうすることで、ターゲット プラットフォームに最適な方法で設定の保存を実装できます (たとえば、Linux 上のファイルや Windows レジストリ)。
「最小公倍数」を単純に採用しないでください。ファイルに明示的に保存する必要があるコンテンツがある場合は、設定プロバイダーにそれらのファイルのプラットフォーム固有の場所を公開してもらいます。
私は違います:)
Windows では USERPROFILE を、Mac/Linux では HOME を使用しています。しかし、たとえそうであっても、それらが正しい場所であることを知る必要があります。
ありがとう!
Windows では、ユーザー プロファイルだけでなく、さらに深いレベルに進む必要があります。アプリケーション データ フォルダーを使用します。
Windows では APPDATA を使用し、Linux では HOME を使用します。
Linux/BSD/Solaris の場合:http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
ユーザー データをアプリケーション フォルダーに保存しないでください。それはただの悪い考えです。
ほとんどのオペレーティング システムには、$HOME (または %HOME%) 環境変数があります。それが最初に見るところでしょう。
ただし、複数のオペレーティング システムを明確にサポートしたい場合は、どこに処理を行う必要があるかを正確に把握する、それぞれの OS 固有のコードが必要になります。(Mac OS の場合は ~/Library、GNOME ベースのシステムの場合は ~/.config、Windows の場合は %HOME%/Application Data など)。
どの言語を使用する予定ですか?たとえば、Java には専用の プリファレンス API.