web-dev-qa-db-ja.com

AppDataは、ユーザー固有のアプリ(自分のデータを変更する)をインストールするための「正しい」場所ですか?

ここではおそらく非常に分厚いだけですが、「新しい」ユーザー固有のプログラムをWindows 7にどこにインストールするかは明確ではありません(おそらくVistaもおそらくそうですが、まだそのシナリオを具体的に確認していません)。

Windowsでは、XP(正しいか間違っているか)で、常にプログラムを「プログラムファイル'そして、彼らは一種の誰もが利用できることを受け入れました。 Windows 7で収集できるものから、ユーザーのもとにソフトウェアをインストールすることになっています。 アプリデータ フォルダ(おそらく AppData\Local\MyApp)。これはある程度理にかなっていますが、このフォルダがデフォルトで「非表示」になっているという事実は、サポートについてユーザーと話している「楽しみ」があることを意味します。

ユーザー固有になるようにソフトウェアをインストールしたいのですが(Windows 7のユーザービットは完全に理にかなっています)、必要に応じてユーザーがアクセスできるようにしたいと思っています。私たちのプログラムには、実行中に書き込む必要がある「データ」サブディレクトリも含まれています(埋め込みデータベース)。ただし、プログラムはシングルユーザー/スタンドアロンを対象としているため、ユーザー固有のフォルダー内にあるデータフォルダーは含まれていません。問題になるだろう。

私の問題は、AppDataの「隠しフォルダー」の側面全体です。 MSDNを調べたのと同じくらい、ユーザー固有のプログラムをどこにインストールすればよいかわからない。ある方法で撮影すると、 AppData\Local\MyApp、および別の方法では、ユーザーの マイドキュメント\ MyApp 同等。

このすべてがどこに行くのかについて明確なガイドを誰かが持っていますか? MSDNのドキュメントは混乱を招きました。 :-)

38
robsoft

あんまり。

現在のローミングユーザーのアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。

驚くべきことに、AppDataはアプリケーションデータ用であり、インストール用ではありません(クリックワンス/ Silverlightアプリケーションは別です)。 Program Filesにインストールできますが、インストールする必要がありますが、そのフォルダーへの書き込みを期待しないでください。

can AppData\Roaming(SpecialFolder.ApplicationData場所)。

インストールするユーザーだけがソフトウェアを使用できるようにする場合は、AppDataにインストールすることもできます。これは、たとえば、同じマシン上に複数のユーザーがいて、すべて異なるバージョンのソフトウェアを完全に分離して実行したい場合に役立ちます。

ローカルマシンにのみ設定を適用する場合は、AppData\Localを使用します。これはSpecialFolders.LocalApplicationData-ローミングプロファイルのサイズが突然50Mbに跳ね上がることはなく、ソフトウェアのサイズが何であっても、AD管理者は非常に満足します。

すべてのユーザーに適用される設定を作成したい場合は、SpecialFolders.CommonApplicationData

ディレクトリの実際の名前に依存しないように注意してください。ローカリゼーションの問題は、これが変更される可能性があり、OSバージョン2で場所が変更されることを意味します。ソフトウェアで 特別なフォルダーの列挙 、またはインストーラーで同等のものを使用する必要があります。

Program Filesにインストールすることはできませんが、AppDataを想定どおりに使用して、そこにデータベースを保存できますか?

28
blowdart

Windows 7は FOLDERID_UserProgramFiles 既知のフォルダーを追加し、デフォルトでこれは%LOCALAPPDATA%\Programsにマップされます。 ALLUSERS = 2&MSIINSTALLPERUSER = 1 の場合、これはMSIによって使用されます。

Vista以前では、正規のユーザーごとのアプリケーションフォルダーはありませんが、%LOCALAPPDATA%を使用するのが一般的です。悲しいことに MSIは使用するだけです これらのシステムでは%ProgramFiles%。

20
Anders

それは2019年で、私はVisual Studio Code(Microsoft製品)をデフォルトのフォルダにインストールしました

%userprofile%\AppData\Local\Programs\Microsoft VS Code

これはおそらく、管理者またはUACプロンプトがインストールを承認するための要件を回避するためです。

7
Paiman Roointan

Windows 7のフォルダー構造は、Unix構造に深く影響を受けています。

/usr/ -> C:\Program Files\ -> binaries: executables and dynamically linked
/etc/ -> C:\ProgramData\ -> global settings
/home/ -> C:\Users\ -> a folder for each user
~/.* -> C:\Users\Hikari\AppData\Roaming\ -> settings for each user

Windowsには、ユーザー、AppData Local、およびローミング(Unixが通常NFSで処理する)によって作成されたコンテンツを含むファイル用のMy Documentsのような、より多くのフォルダーがあります。

開発者がこれらの構造の使用を開始するときがきました。複製する必要のないバイナリファイル、グローバル設定、ユーザー設定を少なくとも分離する必要があります。

セットアップがアプリをインストールするとき、このセットアップはProgram Filesへの書き込み権限を持っている必要があります。セットアップが完了すると、プログラムファイルは、バイナリを他のバージョンに更新することを目的とした他のセットアップでのみ書き込み可能になります。

5
Hikari

実行可能ファイルをWindowsの%programfiles%フォルダーにインストールしてください-単純なMSIベースのインストールパッケージは、マシンにログオンする新しいユーザーに対してアクティブなセットアップを実行して、ユーザー固有のファイルとフォルダーをプロファイル%appdata%フォルダーに作成できます。 Internet Explorer、Adobeリーダーなどでこの動作が見られます。これらのアプリケーションがインストールされているマシンに初めてログオンしたときにポップアップするのは、小さなMSIインストーラーウィンドウです。 -ありがとう-システム管理者:)

0
AndyAdminCheese