EnterpriseDesktopAppManagement 云解决方案提供商
下表显示了 Windows 的适用性:
版次 | Windows 10 | Windows 11 |
---|---|---|
Home 键 | 否 | 否 |
专业版 | 是 | 是 |
Windows SE | 否 | 是 |
商用版 | 是 | 是 |
企业 | 是 | 是 |
教育 | 是 | 是 |
EnterpriseDesktopAppManagement 配置服务提供程序用于处理企业桌面应用程序管理任务,例如查询已安装的企业应用程序、安装应用程序或删除应用程序。
应用程序安装可能需要一些时间才能完成,因此它们以异步方式完成。 Exec 命令完成后,客户端可以向管理服务器发送一个常规警报,其中包含一个状态,无论它是失败还是成功。 有关 SyncML 示例,请参阅 警报示例。
以下示例以树格式显示 EnterpriseDesktopAppManagement CSP。
./Device/Vendor/MSFT
EnterpriseDesktopAppManagement
----MSI
--------ProductID
------------Version
------------Name
------------Publisher
------------InstallPath
------------InstallDate
------------DownloadInstall
------------Status
------------LastError
------------LastErrorDesc
--------UpgradeCode
------------Guid
./Device/Vendor/MSFT/EnterpriseDesktopAppManagement EnterpriseDesktopAppManagement 配置服务提供程序的根节点。
MSI/ProductID/Version 版本号。 值类型为字符串。 支持的操作为 Get。
MSI/ProductID/Name 应用程序的名称。 值类型为字符串。 支持的操作为 Get。
MSI/ProductID/Publisher 应用程序的发布者。 值类型为字符串。 支持的操作为 Get。
MSI/ProductID/InstallPath 应用程序的安装路径。 值类型为字符串。 支持的操作为 Get。
MSI/ProductID/InstallDate 应用程序的安装日期。 值类型为字符串。 支持的操作为 Get。
MSI/ProductID/DownloadInstall 执行应用程序的下载和安装。 值类型为字符串。 支持的操作为“执行”和“获取”。
Windows 10版本 1703 服务版本中,向 XML 的“强制>”部分添加了<一个新标记 <DownloadFromAad>。 默认值为 0 (不) 发送令牌。 此标记是可选的,如果服务器希望下载 URL 获取 AADUserToken,则需要将其设置为 1。 <TimeOut>
0 会将超时设置为无限期。
下面是一个示例:
<Enforcement>
<CommandLine>/quiet</CommandLine>
<TimeOut>5</TimeOut>
<RetryCount>3</RetryCount>
<RetryInterval>5</RetryInterval>
<DownloadFromAad>1</DownloadFromAad>
</Enforcement>
MSI/ProductID/Status 应用程序的状态。 值类型为字符串。 支持的操作为 Get。
状态 | 值 |
---|---|
初始 化 | 10 |
正在下载 | 20 |
挂起下载重试 | 25 |
下载失败 | 30 |
下载已完成 | 40 |
挂起的用户会话 | 48 |
正在强制实施 | 50 |
挂起的强制重试 | 55 |
强制失败 | 60 |
强制完成 | 70 |
MSI/ProductID/LastError 应用程序安装过程中的最后一个错误代码。 此错误代码通常存储为 HRESULT 格式。 根据错误发生时发生的情况,此错误可能是执行MSIExec.exe或 API 失败导致的错误结果。
值类型为字符串。 支持的操作为 Get。
MSI/ProductID/LastErrorDesc 包含最后一个错误代码说明。 将查找 LastErrorDesc 值,查找匹配的 LastError 值。 有时没有返回 LastErrorDesc。
值类型为字符串。 支持的操作为 Get。
MSI/UpgradeCode在 Windows 10 版本 1607 的 3 月服务版本中添加了 。
MSI/UpgradeCode/Guid在 Windows 10 版本 1607 的 3 月服务版本中添加了 。 当管理员想要更新现有 MSI 应用时,网关 (或设备管理服务器) 使用此方法检测匹配的升级 MSI 产品。 如果安装了同一升级产品,则允许更新。
值类型为字符串。 支持的操作为 Get。
示例
用于请求 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 命令之前需要此字段。 |
Exec | Exec 节点包括查找、下载、验证和执行产品安装所需的参数和属性。 |
注意
将使用标准 OMA-DM 通知机制报告 MSI 作业的信息状态。 报告的状态使用标准 MSIEXEC 返回代码表示为 HRESULT,如 msiexec 上的 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 的子元素。 包含内容 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 - 双模式包类型
属性可以在包中指定、通过命令行传递、由转换修改,或者 (更常见的) 通过用户界面对话框选择属性。
下面是参考列表:
- 使用 Windows Installer
- 在 Windows 7 中为Per-User或Per-Machine安装上下文创作单个包
- SyncML 表示协议,草稿版本 1.3 - 2009 年 8 月 27 日 (OMA-TS-SyncML_RepPro-V1_3-20090827-D)
警报示例
<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>