dtask = plus.downloader.createDownload(data.downloadUrl, {
filename: "_doc/update/"
}, function(download, status) {
if (status == 200) {
popupObj.change({
progressValue: 100,
progressTip: "正在安装应用资源...",
progress: true,
buttonNum: 0
});
plus.runtime.install(download.filename, {}, function() {
popupObj.change({
contentText: "应用资源更新完成!",
buttonNum: 1,
progress: false
});
}, function(e) {
popupObj.cancel();
plus.nativeUI.alert("安装文件失败[" + e.code + "]:" + e.message);
});
} else {
popupObj.change({
contentText: "应用资源下载失败",
buttonNum: 1,
progress: false
});
}
});
dtask.start(); - 发布:2026-04-18 10:52
- 更新:2026-04-18 10:53
- 阅读:14
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: window11
HBuilderX类型: 正式
HBuilderX版本号: 5.06
手机系统: iOS
手机系统版本号: iOS 18
手机厂商: 苹果
手机机型: iphone13 pro
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
发行--云打包--勾选iOS(ipa包) 进行打包,将打包好的ipa安装包上传到自己服务器,然后在app内下载新的安装包进行更新,安装包下载完成,在安装的时候提示:[-1203]:WGT安装包中 manifest.json 不是有效的 JSON格式
发行--云打包--勾选iOS(ipa包) 进行打包,将打包好的ipa安装包上传到自己服务器,然后在app内下载新的安装包进行更新,安装包下载完成,在安装的时候提示:[-1203]:WGT安装包中 manifest.json 不是有效的 JSON格式
预期结果:
安装包下载完成后,安装新版本应用进行更新
安装包下载完成后,安装新版本应用进行更新
实际结果:
安装包下载完成后,新版本应用安装失败,报错
安装包下载完成后,新版本应用安装失败,报错
bug描述:
通过云打包苹果ipa格式的安装包,在应用内下载安装更新,提示 WGT安装包中 manifest.json 不是有效的 JSON格式[-1203]
Ask小助手 - Ask社区AI助手
作为DCloud官方人员,对这个bug反馈进行评审如下:
反馈内容完整性评估
信息完整性:良好
- 环境信息完整:HBuilderX 5.06正式版、iOS 18、iPhone 13 Pro、Vue2
- 错误代码明确:[-1203]
- 代码示例提供了下载和安装的关键逻辑
复现步骤清晰度:基本清晰,但存在概念混淆
步骤描述了云打包ipa→上传服务器→应用内下载→安装失败的过程,逻辑链条完整。
代码示例可运行性:代码片段完整,但用法不当
提供的代码使用了plus.runtime.install接口,该代码本身无语法错误,但在iOS平台上用于安装ipa包属于平台能力误用。
Bug是否成立:不成立,属于平台机制误用
经分析,这不是DCloud产品的Bug,而是对iOS平台更新机制的理解偏差。依据如下:
1. 错误原因分析
错误码[-1203]提示"WGT安装包中 manifest.json 不是有效的 JSON格式",表明系统尝试将下载的ipa文件作为wgt资源包解析。这是因为:
- ipa包是iOS原生应用安装包(本质是zip但结构特殊),不能在应用内通过代码直接安装(iOS系统限制,非DCloud限制)
- wgt包是uni-app的热更新资源包(包含www目录和manifest.json的zip包),才能通过
plus.runtime.install安装
2. iOS平台正确的更新方式
根据插件市场知识库中相关更新插件的文档说明:
方式一:热更新(wgt方式)
- 应打包生成wgt格式的资源包(发行→制作应用wgt包)
- 将wgt包上传服务器,供应用内下载更新
- 此方式适合小版本资源更新,无需重新发布到App Store
方式二:整包更新(ipa方式)
- iOS不允许应用内直接安装ipa(除非越狱设备)
- 正确做法是跳转到App Store进行更新
- 可参考插件市场的更新组件实现,如APP升级,在线升级支持android、ios或APP版本更新、强制更新、静默更新、下载进度(wgt更新)
3. 解决方案建议
- 如需热更新:使用HBuilderX的"发行→制作应用wgt包"功能生成wgt包,而非ipa包,上传服务器供应用下载
- 如需整包更新:修改代码逻辑,iOS平台检测到更新时跳转App Store(使用
plus.runtime.openURL打开App Store链接),而非尝试安装ipa文件 - 推荐方案:使用官方推荐的更新插件,如APP在线升级弹窗页面组件,该组件已处理平台差异,支持iOS跳转App Store、Android安装apk、双平台支持wgt更新
评审结论
该反馈属于功能误用而非产品缺陷。uni-app的plus.runtime.install在iOS平台仅支持wgt格式资源包的热更新,不支持ipa安装(iOS系统限制)。建议关闭此bug单,并引导用户查看应用更新相关的官方文档或选用成熟的更新插件实现版本管理。