LocalAppData にアプリケーションをインストールするという選択

GoogleChrome は ProgramFiles ではなく、LocalAppData(C:\Users\[ユーザー名]\AppData\ もしくは C:\Documents And Settings\[ユーザー名]\Local Settings\Application Data\)にインストールされる。
このLocalAppDataは(MSがどう考えるかわからないが)システムに影響を与えない個人向けのアプリケーションのデフォルトのインストール先の選択肢として検討すべきものであると思われる。

メリットとしては、

  1. アクセスに管理者権限(IntegrityLevel High)の必要がない
  2. 64bit環境のディレクトリリダイレクトの影響を受けない

などがある。

デメリットとしては、ユーザーごとのディレクトリであるため、マシン単位でのインストールが出来ない、共有DLLなどを配置することができない、ひとつのマシンに複数インストール可能で容量的に無駄、などがある。が、これはアプリケーションの特徴によっては特に問題とはならない場合がおおい。
インストール先のディスク容量は、最近のPCでは特に大きなアプリケーションでない限り無視して良い。個人製作のアプリなどではなおさらであろう。
共有DLLは確かに使えないが、最近は共有するがゆえのバージョン管理などが問題になり、サイドバイサイドといった新しい機構が導入されている。これを「共有はしない、DLLは常に自exeからの相対で探す」というポリシーにすれば、バージョンの複雑な問題も未然に回避できることになる。
マシン単位でのインストールはできないが、それは「個人でインストールしたものが他人によってかってに削除、更新されることがない」ということでもあり、一概にデメリットであるということはできない。勝手にアプリケーションをインストールされては困るという管理者側の要求もあるかもしれないが、どちらを取るべきかはアプリケーションの質によるものであろう。

アプリケーションの作りとしては、インストールパスがどこであるかの前提などは持たせず、どこに配置しても相対パスで正しくリソースにアクセス出きるようにし、インストール先はユーザーが決定すべきものである。

自分でインストール先を決定できるユーザーにとっては LocalAppData にアプリケーションがインストールされることは直感に反する挙動であり、それは避けるべきであるのだが、多くのユーザーがインストール先を自分で決定するだけのリテラシーを持たないというのも現実であり、そのようなユーザーにとってはアプリケーションがどこにインストールされようが実際に問題とはならないということも事実である。
アプリケーションの性質、ユーザーの特性によっては、大多数のユーザーが後者であることも十分考えられる。

以上のような理由から、アプリケーションの性質によってはデフォルトのインストール先を LocalAppData 以下にすることは十分検討すべきであると思われる。


UserProfile内の、(Localではない)AppData(C:\Users\[ユーザー名]\AppData\Roaming もしくは C:\Documents and Settings\[ユーザー名]\Application Data)にはアプリケーションは配置してはならない。ローミング環境で問題になる。