インストール ソースの管理
管理特権を持つユーザーとアプリケーションは、システム上の Windows インストーラー アプリケーションおよびパッチのネットワーク、URL、メディア ソース リスト情報を取得および変更できます。
Windows インストーラー 2.0: サポートされていません。 管理者は、ソース リスト内のエントリの読み取り、並べ替え、または置換を行うことはできません。また、ソース リストのプロパティを変更または取得することもできません。 ネットワーク ソースは管理できますが、URL またはメディア ソースは管理できません。 管理者は、マシン単位のアプリケーションのソース リスト、または現在のユーザーごとにインストールされたアプリケーションのソース リストのみを管理できます。 これにより、Windows インストーラー バージョン 3.0 より前のバージョンを使用している管理者は、システム内のすべてのユーザーのソース リスト情報を管理できなくなります。
Windows インストーラー 3.0 以降: 管理者特権を持つユーザーとアプリケーションは、すべてのユーザーについて、システムにインストールされた Windows インストーラー アプリケーションおよびパッチのソース リスト情報を取得および変更できます。 ソース リスト関数を使用すると、ネットワーク、URL、およびメディア ソースのソース リストとソース リスト プロパティを管理できます。 インストーラーでは、外部プロセスのソース リストを並べ替えることができます。
管理特権を持つユーザーとアプリケーションは、次の種類のソース リスト情報を読み取りおよび変更できます。
- システム上のすべてのユーザーに対してインストールされたアプリケーションおよびパッチのソース リスト。
- アプリケーション ソースとは別に存在するパッチ ソースのソース リスト。
- ネットワーク ソースとは別に存在する URL およびメディア ソースのソース リスト。
- MEDIAPACKAGEPATH、DiskPrompt、LastUsedSource、LastUsedType、PackageName などのソース リスト プロパティ。
ソース リスト関数では、インストール コンテキストとユーザー コンテキストを指定することで、検出されるソース リストのスコープを制限できます。 インストール コンテキストとして考えられるのは、ユーザー単位 (アンマネージド)、マシン単位、ユーザー単位 (マネージド) の 3 種類です。 ユーザー コンテキストには、システム上の特定のユーザーまたはすべてのユーザーを指定できます。
管理者以外のユーザーは、別のユーザーのユーザー単位 (マネージドまたはアンマネージド) コンテキストで存在するアプリケーションまたはパッチのインスタンスのソース リストを変更できません。 管理者以外のユーザーは、次のコンテキストでインストールされたアプリケーションまたはパッチのインスタンスのソース リストを変更できます。
- 独自のユーザー単位 (アンマネージド) コンテキスト。
- マシン コンテキスト。ただし、DisableBrowse、AllowLockdownBrowse、および AlwaysInstallElevated ポリシーでアプリケーションまたはパッチ ソースの参照が許可される場合に限ります。
- 独自のユーザー単位 (マネージド) コンテキスト。ただし、DisableBrowse、AllowLockdownBrowse、および AlwaysInstallElevated ポリシーでアプリケーションまたはパッチ ソースの参照が許可される場合に限ります。
管理者は、管理者以外が変更できるすべてのソース リストを変更できます。 また、管理特権を持つ管理者とアプリケーションは、次のコンテキストでインストールされたアプリケーションまたはパッチのソース リストを変更できます。
- マシン単位コンテキスト。
- 独自のユーザー単位 (アンマネージド) コンテキスト、または独自のユーザー単位 (マネージド) コンテキスト。
- 別のユーザーのユーザー単位 (マネージド) コンテキスト。
Note
管理権限を持つユーザーとアプリケーションは、別のユーザーのユーザー単位 (アンマネージド) コンテキストでインストールされたアプリケーションまたはパッチのインスタンスのソース リストを変更できません。
製品とパッチのネットワークおよび URL ソースの管理
特定のコンテキスト内のパッチまたはアプリケーションのネットワーク ソースおよび URL ソースのソース リストを追加または並べ替えするには、MsiSourceListAddSourceEx 関数を使用します。 インストール コンテキストを指定するには、dwContext パラメーターを使用します。 ユーザー コンテキストを指定するには、szUserSid パラメーターを使用します。
指定したコンテキスト内のアプリケーションにまだ適用されていないパッチのソース リストを作成するには、MsiSourceListAddSourceEx 関数を使用します。 これは、昇格された特権を持つパッチを登録する場合に役立ちます。 パッチの昇格された特権の登録の詳細については、「ユーザー単位 (マネージド) アプリケーションへのパッチの適用」を参照してください。
指定したコンテキスト内のアプリケーションまたはパッチの既存のソースを削除するには、MsiSourceListClearSource 関数を使用します。 アプリケーションまたはパッチの現在のソースを削除すると、次にソースが必要になった場合に、インストーラーでソース リスト内のソースを検索する必要があります。
指定したパッチまたはアプリケーションのソース リスト内のソースを列挙するには、MsiSourceListEnumSources 関数を使用します。
製品とパッチのメディア ソースの管理
登録済みのアプリケーションまたはパッチのメディア ソースのディスク情報を追加または更新するには、MsiSourceListAddMediaDisk 関数を使用します。 各エントリは、ディスク ID によって一意に識別されます。 ディスクが既に存在する場合は、新しいボリューム ラベルとディスク プロンプトの値で更新されます。 ディスクが存在しない場合は、新しい値を使用して新しいディスク エントリが作成されます。
特定のコンテキスト内のアプリケーションまたはパッチのメディア ソースに登録された既存のディスクを削除するには、MsiSourceListClearMediaDisk 関数を使用します。
アプリケーションまたはパッチのメディア ソースに登録されたディスクのリストを列挙するには、MsiSourceListEnumMediaDisks 関数を使用します。
ソース リスト情報の取得と変更
特定のコンテキスト内のアプリケーションまたはパッチのソース リストに関する情報を取得または変更するには、MsiSourceListGetInfo 関数と MsiSourceListSetInfo 関数を使用します。 インストール コンテキストを指定するには、dwContext パラメーターを使用します。 ユーザー コンテキストを指定するには、szUserSid パラメーターを使用します。
MEDIAPACKAGEPATH、DiskPrompt、LastUsedSource、LastUsedType、PackageName などのソース リスト プロパティにアクセスできます。
Note
LastUsedType ソース リスト プロパティは読み取り専用です。 MsiSourceListSetInfo 関数を使用して直接設定することはできません。
完全なソース リストをクリアするか、ソース解決を強制する
指定したアプリケーションまたはパッチ インスタンスについて特定のソースの種類の既存のソースをすべて削除するには、MsiSourceListClearAllEx 関数を使用します。 同じコンテキスト内のアプリケーションによってパッチがインストールされていない場合、パッチの登録も削除されます。 インストール コンテキストを指定するには、dwContext パラメーターを使用します。 ユーザー コンテキストを指定するには、szUserSid パラメーターを使用します。
指定したコンテキスト内のアプリケーションまたはパッチに対して最後に使用されたソース エントリをクリアするには、MsiSourceListForceResolutionEx を使用します。 この関数では、LastUsedSource というプロパティの登録が削除されます。 この関数は、登録済みのソース リストには影響を与えません。 LastUsedSource 登録をクリアすると、次にソースが必要になった場合に、インストーラーで登録済みソースに対してソース解決が強制的に実行されます。