From bb576a204a77032914406e732d8cbdbe571d5bd2 Mon Sep 17 00:00:00 2001 From: Monster Date: Tue, 28 Jun 2022 13:53:56 +0000 Subject: [PATCH 1/4] =?UTF-8?q?Signed-off-by:=20=E8=AE=B8=E5=A4=A7?= =?UTF-8?q?=E6=96=B0=20=E6=8F=90=E4=BA=A4weekly=5F2022?= =?UTF-8?q?0628?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/config.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/entry/src/main/config.json b/entry/src/main/config.json index f5878c2..8035b72 100644 --- a/entry/src/main/config.json +++ b/entry/src/main/config.json @@ -1,20 +1,20 @@ { "app": { - "bundleName": "com.runhe.ota.updateclient", - "vendor": "runhe", + "bundleName": "com.ohos.ota.updateclient", + "vendor": "ohos", "version": { "code": 1, "name": "1.0" }, "apiVersion": { - "compatible": 4, - "target": 4, + "compatible": 8, + "target": 8, "releaseType": "Beta2" } }, "deviceConfig": {}, "module": { - "package": "com.runhe.ota.updateclient", + "package": "com.ohos.ota.updateclient", "name": ".MyApplication", "deviceType": [ "phone" @@ -37,7 +37,7 @@ ] } ], - "name": "com.runhe.ota.updateclient.MainAbility", + "name": "com.ohos.ota.updateclient.MainAbility", "icon": "$media:icon", "description": "$string:mainability_description", "label": "updateclient", -- Gitee From e0652a225f09aeaef7b4e89b5312f9c10bfb12ed Mon Sep 17 00:00:00 2001 From: Monster Date: Tue, 28 Jun 2022 13:54:40 +0000 Subject: [PATCH 2/4] =?UTF-8?q?Signed-off-by:=20=E8=AE=B8=E5=A4=A7?= =?UTF-8?q?=E6=96=B0=20=E6=8F=90=E4=BA=A4weekly=5F2022?= =?UTF-8?q?0628?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/js/default/pages/index/index.js | 286 ++++++++++++------ 1 file changed, 190 insertions(+), 96 deletions(-) diff --git a/entry/src/main/js/default/pages/index/index.js b/entry/src/main/js/default/pages/index/index.js index 41c4d72..af83f7a 100644 --- a/entry/src/main/js/default/pages/index/index.js +++ b/entry/src/main/js/default/pages/index/index.js @@ -13,17 +13,33 @@ * limitations under the License. */ -import prompt from '@system.prompt' -import app from '@system.app'; +import prompt from '@ohos.prompt' +import app from '@ohos.ability.featureAbility'; import client from '@ohos.update'; -const HAS_NEW_VERSION = 0; -const NO_NEW_VERSION = 1; -const UPDATE_STATE_DOWNLOAD_FAIL = 23 -const UPDATE_STATE_DOWNLOAD_SUCCESS = 24; -const UPDATE_STATE_VERIFY_FAIL = 31; -const UPDATE_STATE_VERIFY_SUCCESS = 32; -var temp=0; -const page= { + +const HAS_NEW_VERSION = 1; +const NO_NEW_VERSION = 0; +const STATUS_CHECK_SUCCESS = 12; +const PACKAGE_NAME = "com.ohos.ota.updateclient"; +const VENDOR = "public"; +const TAG = "OUC_DEMO "; +let upgradeInfo = { + upgradeApp: PACKAGE_NAME, + businessType: { + vendor: VENDOR, + subType: 1 + } +} +let eventClassifyInfo = { + eventClassify: 0x01000000, + extraInfo: "" +} +var temp = 0; +let versionDigestInfo; +let pauseDownloadOptions = { + isAllowAutoResume: false +} +const page = { data: { title: "当前版本:10.2.1", button: "查看更新", @@ -37,29 +53,31 @@ const page= { showBanner: "", showButton: "download", upgradeInfo: "", - updater: undefined, + updater: Object(), timer: undefined, - dialog:"", - showSimpledialog:"" + dialog: "", + showSimpledialog: "" }, onInit() { + console.info(TAG + "onInit") try { - page.data.updater = client.getUpdater('/data/updater/updater.zip', 'OTA'); + page.data.updater = client.getOnlineUpdater(upgradeInfo); page.getCurrVersion(); - } catch(error) { + } catch (error) { + console.error(TAG + "onInit error: " + JSON.stringify(error)); } }, - onClick: function() { + onClick: function () { if (page.data.pageType == "currVersion") { // 检查更新版本 page.data.pageType = "checkVersion"; page.data.button = "取消查看"; page.data.showLoad = "load"; page.checkNewVersion(); - } else if (page.data.pageType == "newVersion") { // 当前需要下载最新的版本 + } else if (page.data.pageType == "newVersion") { // 当前需要下载最新的版本 page.data.pageType = "downVersion"; page.data.showLoad = "load"; page.data.showBanner = 'banner'; - page.data.button = "取消下载"; + page.data.button = "暂停下载"; if (page.data.updater == undefined) { page.data.pageType = "errorPage"; page.data.showButton = 'download'; @@ -68,51 +86,54 @@ const page= { return; } this.download() - } else if ( this.pageType == "lastVersion") { // 已经是最新的版本了,单击后退出页面 + } else if (this.pageType == "lastVersion") { // 已经是最新的版本了,单击后退出页面 page.data.showLoad = ""; - app.terminate(); + app.terminateSelf(); } else if (page.data.pageType == "checkVersion") { // 检查中,取消检查 - page.data.showSimpledialog="simpledialog"; + page.data.showSimpledialog = "simpledialog"; this.$element('simpledialog').show(); - page.data.dialog="是否取消检查"; + page.data.dialog = "是否取消检查"; } else if (page.data.pageType == "downVersion") { // 下载中,取消下载 - page.data.showSimpledialog="simpledialog"; - page.data.dialog="是否取消下载"; + page.data.showSimpledialog = "simpledialog"; + page.data.dialog = "是否暂停下载!"; this.$element('simpledialog').show(); - temp=1; + temp = 1; } else if (page.data.pageType == "errorPage") { // 出错,退出 - app.terminate(); + app.terminateSelf(); } }, download() { - page.data.updater.on("downloadProgress", progress => { + console.info(TAG + "download"); + page.data.updater.on(eventClassifyInfo, eventInfo => { + console.info(TAG + "download eventInfo: " + JSON.stringify(eventInfo)) if (page.data.pageType != "downVersion") { return; } + let progress = { + status: eventInfo.taskBody?.status, + percent: eventInfo.taskBody?.progress, + endReason: eventInfo.taskBody?.errorMessages?.[0]?.errorCode?.toString() + } let percent = progress.percent; if (progress.percent > 5) { percent = progress.percent - 5; - }else if(progress.percent>90){ + } else if (progress.percent > 90) { percent = 90; } page.data.width = percent + '%'; if (progress.percent == 100) { page.data.showLoad = ""; page.data.showBanner = ''; - if(temp==1){ + if (temp == 1) { this.$element('simpledialog').close(); } - } // 下载成功 UpdateState.UPDATE_STATE_DOWNLOAD_SUCCESS - if (progress.status == UPDATE_STATE_DOWNLOAD_SUCCESS || - progress.status == UPDATE_STATE_VERIFY_SUCCESS) { + if (eventInfo.eventId == EventId.EVENT_DOWNLOAD_SUCCESS) { page.data.pageType = "downSuccess"; page.data.showButton = "upgrade"; - page.data.upgradeInfo = page.data.versionName + "安装包下载完成,是否安装?"; - page.data.updater.off("downloadProgress"); - } else if (progress.status == UPDATE_STATE_DOWNLOAD_FAIL || - progress.status == UPDATE_STATE_VERIFY_FAIL) { // 失败 + page.data.upgradeInfo = page.data.versionName + "安装包下载完成,是否安装?"; + } else if (eventInfo.eventId == EventId.EVENT_DOWNLOAD_FAIL) { // 失败 page.data.pageType = "errorPage"; page.data.showButton = 'download'; page.data.button = '退出'; @@ -120,26 +141,34 @@ const page= { if (progress.endReason) { page.data.title = "下载失败,失败原因:" + progress.endReason; } - page.data.updater.off("downloadProgress"); } }); - page.data.updater.download(); + let downloadOptions = { + allowNetwork: 1, + order: 1 + } + page.data.updater.download(versionDigestInfo, downloadOptions).then(result => { + console.info(TAG + "download result: " + JSON.stringify(result)); + }).catch(err => { + console.error(TAG + "download err: " + JSON.stringify(err)); + }); }, - clickInstall: function() { + clickInstall: function () { if (page.data.pageType == "downSuccess") { // 下载成功,开始升级 page.upgrade(); } }, - clickCancel: function() { + clickCancel: function () { if (page.data.pageType == "downSuccess") { // 下载成功,取消升级 - page.data.showSimpledialog="simpledialog"; - page.data.dialog="是否稍后安装"; + page.data.showSimpledialog = "simpledialog"; + page.data.dialog = "是否稍后安装"; this.$element('simpledialog').show(); } }, getCurrVersion() { + console.info(TAG + "getCurrVersion"); if (page.data.updater == undefined) { page.data.pageType = "errorPage"; page.data.showButton = 'download'; @@ -147,28 +176,65 @@ const page= { page.data.title = "初始化出现错误,退出app"; return; } - try { - // 获取版本信息 - page.data.updater.getNewVersionInfo(function(err, info) { - if (info.status == NO_NEW_VERSION) { // 已经最新 - page.data.title = "当前已经是最新版本"; - page.data.button = "确定"; - page.data.pageType = "lastVersion"; - page.data.versionName = info.checkResults[0].versionName; - } else if (info.status == HAS_NEW_VERSION) { - page.data.button = "查看更新"; - page.data.pageType = "currVersion"; - page.data.versionName = info.checkResults[0].versionName; - } else { - page.data.title = "获取新版本失败"; - } - }); - } catch(error) { - page.data.title = "获取新版本失败"; - } + + // 获取版本信息 + page.data.updater.getTaskInfo().then(taskInfo => { + console.info(TAG + "getTaskInfo result: " + JSON.stringify(taskInfo)); + let taskStatus = taskInfo?.taskBody?.status; + if (taskStatus < STATUS_CHECK_SUCCESS) { + this.checkNewVersionLocal(); + } else { + this.getNewVersionInfoLocal(); + } + }); + }, + + checkNewVersionLocal() { + page.data.updater.checkNewVersion().then(data => { + console.info(TAG + "checkNewVersion result: " + JSON.stringify(data)); + if (data.isExistNewVersion == NO_NEW_VERSION) { // 已经最新 + page.data.title = "当前已经是最新版本"; + page.data.button = "确定"; + page.data.pageType = "lastVersion"; + page.data.versionName = data?.newVersionInfo?.versionComponents?.[0]?.displayVersion; + } else if (data.isExistNewVersion == HAS_NEW_VERSION) { + page.data.button = "查看更新"; + page.data.pageType = "currVersion"; + page.data.versionName = data?.newVersionInfo?.versionComponents?.[0]?.displayVersion; + } else { + page.data.title = "获取新版本失败"; + } + }).catch(error => { + console.info(TAG + "checkNewVersion error: " + JSON.stringify(error)); + page.data.pageType = "errorPage"; + page.data.showButton = 'download'; + page.data.button = '退出'; + page.data.title = "检查新版本失败"; + if (error.errorNum) { + page.data.title = "检查新版本失败,失败原因:" + error.errorNum; + } + }); }, - checkNewVersion: function() { + getNewVersionInfoLocal() { + page.data.updater.getNewVersionInfo().then(data => { + console.info(TAG + "getNewVersionInfo result: " + JSON.stringify(data)); + page.data.button = "查看更新"; + page.data.pageType = "currVersion"; + page.data.versionName = data?.versionComponents?.[0]?.displayVersion; + }).catch(error => { + console.info(TAG + "getNewVersionInfo error: " + JSON.stringify(error)); + page.data.pageType = "errorPage"; + page.data.showButton = 'download'; + page.data.button = '退出'; + page.data.title = "检查新版本失败"; + if (error.errorNum) { + page.data.title = "检查新版本失败,失败原因:" + error.errorNum; + } + }); + }, + + checkNewVersion: function () { if (page.data.updater == undefined) { page.data.pageType = "errorPage"; page.data.showButton = 'download'; @@ -176,53 +242,62 @@ const page= { page.data.title = "初始化出现错误,退出app"; return; } - page.data.updater.checkNewVersion(function(err, info) { + console.info(TAG + "checkNewVersion"); + page.data.updater.getNewVersionInfo().then(info => { + console.info(TAG + "checkNewVersion getNewVersionInfo: " + JSON.stringify(info)); + versionDigestInfo = info?.versionDigestInfo; page.data.showLoad = ""; - if (info.status == NO_NEW_VERSION) { // 已经最新 - page.data.title = "当前已经是最新版本"; - page.data.button = "确定"; - page.data.pageType = "lastVersion"; - } else if (info.status == HAS_NEW_VERSION) { // 有新版本 - let size = info.checkResults[0].size / 1024 / 1024; - page.data.versionName = info.checkResults[0].versionName; - page.data.size = String(size.toFixed(2)) + "MB"; - if (info.descriptionInfo[0].content != undefined) { - page.data.journal = info.descriptionInfo[0].content; - }; - page.data.pageType = "newVersion"; - page.data.button = "下载更新包"; - } else { // 出错 - page.data.pageType = "errorPage"; - page.data.showButton = 'download'; - page.data.button = '退出'; - page.data.title = "检查新版本失败"; - if (info.errMsg) { - page.data.title = "检查新版本失败,失败原因:" + info.errMsg; - } + let size = info?.versionComponents?.[0]?.size / 1024 / 1024; + page.data.versionName = info?.versionComponents?.[0]?.displayVersion; + page.data.size = String(size.toFixed(2)) + "MB"; + if (info?.versionComponents?.[0]?.descriptionInfo?.content != undefined) { + page.data.journal = info?.versionComponents?.[0]?.descriptionInfo?.content; + } + page.data.pageType = "newVersion"; + page.data.button = "下载更新包"; + }).catch(error => { + page.data.pageType = "errorPage"; + page.data.showButton = 'download'; + page.data.button = '退出'; + page.data.title = "检查新版本失败"; + if (error.errorNum) { + page.data.title = "检查新版本失败,失败原因:" + error.errorNum; } }); }, upgrade() { - if ( page.data.updater == undefined) { + if (page.data.updater == undefined) { page.data.pageType = "errorPage"; page.data.showButton = 'download'; page.data.button = '退出'; page.data.title = "初始化出现错误,退出app"; return; } - page.data.updater.on("upgradeProgress", progress => { + page.data.updater.on(eventClassifyInfo, eventInfo => { + console.info(TAG + "upgrade eventInfo: " + JSON.stringify(eventInfo)); + let progress = { + status: eventInfo.taskBody?.status, + percent: eventInfo.taskBody?.progress, + endReason: eventInfo.taskBody?.errorMessages?.[0]?.errorCode?.toString() + } page.data.width = progress.percent + '%'; - if (progress.status == 3) { // 失败 - page.data.updater.off("upgradeProgress"); + if (progress.status == EventId.EVENT_UPGRADE_FAIL) { // 失败 page.data.showLoad = ""; page.data.pageType = "errorPage"; page.data.showButton = 'download'; page.data.button = '退出'; - page.data.title = "升级失败,失败原因:" + progress.endReason ; + page.data.title = "升级失败,失败原因:" + progress.endReason; } }); - page.data.updater.upgrade(); + let upgradeOptions = { + order: 2 + } + page.data.updater.upgrade(versionDigestInfo, upgradeOptions).then(result => { + console.info(TAG + "upgrade result: " + JSON.stringify(result)); + }).catch(err => { + console.error(TAG + "upgrade err: " + JSON.stringify(err)); + }); }, closeDialog() { @@ -245,24 +320,43 @@ const page= { prompt.showToast({ message: '确定成功' }) - if (page.data.pageType == "downVersion"){ - page.data.updater.cancel(); + if (page.data.pageType == "downVersion") { page.data.showLoad = ""; page.data.showBanner = ''; page.data.pageType = "newVersion"; page.data.button = "下载更新包"; - }else if(page.data.pageType =="downSuccess"){ + page.data.updater.pauseDownload(versionDigestInfo, pauseDownloadOptions); + } else if (page.data.pageType == "downSuccess") { page.data.upgradeInfo = ""; page.data.showButton = 'download'; page.data.button = "查看更新"; page.data.pageType = "currVersion"; page.getCurrVersion(); - }else if(page.data.pageType =="checkVersion"){ + } else if (page.data.pageType == "checkVersion") { page.data.button = "检查更新"; page.getCurrVersion(); } - } } -export default page; +var EventId = { + EVENT_TASK_BASE: 0x01000000, + EVENT_TASK_RECEIVE: 0x01000001, + EVENT_TASK_CANCEL: 0x01000002, + EVENT_DOWNLOAD_WAIT: 0x01000003, + EVENT_DOWNLOAD_START: 0x01000004, + EVENT_PROGRESS_UPDATE: 0x01000005, + EVENT_DOWNLOAD_PAUSE: 0x01000006, + EVENT_DOWNLOAD_RESUME: 0x01000007, + EVENT_DOWNLOAD_SUCCESS: 0x01000008, + EVENT_DOWNLOAD_FAIL: 0x01000009, + EVENT_UPGRADE_WAIT: 0x01000010, + EVENT_UPGRADE_START: 0x01000011, + EVENT_UPGRADE_UPDATE: 0x01000012, + EVENT_APPLY_WAIT: 0x01000013, + EVENT_APPLY_START: 0x01000014, + EVENT_UPGRADE_SUCCESS: 0x01000015, + EVENT_UPGRADE_FAIL: 0x01000016 +} + +export default page; \ No newline at end of file -- Gitee From a14dacf1450fa9fe5a43f8e96c9ceb43fe3634d3 Mon Sep 17 00:00:00 2001 From: Monster Date: Tue, 28 Jun 2022 14:15:53 +0000 Subject: [PATCH 3/4] =?UTF-8?q?Signed-off-by:=20=E8=AE=B8=E5=A4=A7?= =?UTF-8?q?=E6=96=B0=20=E4=BF=AE=E6=94=B9=E9=AD=94?= =?UTF-8?q?=E6=B3=95=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/js/default/pages/index/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entry/src/main/js/default/pages/index/index.js b/entry/src/main/js/default/pages/index/index.js index af83f7a..a2f5648 100644 --- a/entry/src/main/js/default/pages/index/index.js +++ b/entry/src/main/js/default/pages/index/index.js @@ -31,7 +31,7 @@ let upgradeInfo = { } } let eventClassifyInfo = { - eventClassify: 0x01000000, + eventClassify: EventId.EVENT_TASK_BASE, extraInfo: "" } var temp = 0; -- Gitee From 1515dee1dc3949e5f4119dff8bc58314062af3f7 Mon Sep 17 00:00:00 2001 From: Monster Date: Wed, 29 Jun 2022 04:10:21 +0000 Subject: [PATCH 4/4] =?UTF-8?q?Signed-off-by:=20=E8=AE=B8=E5=A4=A7?= =?UTF-8?q?=E6=96=B0=20=E4=BF=AE=E6=94=B9=E5=BC=95?= =?UTF-8?q?=E7=94=A8bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/js/default/pages/index/index.js | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/entry/src/main/js/default/pages/index/index.js b/entry/src/main/js/default/pages/index/index.js index a2f5648..c388425 100644 --- a/entry/src/main/js/default/pages/index/index.js +++ b/entry/src/main/js/default/pages/index/index.js @@ -23,6 +23,25 @@ const STATUS_CHECK_SUCCESS = 12; const PACKAGE_NAME = "com.ohos.ota.updateclient"; const VENDOR = "public"; const TAG = "OUC_DEMO "; +var EventId = { + EVENT_TASK_BASE: 0x01000000, + EVENT_TASK_RECEIVE: 0x01000001, + EVENT_TASK_CANCEL: 0x01000002, + EVENT_DOWNLOAD_WAIT: 0x01000003, + EVENT_DOWNLOAD_START: 0x01000004, + EVENT_PROGRESS_UPDATE: 0x01000005, + EVENT_DOWNLOAD_PAUSE: 0x01000006, + EVENT_DOWNLOAD_RESUME: 0x01000007, + EVENT_DOWNLOAD_SUCCESS: 0x01000008, + EVENT_DOWNLOAD_FAIL: 0x01000009, + EVENT_UPGRADE_WAIT: 0x01000010, + EVENT_UPGRADE_START: 0x01000011, + EVENT_UPGRADE_UPDATE: 0x01000012, + EVENT_APPLY_WAIT: 0x01000013, + EVENT_APPLY_START: 0x01000014, + EVENT_UPGRADE_SUCCESS: 0x01000015, + EVENT_UPGRADE_FAIL: 0x01000016 +} let upgradeInfo = { upgradeApp: PACKAGE_NAME, businessType: { @@ -339,24 +358,4 @@ const page = { } } -var EventId = { - EVENT_TASK_BASE: 0x01000000, - EVENT_TASK_RECEIVE: 0x01000001, - EVENT_TASK_CANCEL: 0x01000002, - EVENT_DOWNLOAD_WAIT: 0x01000003, - EVENT_DOWNLOAD_START: 0x01000004, - EVENT_PROGRESS_UPDATE: 0x01000005, - EVENT_DOWNLOAD_PAUSE: 0x01000006, - EVENT_DOWNLOAD_RESUME: 0x01000007, - EVENT_DOWNLOAD_SUCCESS: 0x01000008, - EVENT_DOWNLOAD_FAIL: 0x01000009, - EVENT_UPGRADE_WAIT: 0x01000010, - EVENT_UPGRADE_START: 0x01000011, - EVENT_UPGRADE_UPDATE: 0x01000012, - EVENT_APPLY_WAIT: 0x01000013, - EVENT_APPLY_START: 0x01000014, - EVENT_UPGRADE_SUCCESS: 0x01000015, - EVENT_UPGRADE_FAIL: 0x01000016 -} - export default page; \ No newline at end of file -- Gitee