管理安装源

拥有管理权限的用户和应用程序可以检索和修改系统上 Windows Installer 应用程序与修补程序的网络、URL 和媒体源列表信息。

Windows Installer 2.0:不支持。 管理员无法读取、重新排序或替换源列表中的条目,并且无法修改或检索源列表属性。 可以管理网络源,但无法管理 URL 或媒体源。 管理员只能管理每台计算机的应用程序或者为当前每个用户安装的应用程序的源列表。 这可以防止管理员使用 Windows Installer 3.0 以前的版本来管理系统中所有用户的源列表信息。

Windows Installer 3.0 及更高版本:拥有管理员权限的用户和应用程序可以检索和修改系统上为所有用户安装的 Windows Installer 应用程序与修补程序的源列表信息。 源列表功能可用于管理网络、URL 和媒体源的源列表和源列表属性。 安装程序可以通过外部过程将源列表重新排序。

拥有管理权限的用户和应用程序可以读取和修改以下类型的源列表信息:

  • 系统上为所有用户安装的应用程序和修补程序的源列表。
  • 除应用程序源之外的修补程序源的源列表。
  • 除网络源之外的 URL 和媒体源的源列表。
  • 源列表属性,例如 MEDIAPACKAGEPATHDiskPrompt、LastUsedSource、LastUsedType 和 PackageName。

源列表函数可以通过指定安装上下文和用户上下文来限制查找的源列表范围。 有三种可能的安装上下文:每用户(非托管)、每计算机和每用户托管。 用户上下文可以是系统中的特定用户或所有用户。

非管理员无法修改另一用户的每用户(托管或非托管)上下文中的应用程序或修补程序实例的源列表。 非管理员可以修改以下上下文中安装的应用程序或修补程序实例的源列表:

管理员可以修改非管理员能够修改的任何源列表。 此外,管理员和拥有管理权限的应用程序可以修改以下上下文中安装的应用程序或修补程序的源列表:

  • 每计算机上下文。
  • 他们自己的每用户(非托管)上下文或他们自己的每用户托管上下文。
  • 另一用户的每用户托管上下文。

注意

拥有管理权限的用户和应用程序无法修改安装在另一用户的每用户(非托管)上下文中的应用程序或修补程序实例的源列表。

 

管理产品和修补程序的网络和 URL 源

使用 MsiSourceListAddSourceEx 函数为特定上下文中的修补程序或应用程序添加网络和 URL 源的源列表或者将此列表重新排序。 使用 dwContext 参数指定安装上下文。 使用 szUserSid 参数指定用户上下文。

使用 MsiSourceListAddSourceEx 函数为尚未应用于指定上下文中的任何应用程序的修补程序创建源列表。 此操作在注册修补程序以获取提升的权限时非常有用。 有关为修补程序注册提升权限的详细信息,请参阅修补每用户托管应用程序

使用 MsiSourceListClearSource 函数删除指定上下文中应用程序或修补程序的现有源。 删除应用程序或修补程序的当前源会强制安装程序在下次需要某个源时搜索源的源列表。

使用 MsiSourceListEnumSources 函数枚举指定修补程序或应用程序的源列表中的源。

管理产品和修补程序的媒体源

使用 MsiSourceListAddMediaDisk 函数添加或更新已注册应用程序或修补程序的媒体源的磁盘信息。 每个条目由一个磁盘 ID 唯一标识。 如果该磁盘已存在,将使用新的卷标和磁盘提示值更新它。 如果该磁盘不存在,则使用新值创建新的磁盘条目。

使用 MsiSourceListClearMediaDisk 函数删除特定上下文中应用程序或修补程序的媒体源下的现有已注册磁盘。

使用 MsiSourceListEnumMediaDisks 函数枚举在应用程序或修补程序的媒体源下注册的磁盘列表。

检索和修改源列表信息

使用 MsiSourceListGetInfoMsiSourceListSetInfo 函数检索或修改有关特定上下文中应用程序或修补程序的源列表的信息。 使用 dwContext 参数指定安装上下文。 使用 szUserSid 参数指定用户上下文。

可以访问 MEDIAPACKAGEPATHDiskPrompt、LastUsedSource、LastUsedType 和 PackageName 等源列表属性。

注意

LastUsedType 源列表属性是只读的。 无法直接使用 MsiSourceListSetInfo 函数来设置该属性。

 

清除完整的源列表或强制源解析

使用 MsiSourceListClearAllEx 函数删除指定应用程序或修补程序实例的给定源类型的所有现有源。 如果修补程序未由同一上下文中的任何应用程序安装,则也会删除修补程序注册。 使用 dwContext 参数指定安装上下文。 使用 szUserSid 参数指定用户上下文。

使用 MsiSourceListForceResolutionEx 清除指定上下文中应用程序或修补程序上次使用的源条目。 此函数会删除名为 LastUsedSource 的属性的注册。 此函数不影响已注册的源列表。 清除 LastUsedSource 注册会强制安装程序在下次需要已注册的源时针对该源执行源解析。