EnterpriseDesktopAppManagement 云解决方案提供商

EnterpriseDesktopAppManagement 配置服务提供程序用于处理企业桌面应用程序管理任务,例如查询已安装的企业应用程序、安装应用程序或删除应用程序。

应用程序安装可能需要一些时间才能完成,因此它们以异步方式完成。 Exec 命令完成后,客户端可以向管理服务器发送一个常规警报,其中包含一个状态,无论它是失败还是成功。 有关 SyncML 示例,请参阅 警报示例

以下列表显示了 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
访问类型 Add、Delete、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
访问类型 Add、Delete、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>

配置服务提供程序参考