如何通过Intune Graph API上传Windows Universal AppX依赖项
我之前帮团队处理过通过Graph API上传Windows Universal AppX及依赖项的需求,官方文档确实有些细节没讲透,下面是亲测可行的完整步骤和注意事项,应该能帮你搞定:
核心背景说明
首先要明确:Graph API中管理Windows应用的核心端点是/deviceAppManagement/mobileApps,AppX包属于windowsUniversalAppX类型的移动应用资源。依赖包需要作为独立的windowsUniversalAppX实体创建,再关联到主应用上,这样用户安装时才能自动拉取依赖。
具体操作步骤
1. 准备包文件
确保你已经准备好:
- 主AppX包文件(比如
MyApp_1.0.0.0_x64.appx) - 所有匹配架构、版本的依赖包(比如
Microsoft.VCLibs.140.00_14.0.30704.0_x64__8wekyb3d8bbwe.appx) - 应用图标(可选,需base64编码)
2. 创建主应用的基础实体
发送POST请求到:
https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps
请求体(JSON格式):
{ "@odata.type": "#microsoft.graph.windowsUniversalAppX", "displayName": "我的Universal应用", "description": "这是一个测试用的Windows Universal App", "publisher": "我的公司名称", "largeIcon": { "@odata.type": "microsoft.graph.mimeContent", "type": "image/png", "value": "这里替换成你的图标base64编码内容" }, "isFeatured": false, "privacyInformationUrl": "https://your-domain.com/privacy", "informationUrl": "https://your-domain.com/app-info", "owner": "应用所有者", "developer": "开发团队", "notes": "首次上传测试", "uploadState": 0, "committedContentVersion": "", "fileName": "MyApp_1.0.0.0_x64.appx", "size": 12345678 // 替换成主包的实际字节大小 }
请求成功后,会返回主应用的id(一串GUID),这个ID是后续操作的核心标识。
3. 上传主AppX包内容
发送PUT请求到:
https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/{主应用ID}/content/{主包文件名}/$value
- 请求头设置:
Content-Type: application/octet-stream - 请求体直接传入主AppX包的二进制内容
上传完成后,主应用的uploadState会自动变为1(已上传),你可以通过GET请求查询应用状态确认。
4. 创建并上传依赖包
重复步骤2和3,为每个依赖包创建独立的windowsUniversalAppX实体:
- 注意依赖包的
displayName要明确标识(比如“Microsoft VCLibs 14.0 x64 依赖包”) - 依赖包的
fileName要和实际文件名一致 - 每个依赖包都会生成自己的
id,保存好这些ID
5. 关联依赖包到主应用
发送PATCH请求到:
https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/{主应用ID}
请求体:
{ "dependentApps@odata.bind": [ "https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/{依赖包ID1}", "https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/{依赖包ID2}" ] }
这个操作会把依赖包和主应用绑定,用户安装主应用时,系统会自动检查并安装所需依赖。
6. 提交应用完成上传
最后发送PATCH请求更新主应用的状态:
https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/{主应用ID}
请求体:
{ "uploadState": 2 }
uploadState=2代表已提交,此时应用就可以被用户搜索和安装了。
关键注意事项
- 依赖匹配:依赖包的架构(x86/x64/ARM)、最低Windows版本必须和主包完全匹配,否则安装会失败
- 权限要求:你的应用注册必须拥有
DeviceManagementApps.ReadWrite.All权限,并且已获取有效的访问令牌 - 大小限制:单个包文件不能超过4GB,超过的话需要使用分片上传(不过一般AppX包不会达到这个大小)
- 状态验证:可以通过GET请求
https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/{应用ID}随时查看应用的上传状态、依赖关联情况
内容的提问来源于stack exchange,提问作者Shamsha Khan
相关产品推荐
相关产品推荐

