インストール コンテキスト
Windows インストーラーを使用すると、マシンごととユーザーごとの 2 つのインストール コンテキストでコンピューターにパッケージをインストールできます。 そのコンピューターのすべてのユーザーがアプリケーションにアクセスして使用できるようにするには、パッケージのマシンごとのインストールが必要です。 マシンごとのインストールは、すべてのユーザーに影響を与えるシステムへの変更を行うため、権限が制限されている標準ユーザーは、最初にアクセス許可を取得しないと、マシンごとのコンテキストにパッケージをインストールできない場合があります。
インストール コンテキストを指定するには、ユーザーごとまたはマシンごとのインストール用にパッケージを作成し、ALLUSERS と MSIINSTALLPERUSER の各プロパティを使用します。 これらのプロパティに基づいて、Windows インストーラーは、フォルダーのプロパティと登録の値を、ユーザーごとまたはコマシンごとのコンテキストの場所に自動的にリダイレクトします。
Note
Windows インストーラー 5.0、Windows Server 2008 R2、Windows 7 以降で利用できる MSIINSTALLPERUSER プロパティを使用すると、マシンごとまたはユーザーごとのコンテキストでインストールできる単一のパッケージの開発が容易になります。 インストール時にインストール コンテキストを選択できる機能をユーザーに提供する二重目的パッケージの開発については、「単一パッケージの作成」を参照してください。 ALLUSERS の値が 2 でない場合、Windows インストーラーでは MSIINSTALLPERUSER プロパティは無視されます。 Windows インストーラーでは、マシンごとのコンテキストでインストールする場合は、ALLUSERS の値は常に 1 にリセットされ、ユーザーごとのコンテキストでインストールする場合は、ALLUSERS の値は空の文字列 ("") にリセットされます。
ショートカット リダイレクト
次の表は、マシンごととユーザーごとのインストール コンテキストのショートカットの場所を比較したものです。
マシンごとのインストール コンテキスト (ALLUSERS=1) | ユーザーごとのインストール コンテキスト (ALLUSERS="") |
---|---|
アプリケーションは、コンピューターのすべてのユーザーのコントロール パネルの [プログラムの追加と削除] の下に表示されます。 |
アプリケーションは、そのアプリケーションをインストールしたユーザーのコントロール パネルの [プログラムの追加と削除] にのみ表示されます。 |
ショートカットは、All Users プロファイルにインストールされます。 |
ショートカットは、そのユーザーのプロファイルにのみインストールされます。 |
アイコンと変換は、%WINDOWS%\Installer\{ProductCode} に保存されます。 |
アイコンと変換は %USERPROFILE%\Application Data\Microsoft\Installer\{ProductCode GUID} に保存されます。 |
レジストリ リダイレクト
次の表は、マシンごとおよびユーザーごとのインストール コンテキストのレジストリ エントリの場所を比較したものです。
マシンごとのインストール コンテキスト (ALLUSERS=1) | ユーザーごとのインストール コンテキスト (ALLUSERS="") |
---|---|
HKEY_LOCAL_MACHINE の下の Root 列の値が -1 の Registry テーブルと RemoveRegistry テーブルに入力されたレジストリ値が、Windows インストーラによって書き込まれるか削除されます。 |
HKEY_CURRENT_USER の下の Root 列の値が -1 の Registry テーブルと RemoveRegistry テーブルに入力されたレジストリ値が、Windows インストーラによって書き込まれるか削除されます。 |
HKLM\Software\Classes の下の Root 列の値が msidbRegistryRootClassesRoot (0) の Registry テーブルと RemoveRegistry テーブルに入力されたレジストリ値が、Windows インストーラによって書き込まれるか削除されます。 |
HKCU\Software\Classes の下の Root 列の値が msidbRegistryRootClassesRoot (0) の Registry テーブルと RemoveRegistry テーブルに入力されたレジストリ値が、Windows インストーラによって書き込まれるか削除されます。 |
COM 登録は HKLM\Software\Classes に書き込まれます。 |
COM 登録は HKCU\Software\Classes に書き込まれます。 |
フォルダー リダイレクト
Windows インストーラーによって、フォルダー プロパティの値が、インストール コンテキストのそれぞれのフォルダーの完全なパスに設定されます。
Note
フォルダーは、KNOWNFOLDERID および CSIDL 定数によって識別されます。 Windows Vista 以降では、アプリケーションで SHGetKnownFolderPath 関数と KNOWNFOLDERID を使用して、特別なフォルダーへの完全なパスを決定する必要があります。 SHGetFolderPath 関数と定数特殊項目 ID (CSIDL) を使用する既存のアプリケーションは引き続き機能します。
次の表は、マシンごとまたはユーザーごとのインストール コンテキストでパッケージをインストールするときに Windows インストーラーで使用されるフォルダーの場所を比較したものです。
マシンごとのインストール コンテキスト (ALLUSERS=1) | ユーザーごとのインストール コンテキスト (ALLUSERS="") |
---|---|
DesktopFolder: すべてのユーザーの Desktop フォルダーの完全なパス。 FOLDERID_PublicDesktop (CSIDL_COMMON_DESKTOPDIRECTORY) |
DesktopFolder: 現在のユーザーの Desktop フォルダーの完全なパス。 FOLDERID_Desktop (CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY) |
ProgramMenuFolder: すべてのユーザーの Program Menu フォルダーの完全なパス。 FOLDERID_CommonPrograms (CSIDL_COMMON_PROGRAMS) |
ProgramMenuFolder: 現在のユーザーの Program Menu フォルダーの完全なパス。 FOLDERID_Programs (CSIDL_PROGRAMS) |
StartMenuFolder: すべてのユーザーの Start Menu フォルダーの完全なパス。 FOLDERID_CommonStartMenu (CSIDL_COMMON_STARTMENU) |
StartMenuFolder: 現在のユーザーの Start Menu フォルダーの完全なパス。 FOLDERID_StartMenu (CSIDL_STARTMENU) |
StartUpFolder: すべてのユーザーの Start Up フォルダーの完全なパス。 FOLDERID_CommonStartup (CSIDL_COMMON_STARTUP) |
StartUpFolder: 現在のユーザーの Start Up フォルダーの完全なパス。 FOLDERID_Startup (CSIDL_STARTUP) |
TemplateFolder: すべてのユーザーの Templates フォルダーの完全なパス。 FOLDERID_CommonTemplates (CSIDL_COMMON_TEMPLATES) |
TemplateFolder: 現在のユーザーの Templates フォルダーの完全なパス。 FOLDERID_Templates (CSIDL_TEMPLATES) |
AdminToolsFolder: すべてのユーザーの Admin Tools フォルダーの完全なパス。 FOLDERID_CommonAdminTools (CSIDL_COMMON_ADMINTOOLS) |
AdminToolsFolder: 現在のユーザーの Admin Tools フォルダーの完全なパス。 FOLDERID_AdminTools (CSIDL_ADMINTOOLS) |
AppDataFolder: Program Menu フォルダーの完全なパス。 Windows Vista 以降: Roaming フォルダーの完全なパス。 FOLDERID_RoamingAppData (CSIDL_APPDATA) |
AppDataFolder: Program Menu フォルダーの完全なパス。 Windows Vista 以降: Roaming フォルダーの完全なパス。 FOLDERID_RoamingAppData (CSIDL_APPDATA) |
CommonAppDataFolder: すべてのユーザーのアプリケーション データを含むフォルダーの完全なパス。 FOLDERID_ProgramData (CSIDL_COMMON_APPDATA) |
CommonAppDataFolder: すべてのユーザーのアプリケーション データを含むフォルダーの完全なパス。 FOLDERID_ProgramData (CSIDL_COMMON_APPDATA) |
FavoritesFolder: 現在のユーザーの Favorites フォルダーの完全なパス。 FOLDERID_Favorites (CSIDL_FAVORITES) |
FavoritesFolder: 現在のユーザーの Favorites フォルダーの完全なパス。 FOLDERID_Favorites (CSIDL_FAVORITES) |
PersonalFolder現在のユーザーの My Documents フォルダーまたは Personal フォルダーの完全なパス。 Windows Vista 以降: 現在のユーザーの Documents フォルダーの完全なパス。 FOLDERID_Documents (CSIDL_PERSONAL) |
PersonalFolder現在のユーザーの My Documents フォルダーまたは Personal フォルダーの完全なパス。 Windows Vista 以降: 現在のユーザーの Documents フォルダーの完全なパス。 FOLDERID_Documents (CSIDL_PERSONAL) |
SendToFolder: SendTo フォルダーの完全なパス。 FOLDERID_SendTo (CSIDL_SENDTO) |
SendToFolder: SendTo フォルダーの完全なパス。 FOLDERID_SendTo (CSIDL_SENDTO) |
FontsFolder: System Fonts フォルダーの完全なパス。 FOLDERID_Fonts (CSIDL_FONTS) |
FontsFolder: System Fonts フォルダーの完全なパス。 FOLDERID_Fonts (CSIDL_FONTS) |
ProgramFilesFolder: 32 ビット バージョンの Windows: このプロパティ値は、すべてのユーザーの Program Files フォルダーへの完全なパスです (例: %ProgramFiles%)。このフォルダーの識別子は FOLDERID_ProgramFiles (CSIDL_PROGRAM_FILES) です。識別子 FOLDERID_ProgramFiles と FOLDERID_ProgramFilesX86 は同じフォルダーを表します。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 64 ビット バージョンの Windows: このプロパティ値は、すべてのユーザーの Program Files (x86) フォルダーへの完全なパスです (例: %ProgramFiles(x86)%)。 このフォルダーの識別子は FOLDERID_ProgramFilesX86 (CSIDL_PROGRAM_FILESX86) です。このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 |
ProgramFilesFolder: Windows Server 2008 R2 および Windows 7: このプロパティ値は、現在のユーザーの Programs フォルダーへの完全なパスです (例: %LocalAppData%\Programs)。このフォルダーの識別子は、32 ビットおよび 64 ビット システムでは FOLDERID_UserProgramFiles です。
FOLDERID_UserProgramFiles に相当する CSIDL 識別子はありません。 このフォルダー内のファイルには、このフォルダーをインストールしたユーザーのみがアクセスできます。 Windows Server 2008 以前、および Windows Vista 以前: ユーザーごとに使用できるフォルダーはありません。 このパスは、マシンごとのコンテキストと同じです (%ProgramFiles% や %ProgramFiles(x86)% など)。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 |
CommonFilesFolder: 32 ビット バージョンの Windows: このプロパティ値は、すべてのユーザーの Common Files フォルダーへの完全なパスです (例: %ProgramFiles%\Common Files)。このフォルダーの識別子は FOLDERID_ProgramFilesCommon (CSIDL_PROGRAM_FILES_COMMON) です。識別子 FOLDERID_ProgramFilesCommon と FOLDERID_ProgramFilesCommonX86 は同じフォルダーを表します。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 64 ビット バージョンの Windows: このプロパティ値は、すべてのユーザーの Common Files フォルダーへの完全なパスです (例: %ProgramFiles(x86)%\Common Files)。 このフォルダーの識別子は FOLDERID_ProgramFilesCommonX86 (CSIDL_PROGRAM_FILES_COMMONX86) です。このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 |
CommonFilesFolder: Windows Server 2008 R2 および Windows 7: このプロパティ値は、現在のユーザーの Common フォルダーへの完全なパスです (例: %LocalAppData%\Programs\Common)。このフォルダーの識別子は、32 ビットおよび 64 ビット システムでは FOLDERID_UserProgramFilesCommon です。
FOLDERID_UserProgramFilesCommon に相当する CSIDL 識別子はありません。 このフォルダー内のファイルには、このフォルダーをインストールしたユーザーのみがアクセスできます。 Windows Server 2008 以前、および Windows Vista 以前: ユーザーごとに使用できるフォルダーはありません。 このパスは、マシンごとのコンテキストと同じです (%ProgramFiles%\Common Files や %ProgramFiles(x86)%\Common Files など)。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 |
ProgramFiles64Folder: このプロパティ値は、すべてのユーザーの Program Files フォルダーへの完全なパスです (例: %ProgramFiles%)。このフォルダーの識別子は FOLDERID_ProgramFilesX64 です。
FOLDERID_ProgramFilesX64 に相当する CSIDL 識別子はありません。 これは 64 ビット コンポーネント用の定義済みフォルダーであり、64 ビット システムに適用されます。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 |
ProgramFiles64Folder: Windows Server 2008 R2 および Windows 7: このプロパティ値は、現在のユーザーの Programs フォルダーへの完全なパスです (例: %LocalAppData%\Programs)。このフォルダーの識別子は、FOLDERID_UserProgramFiles です。
FOLDERID_UserProgramFiles に相当する CSIDL 識別子はありません。 このフォルダー内のファイルには、このフォルダーをインストールしたユーザーのみがアクセスできます。 Windows Server 2008 以前、および Windows Vista 以前: ユーザーごとに使用できるフォルダーはありません。 このパスは、マシンごとのコンテキストと同じです (例: %ProgramFiles%)。このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 |
CommonFiles64Folderこのプロパティ値は、すべてのユーザーの Common Files フォルダーへの完全なパスです (例: %ProgramFiles%\Common Files)。これは 64 ビット コンポーネント用の定義済みフォルダーであり、64 ビット システムに適用されます。 このフォルダーの識別子は FOLDERID_ProgramFilesCommonX64 です。
FOLDERID_ProgramFilesCommonX64 に相当する CSIDL 識別子はありません。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 |
CommonFiles64Folder: Windows Server 2008 R2 および Windows 7: このプロパティ値は、現在のユーザーの Common フォルダーへの完全なパスです (例: %LocalAppData%\Programs\Common)。このフォルダーの識別子は、FOLDERID_UserProgramFilesCommon です。
FOLDERID_UserProgramFilesCommon に相当する CSIDL 識別子はありません。 このフォルダー内のファイルには、このフォルダーをインストールしたユーザーのみがアクセスできます。 Windows Server 2008 以前、および Windows Vista 以前: ユーザーごとに使用できるフォルダーはありません。 このパスは、マシンごとのコンテキストと同じです (例: %ProgramFiles%\Common Files)。このフォルダー内のファイルには、すべてのユーザーがアクセスできます。 |
WindowsFolder: Windows フォルダーの完全なパス。 FOLDERID_Windows (CSIDL_WINDOWS) |
WindowsFolder: Windows フォルダーの完全なパス。 FOLDERID_Windows (CSIDL_WINDOWS) |
SystemFolder: System フォルダーの完全なパス。 FOLDERID_SystemX86 (CSIDL_SYSTEMX86) |
SystemFolder: System フォルダーの完全なパス。 FOLDERID_SystemX86 (CSIDL_SYSTEMX86) |
LocalAppDataFolder: ローカル (非ローミング) アプリケーションを含むフォルダーの完全なパス。 FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA) |
LocalAppDataFolder: ローカル (非ローミング) アプリケーションを含むフォルダーの完全なパス。 FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA) |
MyPicturesFolder: Pictures または My Pictures フォルダーの完全なパス。 FOLDERID_Pictures (CSIDL_MYPICTURES) |
MyPicturesFolder: Pictures または My Pictures フォルダーの完全なパス。 FOLDERID_Pictures (CSIDL_MYPICTURES) |
PrintHoodFolder: PrintHood フォルダーの完全なパス。 FOLDERID_PrintHood (CSIDL_PRINTHOOD) |
PrintHoodFolder: PrintHood フォルダーの完全なパス。 FOLDERID_PrintHood (CSIDL_PRINTHOOD) |
NetHoodFolder: NetHood フォルダーの完全なパス。 FOLDERID_NetHood (CSIDL_NETHOOD) |
NetHoodFolder: NetHood フォルダーの完全なパス。 FOLDERID_NetHood (CSIDL_NETHOOD) |
RecentFolder: Recent フォルダーの完全なパス。 FOLDERID_Recent (CSIDL_RECENT) |
RecentFolder: Recent フォルダーの完全なパス。 FOLDERID_Recent (CSIDL_RECENT) |
Note
アプリケーションで、MsiEnumProducts または MsiEnumProductsEx 関数を呼び出して、システムにインストールされている製品を列挙できます。 次にアプリケーションで、MsiGetProductInfoEx または MsiGetProductInfo 関数を呼び出すことによって、これらの製品のインストール コンテキストに関する情報を取得できます。 詳細については、「インストール コンテキストの決定」を参照してください。