EnterpriseDesktopAppManagement 云解决方案提供商
EnterpriseDesktopAppManagement 配置服务提供程序用于处理企业桌面应用程序管理任务,例如查询已安装的企业应用程序、安装应用程序或删除应用程序。
应用程序安装可能需要一些时间才能完成,因此它们以异步方式完成。 Exec 命令完成后,客户端可以向管理服务器发送一个常规警报,其中包含一个状态,无论它是失败还是成功。 有关 SyncML 示例,请参阅 警报示例。
以下列表显示了 EnterpriseDesktopAppManagement 配置服务提供程序节点:
- ./Device/Vendor/MSFT/EnterpriseDesktopAppManagement
- ./User/Vendor/MSFT/EnterpriseDesktopAppManagement
Device/MSI
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI
产品类型为 MSI。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | “获取” |
Device/MSI/{ProductID}
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}
应用程序的 MSI 产品代码。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | 添加、删除、获取 |
需要原子 | True |
动态节点命名 | UniqueName:应用程序的 MSI 产品代码。 |
Device/MSI/{ProductID}/DownloadInstall
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/DownloadInstall
执行应用程序的下载和安装。 Windows 10版本 1703 服务版本中,向 XML 的 部分添加了<Enforcement>
一个新标记<DownloadFromAad>
。 默认值为 0 (不) 发送令牌。 此标记是可选的,如果服务器希望下载 URL 获取 AADUserToken,则需要将其设置为 1。
下面是一个示例:
<Enforcement>
<CommandLine>/quiet</CommandLine>
<TimeOut>5</TimeOut>
<RetryCount>3</RetryCount>
<RetryInterval>5</RetryInterval>
<DownloadFromAad>1</DownloadFromAad>
</Enforcement>
有关详细信息,请参阅 DownloadInstall XSD 架构。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | xml |
访问类型 | 添加、删除、Exec、Get、替换 |
Device/MSI/{ProductID}/InstallDate
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/InstallDate
应用程序的安装日期。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
Device/MSI/{ProductID}/InstallPath
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/InstallPath
应用程序的安装路径。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
Device/MSI/{ProductID}/LastError
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/LastError
应用程序安装过程中的最后一个错误代码。 这通常存储为 HRESULT 格式。 根据错误发生时发生的情况,这可能是执行 MSIExec.exe 的结果,也可能是 API 失败导致的错误。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | int |
访问类型 | “获取” |
Device/MSI/{ProductID}/LastErrorDesc
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/LastErrorDesc
包含最后一个错误代码说明。 将查找 LastErrorDesc 值,查找匹配的 LastError 值。 有时没有返回 LastErrorDesc。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
Device/MSI/{ProductID}/Name
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/Name
应用程序的名称。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
Device/MSI/{ProductID}/Publisher
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/Publisher
应用程序的发布者。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
Device/MSI/{ProductID}/Status
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/Status
应用程序的状态。 有效值:10-Initialized、20-Download 正在进行、25-Pending Download Retry、30-Download Failed、40-Download Completed、48-Pending User Session、50-Enforcement In Progress、55-Pending Enforcement Retry、60-Enforcement Failed、70-Enforcement Completed。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | int |
访问类型 | “获取” |
Device/MSI/{ProductID}/Version
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/Version
MSI 产品版本。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
Device/MSI/UpgradeCode
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1607 [10.0.14393] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/UpgradeCode
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | “获取” |
区分大小写 | True |
Device/MSI/UpgradeCode/{Guid}
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1607 [10.0.14393] 及更高版本 |
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/UpgradeCode/{Guid}
当管理员想要更新现有 MSI 应用时,网关 (或设备管理服务器) 使用此方法检测匹配的升级 MSI 产品。 如果安装了同一升级产品,则允许更新。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
动态节点命名 | ClientInventory |
用户/MSI
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI
产品类型为 MSI。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | “获取” |
User/MSI/{ProductID}
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}
应用程序的 MSI 产品代码。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | 添加、删除、获取 |
需要原子 | True |
动态节点命名 | UniqueName:应用程序的 MSI 产品代码。 |
User/MSI/{ProductID}/DownloadInstall
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/DownloadInstall
执行应用程序的下载和安装。 Windows 10版本 1703 服务版本中,向 XML 的 部分添加了<Enforcement>
一个新标记<DownloadFromAad>
。 默认值为 0 (不) 发送令牌。 此标记是可选的,如果服务器希望下载 URL 获取 AADUserToken,则需要将其设置为 1。
下面是一个示例:
<Enforcement>
<CommandLine>/quiet</CommandLine>
<TimeOut>5</TimeOut>
<RetryCount>3</RetryCount>
<RetryInterval>5</RetryInterval>
<DownloadFromAad>1</DownloadFromAad>
</Enforcement>
有关详细信息,请参阅 DownloadInstall XSD 架构。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | xml |
访问类型 | 添加、删除、Exec、Get、替换 |
User/MSI/{ProductID}/InstallDate
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/InstallDate
应用程序的安装日期。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
User/MSI/{ProductID}/InstallPath
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/InstallPath
应用程序的安装路径。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
User/MSI/{ProductID}/LastError
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/LastError
应用程序安装过程中的最后一个错误代码。 这通常存储为 HRESULT 格式。 根据错误发生时发生的情况,这可能是执行 MSIExec.exe 的结果,也可能是 API 失败导致的错误。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | int |
访问类型 | “获取” |
User/MSI/{ProductID}/LastErrorDesc
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/LastErrorDesc
包含最后一个错误代码说明。 将查找 LastErrorDesc 值,查找匹配的 LastError 值。 有时没有返回 LastErrorDesc。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
User/MSI/{ProductID}/Name
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/Name
应用程序的名称。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
User/MSI/{ProductID}/Publisher
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/Publisher
应用程序的发布者。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
User/MSI/{ProductID}/Status
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/Status
应用程序的状态。 有效值:10-Initialized、20-Download 正在进行、25-Pending Download Retry、30-Download Failed、40-Download Completed、48-Pending User Session、50-Enforcement In Progress、55-Pending Enforcement Retry、60-Enforcement Failed、70-Enforcement Completed。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | int |
访问类型 | “获取” |
User/MSI/{ProductID}/Version
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1511 [10.0.10586] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{ProductID}/Version
MSI 产品版本。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
User/MSI/UpgradeCode
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1607 [10.0.14393] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/UpgradeCode
描述框架属性:
属性名 | 属性值 |
---|---|
格式 | node |
访问类型 | “获取” |
区分大小写 | True |
User/MSI/UpgradeCode/{Guid}
范围 | 版本 | 适用的操作系统 |
---|---|---|
✅ 设备 ✅ 用户 |
✅ 专业版 ✅ 企业版 ✅ 教育版 ✅ Windows SE ✅ IoT 企业版/IoT 企业版 LTSC |
✅Windows 10版本 1607 [10.0.14393] 及更高版本 |
./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/UpgradeCode/{Guid}
当管理员想要更新现有 MSI 应用时,网关 (或设备管理服务器) 使用此方法检测匹配的升级 MSI 产品。 如果安装了同一升级产品,则允许更新。
描述框架属性:
属性名 | 属性值 |
---|---|
格式 |
chr (字符串) |
访问类型 | “获取” |
动态节点命名 | ClientInventory |
下载安装 XSD 架构
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Data">
<xs:complexType>
<xs:sequence>
<xs:element name="MsiInstallJob">
<xs:complexType>
<xs:sequence>
<xs:element name="Product">
<xs:complexType>
<xs:sequence>
<xs:element name="Download">
<xs:complexType>
<xs:sequence>
<xs:element name="ContentURLList">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="ContentURL" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Validation">
<xs:complexType>
<xs:sequence>
<xs:element name="FileHash" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Enforcement">
<xs:complexType>
<xs:sequence>
<xs:element name="CommandLine" type="xs:string" />
<xs:element name="TimeOut" type="xs:unsignedByte" />
<xs:element name="RetryCount" type="xs:unsignedByte" />
<xs:element name="RetryInterval" type="xs:unsignedByte" />
<xs:element name="DownloadFromAad" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Version" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
示例
用于请求 CSP 版本信息的 SyncML:
<SyncML xmlns="SYNCML:SYNCML1.1"> <SyncBody> <Get> <CmdID>12345</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseDesktopAppManagement?prop=Type</LocURI> </Target> </Item> </Get> <Final/> </SyncBody> </SyncML>
下表描述了上一个示例中的字段:
名称 说明 “获取” 正在执行的操作。 Get 操作是返回信息的请求。 CmdID 用于引用请求的输入值。 响应将包括此值,该值可用于匹配请求和响应。 LocURI Win32 CSP 命令处理器的路径。 SyncML 用于执行 MSI 操作以卸载应用程序:
<SyncML xmlns="SYNCML:SYNCML1.1"> <SyncBody> <Delete> <CmdID>12345</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/%7B1803A630-3C38-4D2B-9B9A-0CB37243539C%7D</LocURI> </Target> </Item> </Delete> <Final/> </SyncBody> </SyncML>
下表描述了上一个示例中的字段:
名称 说明 删除 正在执行的操作。 删除操作是一个请求,用于删除表示指定的 MSI 已安装应用程序的 CSP 节点,并在过程中执行和卸载应用程序。 CmdID 用于引用请求的输入值。 响应将包括此值,该值可用于匹配请求和响应。 LocURI Win32 CSP 命令处理器的路径,包括本示例中的产品 ID (1803A630-3C38-4D2B-9B9A-0CB37243539C) 为 XML 格式转义的属性。 SyncML 用于对应用程序状态报告执行 MSI 操作:
<SyncML xmlns="SYNCML:SYNCML1.1"> <SyncBody> <Get> <CmdID>12345</CmdID> <Item> <Target> <LocURI>./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/%7B1803A630-3C38-4D2B-9B9A-0CB37243539C%7D</LocURI> </Target> </Item> </Get> <Final/> </SyncBody> </SyncML>
下表描述了上一个示例中的字段:
名称 说明 “获取” 正在执行的操作。 Get 操作是报告指定 MSI 已安装应用程序状态的请求。 CmdID 用于引用请求的输入值。 响应将包括此值,该值可用于匹配请求和响应。 LocURI Win32 CSP 命令处理器的路径,包括本示例中的产品 ID (1803A630-3C38-4D2B-9B9A-0CB37243539C) 为 XML 格式转义的属性。 SyncML,用于针对设备上的特定用户的应用程序执行 MSI 安装操作。 在 Exec 命令之前需要 Add 命令。
<SyncML xmlns="SYNCML:SYNCML1.1"> <SyncBody> <Add> <CmdID>1</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/%7B1803A630-3C384D2B-9B9A-0CB37243539C%7D/DownloadInstall</LocURI> </Target> </Item> </Add> <Exec> <CmdID>6</CmdID> <Item> <Target> <LocURI>./User/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/%7B1803A630-3C38-4D2B-9B9A-0CB37243539C%7D/DownloadInstall</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">xml</Format> <Type xmlns="syncml:metinf">text/plain</Type> </Meta> <Data> <MsiInstallJob id="{9BD4F7CD-880A-40B5-B74C-1BEECB51E596}"> <Product Version="1.0.0"> <Download> <ContentURLList> <ContentURL> http://bcl-w2k12r2-vm/testapps/msi/reboot/reboot.msi </ContentURL> <ContentURL>https://dp2.com/packages/myApp.msi</ContentURL> </ContentURLList> </Download> <Validation> <FileHash>134D8F1F7C3C036DC3DCDA9F97515C8C7951DB154B73365C9C22962BD23E3EB3</FileHash> </Validation> <Enforcement> <CommandLine>/quiet</CommandLine> <TimeOut>5</TimeOut> <RetryCount>3</RetryCount> <RetryInterval>5</RetryInterval> </Enforcement> </Product> </MsiInstallJob> </Data> </Item> </Exec> <Final/> </SyncBody> </SyncML>
下表描述了上一个示例中的字段:
名称 说明 添加 在 Exec 命令之前需要此字段。 - CmdID - 用于引用请求的输入值。 响应包括此值,该值可用于匹配请求和响应。
- LocURI - Win32 CSP 命令处理器的路径,包括本示例中的产品 ID (,1803A630-3C38-4D2B-9B9A-0CB37243539C) 属性转义用于 XML 格式。
Exec Exec 节点包括查找、下载、验证和执行产品安装所需的参数和属性。 - CmdID - 用于引用请求的输入值。 响应将包括此值,该值可用于匹配请求和响应。
- LocURI - Win32 CSP 命令处理器的路径,包括本示例中的产品 ID (,1803A630-3C38-4D2B-9B9A-0CB37243539C) 属性转义用于 XML 格式。
- 数据 - 数据节点包含嵌入的 XML,类型为“MsiInstallJob”
- MsiInstallJob - 包含成功下载、验证和执行 MSI 安装过程所需的所有信息, (请参阅本文档末尾的部分,了解有关此嵌入数据对象) 的详细信息。
注意
将使用标准 OMA-DM 通知机制报告 MSI 作业的信息状态。 报告的状态使用标准 MSIEXEC 返回代码表示为 HRESULT,如 Microsoft TechNet 上的 MSIEXEC 主题中的定义 (命令行 选项) 。
SyncML,用于针对设备上的所有用户执行 MSI 安装操作, (每个设备安装) :
<SyncML xmlns="SYNCML:SYNCML1.1"> <SyncBody> <Add> <CmdID>1</CmdID> <Item> <Target> <LocURI>./Device /Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/%7B6F7CB29F-1319-4816-B345-0856916EB801%7D/DownloadInstall </LocURI> </Target> </Item> </Add> <Exec> <CmdID>67890</CmdID> <Item> <Target> <LocURI>./Device /Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/%7B6F7CB29F-1319-4816-B345-0856916EB801%7D/DownloadInstall</LocURI> </Target> <Meta> <Format xmlns="syncml:metinf">xml</Format> <Type xmlns="syncml:metinf">text/plain</Type> </Meta> <Data> <MsiInstallJob id="{9BD4F7CD-880A-40B5-B74C-1BEECB51E596}"> <Product Version="1.0.0"> <Download> <ContentURLList> <ContentURL>http://bcl-w2k12r2-vm/testapps/msi/Orca/Orca.msi</ContentURL> <ContentURL>https://dp2.com/packages/myApp.msi</ContentURL> </ContentURLList> </Download> <Validation> <FileHash>4525065777EF18B9444ABF71DD4B48E5F64F4F0E1E029995FB8DA441CDE4296E</FileHash> </Validation> <Enforcement> <CommandLine>/quiet</CommandLine> <TimeOut>5</TimeOut> <RetryCount>3</RetryCount> <RetryInterval>5</RetryInterval> </Enforcement> </Product> </MsiInstallJob> </Data> </Item> </Exec> <Final/> </SyncBody> </SyncML>
下表 MsiInstallJob 介绍了架构元素。
元素 说明 MsiInstallJob 根元素
属性:“id” - 正在安装的应用程序的应用程序标识符产品 MsiInstallJob 的子元素
属性:“Version” - 应用程序版本的字符串表示形式下载 Product 的子元素。 用于下载配置信息的容器。 ContentURLList Download 的 child 元素。 包含内容 URL 元素形式的一个或多个内容下载 URL 定位符的列表。 ContentURL 应从中下载位置内容。 必须是指向 .MSI 文件的属性格式 URL。 验证 包含用于验证竞争真实性的信息。 • FileHash - 文件内容的 SHA256 哈希值 FileHash 文件内容的 SHA256 哈希值 强制 安装此 MSI 时要使用的安装属性 CommandLine 调用 MSIEXEC.exe 时使用的命令行选项 超时 安装过程在安装程序认为安装可能已失败且不再监视安装操作之前可以运行的时间量(以分钟为单位)。 RetryCount 在安装标记为失败之前,将重试下载和安装操作的次数。 RetryInterval 重试操作之间的时间(以分钟为单位)。 下面是对请求的常见响应示例
<?xml version="1.0" encoding="utf-16"?> <SyncML> <SyncHdr /> <SyncBody> <Status> <CmdID>12345</CmdID> <MsgRef>1</MsgRef> <CmdRef>0</CmdRef> <Cmd>SyncHdr</Cmd> <Data>200</Data> </Status> <Status> <CmdID>67890</CmdID> <MsgRef>1</MsgRef> <CmdRef>1</CmdRef> <Cmd>Add</Cmd> <Data>200</Data> </Status> <Final /> </SyncBody> </SyncML>
如何确定用于 MSI 包的安装上下文
下表显示了如何在客户端中安装应用目标和 MSI 包类型 (每个用户、每台计算机或双模式) 。
对于Intune独立环境,MSI 包将确定 MSI 执行上下文。
目标 | 每用户 MSI | 每台计算机 MSI | 双模式 MSI |
---|---|---|---|
用户 | 按用户安装 MSI LocURI 包含用户前缀,例如 ./User |
安装每个设备的 MSI LocURI 包含设备前缀,例如 ./Device |
按用户安装 MSI LocURI 包含用户前缀,例如 ./User |
系统 | 按用户安装 MSI LocURI 包含用户前缀,例如 ./User |
安装每个设备的 MSI LocURI 包含设备前缀,例如 ./Device |
按用户安装 MSI LocURI 包含用户前缀,例如 ./User |
下表适用于Configuration Manager混合环境:
目标 | 每用户 MSI | 每台计算机 MSI | 双模式 MSI |
---|---|---|---|
用户 | 按用户安装 MSI LocURI 包含用户前缀,例如 ./User |
安装每个设备的 MSI LocURI 包含设备前缀,例如 ./Device |
按用户安装 MSI LocURI 包含用户前缀,例如 ./User |
系统 | 按用户安装 MSI LocURI 包含用户前缀,例如 ./User |
安装每个设备的 MSI LocURI 包含设备前缀,例如 ./Device |
安装每个系统的 MSI 上下文 LocURI 包含设备前缀,例如 ./Device |
如何从 MSI 包中确定包类型
- ALLUSERS=“” - 每用户包类型
- ALLUSERS=1 - 每台计算机包类型
- ALLUSERS=2,MSIINSTALLPERUSER=1 - 双模式包类型
属性可以在包中指定、通过命令行传递、由转换修改,或者 (更常见的) 通过用户界面对话框选择属性。
下面是参考列表:
警报示例
<Alert>
<CmdID>4</CmdID>
<Data>1224</Data>
<Item>
<Source>
<LocURI>./Device/Vendor/MSFT/EnterpriseDesktopAppManagement/MSI/{AF9257BA-6BBD-4624-AA9B-0182D50292C3}/DownloadInstall</LocURI>
</Source>
<Meta>
<Type xmlns="syncml:metinf">Reversed-Domain-Name:com.microsoft.mdm.win32csp_install</Type>
<Format xmlns="syncml:metinf">int</Format>
<Mark xmlns="syncml:metinf">informational</Mark>
</Meta>
<Data>0</Data>
</Item>
</Alert>