次の方法で共有


インストール コンテキスト

Windows インストーラーは、コンピューターにパッケージをインストールして、コンピューターごととユーザーごとの 2 つのインストール コンテキストにインストールできます。 コンピューターのすべてのユーザーがアプリケーションにアクセスして使用できるようにするには、パッケージのマシンごとのインストールが必要です。 マシンごとのインストールでは、すべてのユーザーに影響を与えるシステムが変更されるため、特権が制限されている標準ユーザーは、最初にアクセス許可を取得しなくても、マシンごとのコンテキストにパッケージをインストールできなくなる可能性があります。

インストール コンテキストを指定するには、ユーザーごとまたはコンピューターごとのインストール用のパッケージを作成し、ALLUSERSMSIINSTALLPERUSER プロパティを使用します。 これらのプロパティに基づいて、Windows インストーラーは、フォルダーのプロパティと登録の値を、ユーザーごとまたはコンピューターごとのコンテキストの場所に自動的にリダイレクトします。

手記

MSIINSTALLPERUSER プロパティは、Windows インストーラー 5.0 および Windows Server 2008 R2 および Windows 7 以降で使用でき、コンピューターごとまたはユーザーごとのコンテキストでインストールできる 1 つのパッケージの開発を容易にすることができます。 インストール時にインストール コンテキストを選択する機能をユーザーに提供するデュアル用途パッケージの開発については、「単一パッケージ作成」を参照してください。 ALLUSERS の値が 2 でない場合、Windows インストーラーは MSIINSTALLPERUSER プロパティを無視します。 Windows インストーラーは、コンピューターごとのコンテキストでインストールする場合、ALLUSERS の値を常に 1 にリセットし、ALLUSERS の値をユーザーごとのコンテキストでインストールするときに空の文字列 ("") にリセットします。

 

ショートカット リダイレクト

次の表は、コンピューターごとのインストール コンテキストとユーザーごとのインストール コンテキストのショートカットの場所を比較しています。

Per-Machine インストール コンテキスト (ALLUSERS=1) Per-User インストール コンテキスト (ALLUSERS="")
アプリケーションは、コンピューターのすべてのユーザーのコントロール パネルの [プログラムの追加と削除] の下に表示されます。
アプリケーションは、アプリケーションをインストールしたユーザーのコントロール パネルの [プログラムの追加と削除] にのみ表示されます。
ショートカットは、すべてのユーザー プロファイルにインストールされます。
ショートカットは、そのユーザーのプロファイルにのみインストールされます。
アイコンと変換は、\Installer\{ProductCode} %WINDOWS%に格納されます。
アイコンと変換は、%USERPROFILE%\Application Data\Microsoft\Installer\{ProductCode GUID} に格納されます。

 

レジストリ リダイレクト

次の表は、コンピューターごとのインストール コンテキストとユーザーごとのインストール コンテキストのレジストリ エントリの場所を比較します。

Per-Machine インストール コンテキスト (ALLUSERS=1) Per-User インストール コンテキスト (ALLUSERS="")
Windows インストーラーは、Registry テーブルに入力されたレジストリ値を書き込むか削除し、RemoveRegistry テーブルを し、値を HKEY_LOCAL_MACHINE の [ルート] 列に -1 します。
Windows インストーラーは、Registry テーブルに入力されたレジストリ値を書き込むか削除し、RemoveRegistry テーブルを し、値を HKEY_CURRENT_USER の [ルート] 列に -1 します。
Windows インストーラーは、Registry テーブルに入力されたレジストリ値を書き込むか、削除します。RemoveRegistry テーブル、値 msidbRegistryRootClassesRoot (0) はルート列 HKLM\Software\Classesの下にあります。
Windows インストーラーは、hkCU \Software\クラスのの下にあるルート列の msidbRegistryRootClassesRoot (0) の値を使用して、レジストリ テーブルと RemoveRegistry テーブルに入力されたレジストリ値書き込みまたは削除します。
COM 登録は、HKLM \ソフトウェア\クラスに書き込まれます。
COM 登録は、HKCU \ソフトウェア\クラスに書き込まれます。

 

フォルダー リダイレクト

Windows インストーラーは、フォルダー プロパティの値を、インストール コンテキストのそれぞれのフォルダーの完全なパスに設定します。

手記

フォルダーは、KNOWNFOLDERID および CSIDL 定数によって識別されます。 Windows Vista 以降では、アプリケーションでは、SHGetKnownFolderPath 関数と KNOWNFOLDERID を使用して、特別なフォルダーへの完全なパスを決定する必要があります。 SHGetFolderPath 関数と定数特殊項目 ID (CSIDL) を使用する既存のアプリケーションは引き続き機能します。

 

次の表は、Windows インストーラーがマシンごとまたはユーザーごとのインストール コンテキストでパッケージをインストールするときに使用されるフォルダーの場所を比較したものです。

Per-Machine インストール コンテキスト (ALLUSERS=1) Per-User インストール コンテキスト (ALLUSERS="")
DesktopFolderすべてのユーザーのデスクトップ フォルダーの完全なパス。
FOLDERID_PublicDesktop (CSIDL_COMMON_DESKTOPDIRECTORY)
DesktopFolder現在のユーザーのデスクトップ フォルダーの完全なパス。
FOLDERID_Desktop (CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY)
ProgramMenuFolderすべてのユーザーの Program Menu フォルダーの完全なパス。
FOLDERID_CommonPrograms (CSIDL_COMMON_PROGRAMS)
ProgramMenuFolder現在のユーザーの Program Menu フォルダーの完全なパス。
FOLDERID_Programs (CSIDL_PROGRAMS)
StartMenuFolderすべてのユーザーのスタート メニュー フォルダーの完全なパス。
FOLDERID_CommonStartMenu (CSIDL_COMMON_STARTMENU)
StartMenuFolder現在のユーザーのスタート メニュー フォルダーの完全なパス。
FOLDERID_StartMenu (CSIDL_STARTMENU)
StartUpFolderすべてのユーザーの [スタートアップ] フォルダーの完全なパス。
FOLDERID_CommonStartup (CSIDL_COMMON_STARTUP)
StartUpFolder現在のユーザーの [スタートアップ] フォルダーの完全なパス。
FOLDERID_Startup (CSIDL_STARTUP)
TemplateFolderすべてのユーザーの Templates フォルダーの完全なパスです。
FOLDERID_CommonTemplates (CSIDL_COMMON_TEMPLATES)
TemplateFolder現在のユーザーの Templates フォルダーの完全なパスです。
FOLDERID_Templates (CSIDL_TEMPLATES)
AdminToolsFolderすべてのユーザーの管理ツール フォルダーの完全なパス。
FOLDERID_CommonAdminTools (CSIDL_COMMON_ADMINTOOLS)
AdminToolsFolder現在のユーザーの管理ツール フォルダーの完全なパス。
FOLDERID_AdminTools (CSIDL_ADMINTOOLS)
AppDataFolderProgram Menu フォルダーの完全なパスです。
Windows Vista 以降 : 移動フォルダーの完全なパス。

FOLDERID_RoamingAppData (CSIDL_APPDATA)
AppDataFolderProgram Menu フォルダーの完全なパスです。
Windows Vista 以降 : 移動フォルダーの完全なパス。

FOLDERID_RoamingAppData (CSIDL_APPDATA)
CommonAppDataFolderすべてのユーザーのアプリケーション データを含むフォルダーの完全なパス。
FOLDERID_ProgramData (CSIDL_COMMON_APPDATA)
CommonAppDataFolderすべてのユーザーのアプリケーション データを含むフォルダーの完全なパス。
FOLDERID_ProgramData (CSIDL_COMMON_APPDATA)
FavoritesFolder現在のユーザーの [お気に入り] フォルダーの完全なパス。
FOLDERID_Favorites (CSIDL_FAVORITES)
FavoritesFolder現在のユーザーの [お気に入り] フォルダーの完全なパス。
FOLDERID_Favorites (CSIDL_FAVORITES)
PersonalFolder現在のユーザーの個人用ドキュメント フォルダーまたは個人用フォルダーの完全なパス。
Windows Vista 以降: 現在のユーザーの [ドキュメント] フォルダーの完全なパス。

FOLDERID_Documents (CSIDL_PERSONAL)
PersonalFolder現在のユーザーの個人用ドキュメント フォルダーまたは個人用フォルダーの完全なパス。
Windows Vista 以降: 現在のユーザーの [ドキュメント] フォルダーの完全なパス。

FOLDERID_Documents (CSIDL_PERSONAL)
SendToFolderSendTo フォルダーの完全なパス。
FOLDERID_SendTo (CSIDL_SENDTO)
SendToFolderSendTo フォルダーの完全なパス。
FOLDERID_SendTo (CSIDL_SENDTO)
FontsFolderシステム フォント フォルダーの完全なパス。
FOLDERID_Fonts (CSIDL_FONTS)
FontsFolderシステム フォント フォルダーの完全なパス。
FOLDERID_Fonts (CSIDL_FONTS)
ProgramFilesFolder32 ビット バージョンの Windows: プロパティの値は、すべてのユーザーの Program Files フォルダーへの完全なパスです (たとえば、%ProgramFiles%.このフォルダーの識別子は FOLDERID_ProgramFiles (CSIDL_PROGRAM_FILES.識別子 FOLDERID_ProgramFilesFOLDERID_ProgramFilesX86 は同じフォルダーを表します。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。
64 ビット バージョンの Windows: プロパティ値は、すべてのユーザーの Program Files (x86) フォルダーへの完全なパスです (たとえば、%ProgramFiles(x86)%)。 このフォルダーの識別子は FOLDERID_ProgramFilesX86 (CSIDL_PROGRAM_FILESX86.このフォルダー内のファイルには、すべてのユーザーがアクセスできます。
ProgramFilesFolderWindows Server 2008 R2 および Windows 7: プロパティの値は、現在のユーザーの Programs フォルダーの完全なパスです (たとえば、%LocalAppData%\Programs)。このフォルダーの識別子は、32 ビットおよび 64 ビット システムで FOLDERID_UserProgramFiles されます。 FOLDERID_UserProgramFilesに相当する CSIDL 識別子はありません。 このフォルダー内のファイルには、このフォルダーをインストールしたユーザーのみがアクセスできます。
Windows Server 2008 以前、および Windows Vista 以前: ユーザーごとの対応フォルダーは使用できません。 パスは、マシンごとのコンテキスト (たとえば、%ProgramFiles% または %ProgramFiles(x86)%) の場合と同じです。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。

CommonFilesFolder32 ビット バージョンの Windows: プロパティの値は、すべてのユーザーの Common Files フォルダーへの完全なパスです (たとえば、%ProgramFiles%\Common Files)。このフォルダーの識別子は FOLDERID_ProgramFilesCommon (CSIDL_PROGRAM_FILES_COMMON.識別子 FOLDERID_ProgramFilesCommonFOLDERID_ProgramFilesCommonX86 は同じフォルダーを表します。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。
64 ビット バージョンの Windows: プロパティ値は、すべてのユーザーの Common Files フォルダーへの完全なパスです (たとえば、%ProgramFiles(x86)%\Common Files)。 このフォルダーの識別子は FOLDERID_ProgramFilesCommonX86 (CSIDL_PROGRAM_FILES_COMMONX86.このフォルダー内のファイルには、すべてのユーザーがアクセスできます。
CommonFilesFolderWindows Server 2008 R2 および Windows 7: プロパティの値は、現在のユーザーの Common フォルダーの完全なパスです (たとえば、%LocalAppData%\Programs\Common)。このフォルダーの識別子は、32 ビットおよび 64 ビット システムで FOLDERID_UserProgramFilesCommon されます。 FOLDERID_UserProgramFilesCommonに相当する CSIDL 識別子はありません。 このフォルダー内のファイルには、このフォルダーをインストールしたユーザーのみがアクセスできます。
Windows Server 2008 以前、および Windows Vista 以前: ユーザーごとの対応フォルダーは使用できません。 パスは、コンピューターごとのコンテキストと同じです (たとえば、\Common Files または %ProgramFiles(x86)%\Common Files など %ProgramFiles%)。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。

ProgramFiles64Folderプロパティの値は、すべてのユーザーの Program Files フォルダーへの完全なパスです (例: %ProgramFiles%.このフォルダーの識別子は FOLDERID_ProgramFilesX64です。 FOLDERID_ProgramFilesX64と同等の CSIDL 識別子はありません。 これは、64 ビット コンポーネント用の定義済みフォルダーであり、64 ビット システムに適用されます。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。
ProgramFiles64FolderWindows 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 識別子はありません。 このフォルダー内のファイルには、すべてのユーザーがアクセスできます。
CommonFiles64FolderWindows Server 2008 R2 および Windows 7: プロパティの値は、現在のユーザーの Common フォルダーの完全なパスです (たとえば、%LocalAppData%\Programs\Common)。このフォルダーの識別子は FOLDERID_UserProgramFilesCommonです。 FOLDERID_UserProgramFilesCommonに相当する CSIDL 識別子はありません。 このフォルダー内のファイルには、このフォルダーをインストールしたユーザーのみがアクセスできます。
Windows Server 2008 以前、および Windows Vista 以前: ユーザーごとの対応フォルダーは使用できません。 パスは、コンピューターごとのコンテキストと同じです (たとえば、%ProgramFiles%\Common Files)。このフォルダー内のファイルには、すべてのユーザーがアクセスできます。

WindowsFolderWindows フォルダーの完全なパス。
FOLDERID_Windows (CSIDL_WINDOWS)
WindowsFolderWindows フォルダーの完全なパス。
FOLDERID_Windows (CSIDL_WINDOWS)
SystemFolderSystem フォルダーの完全なパス。
FOLDERID_SystemX86 (CSIDL_SYSTEMX86)
SystemFolderSystem フォルダーの完全なパス。
FOLDERID_SystemX86 (CSIDL_SYSTEMX86)
LocalAppDataFolderローカル (非roaming) アプリケーションを含むフォルダーの完全なパス。
FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA)
LocalAppDataFolderローカル (非roaming) アプリケーションを含むフォルダーの完全なパス。
FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA)
MyPicturesFolderPictures フォルダーまたは My Pictures フォルダーの完全なパスです。
FOLDERID_Pictures (CSIDL_MYPICTURES)
MyPicturesFolderPictures フォルダーまたは My Pictures フォルダーの完全なパスです。
FOLDERID_Pictures (CSIDL_MYPICTURES)
PrintHoodFolderPrintHood フォルダーの完全なパス。
FOLDERID_PrintHood (CSIDL_PRINTHOOD)
PrintHoodFolderPrintHood フォルダーの完全なパス。
FOLDERID_PrintHood (CSIDL_PRINTHOOD)
NetHoodFolderNetHood フォルダーの完全なパスです。
FOLDERID_NetHood (CSIDL_NETHOOD)
NetHoodFolderNetHood フォルダーの完全なパスです。
FOLDERID_NetHood (CSIDL_NETHOOD)
RecentFolderRecent フォルダーの完全なパスです。
FOLDERID_Recent (CSIDL_RECENT)
RecentFolderRecent フォルダーの完全なパスです。
FOLDERID_Recent (CSIDL_RECENT)

 

手記

アプリケーションは、MsiEnumProducts を呼び出すか、MsiEnumProductsEx関数をして、システムにインストールされているすべての製品を列挙できます。 その後、アプリケーションは、MsiGetProductInfoEx を呼び出すか、MsiGetProductInfo関数をすることによって、これらの製品のインストール コンテキストに関する情報を取得できます。 詳細については、「インストール コンテキスト の決定を参照してください。