js-apis-update.md 16.9 KB
Newer Older
1
# 升级
Z
zengyawen 已提交
2

3 4 5
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

6
升级范围:升级整个系统,包括内置的资源、预置应用;第三方的应用不在升级的范围。
Z
zengyawen 已提交
7 8 9 10

升级依赖:升级分为SD卡升级和在线升级两种。

- SD卡升级依赖升级包和SD卡安装。
H
HelloCrease 已提交
11
- 在线升级依赖设备厂商部署的用于管理升级包的服务器。服务器由设备厂商部署,IP由调用者传入,请求的request接口是固定的,由设备厂商开发。
Z
zengyawen 已提交
12 13 14 15

## 导入模块

```js
Z
zengyawen 已提交
16
import update from '@ohos.update'
Z
zengyawen 已提交
17 18 19 20 21 22
```

## 权限列表



23
## update.getUpdater
Z
zengyawen 已提交
24 25 26 27 28

getUpdater(upgradeFile: string, updateType?: UpdateTypes): Updater

获取本地升级Updater。

29
**系统能力**:SystemCapability.Update.UpdateService
30

Z
zengyawen 已提交
31 32
**参数:**

H
HelloCrease 已提交
33 34 35 36
| 参数名         | 类型                          | 必填   | 说明   |
| ----------- | --------------------------- | ---- | ---- |
| upgradeFile | string                      | 是    | 升级文件 |
| updateType  | [UpdateTypes](#updatetypes) | 是    | 升级类型 |
Z
zengyawen 已提交
37 38 39

**返回值:**

H
HelloCrease 已提交
40 41
| 类型                  | 说明   |
| ------------------- | ---- |
Z
zengyawen 已提交
42 43 44 45 46 47 48 49 50 51 52 53
| [Updater](#updater) | 升级对象 |

**示例:**

```
try {
  let updater = update.getUpdater('/data/updater/updater.zip', 'OTA');
} catch(error) {
  console.error(" Fail to get updater error: " + error);
}
```

54
## update.getUpdaterForOther
Z
zengyawen 已提交
55 56 57 58 59

getUpdaterForOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater

获取升级对象给待升级设备。

60
**系统能力**:SystemCapability.Update.UpdateService
61

Z
zengyawen 已提交
62 63
**参数:**

H
HelloCrease 已提交
64 65 66 67 68
| 参数名         | 类型                          | 必填   | 说明    |
| ----------- | --------------------------- | ---- | ----- |
| upgradeFile | string                      | 是    | 升级文件  |
| device      | string                      | 是    | 待升级设备 |
| updateType  | [UpdateTypes](#updatetypes) | 是    | 升级类型  |
Z
zengyawen 已提交
69 70 71

**返回值:**

H
HelloCrease 已提交
72 73
| 类型                  | 说明   |
| ------------------- | ---- |
Z
zengyawen 已提交
74 75 76 77 78 79 80 81 82 83 84 85
| [Updater](#updater) | 升级对象 |

**示例:**

```
try {
  let updater = update.getUpdaterForOther('/data/updater/updater.zip', '1234567890', 'OTA');
} catch(error) {
  console.error(" Fail to get updater error: " + error);
}
```

86
## update.getUpdaterFromOther
Z
zengyawen 已提交
87 88 89 90 91

getUpdaterFromOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater

获取其它设备为本设备升级的Updater。

92
**系统能力**:SystemCapability.Update.UpdateService
93

Z
zengyawen 已提交
94 95
**参数:**

H
HelloCrease 已提交
96 97 98 99 100
| 参数名         | 类型                          | 必填   | 说明    |
| ----------- | --------------------------- | ---- | ----- |
| upgradeFile | string                      | 是    | 升级文件  |
| device      | string                      | 是    | 待升级设备 |
| updateType  | [UpdateTypes](#updatetypes) | 是    | 升级类型  |
Z
zengyawen 已提交
101 102 103

**返回值:**

H
HelloCrease 已提交
104 105
| 类型                  | 说明   |
| ------------------- | ---- |
Z
zengyawen 已提交
106 107 108 109 110 111 112 113 114 115 116 117
| [Updater](#updater) | 升级对象 |

**示例:**

```
try {
  let updater = update.getUpdaterFromOther('/data/updater/updater.zip', '1234567890', 'OTA');
} catch(error) {
  console.error(" Fail to get updater error: " + error);
}
```

Z
zengyawen 已提交
118 119 120 121 122 123 124 125
## Updater

###  getNewVersionInfo

getNewVersionInfo(callback: AsyncCallback\<NewVersionInfo>): void

获取新版本信息,使用callback方式作为异步方法。

126 127
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
128 129
**参数:**

H
HelloCrease 已提交
130 131 132
| 参数名      | 类型                                       | 必填   | 说明        |
| -------- | ---------------------------------------- | ---- | --------- |
| callback | AsyncCallback<[NewVersionInfo](#newversioninfo)> | 否    | 回调返回新版本信息 |
Z
zengyawen 已提交
133 134 135 136

**示例:**

```
137
updater.getNewVersionInfo(info => {
Z
zengyawen 已提交
138
  console.log("getNewVersionInfo success  " + info.status);
139 140 141
  console.log(`info versionName = ` + info.checkResult[0].versionName);
  console.log(`info versionCode = ` + info.checkResult[0].versionCode);
  console.log(`info verifyInfo = ` + info.checkResult[0].verifyInfo);
Z
zengyawen 已提交
142
});
Z
zengyawen 已提交
143 144 145 146 147 148 149 150
```

### getNewVersionInfo

getNewVersionInfo(): Promise\<NewVersionInfo>

获取新版本信息,使用promise方式作为异步方法。

151 152
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
153 154
**返回值:**

H
HelloCrease 已提交
155 156
| 类型                                       | 说明               |
| ---------------------------------------- | ---------------- |
Z
zengyawen 已提交
157 158 159 160 161
| Promise\<[NewVersionInfo](#newversioninfo)> | Promise,用于异步获取结果 |

**示例:**

```
Z
zengyawen 已提交
162
updater.getNewVersionInfo().then(value => {
163 164 165
  console.log(`info versionName = ` + value.checkResult[0].versionName);
  console.log(`info versionCode = ` + value.checkResult[0].versionCode);
  console.log(`info verifyInfo = ` + value.checkResult[0].verifyInfo);
Z
zengyawen 已提交
166
}).catch(err => {
Z
zengyawen 已提交
167
  console.log("getNewVersionInfo promise error: " + err.code);
Z
zengyawen 已提交
168
});
Z
zengyawen 已提交
169 170 171 172 173 174 175 176
```

### checkNewVersion

checkNewVersion(callback: AsyncCallback\<NewVersionInfo>): void

检查新版本,使用callback方式作为异步方法。

177 178
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
179 180
**参数:**

H
HelloCrease 已提交
181 182 183
| 参数名      | 类型                                       | 必填   | 说明        |
| -------- | ---------------------------------------- | ---- | --------- |
| callback | AsyncCallback\<[NewVersionInfo](#newversioninfo)> | 否    | 回调返回新版本信息 |
Z
zengyawen 已提交
184 185 186 187

**示例:**

```
188
updater.checkNewVersion(info => {
Z
zengyawen 已提交
189
  console.log("checkNewVersion success  " + info.status);
190 191 192
  console.log(`info versionName = ` + info.checkResult[0].versionName);
  console.log(`info versionCode = ` + info.checkResult[0].versionCode);
  console.log(`info verifyInfo = ` + info.checkResult[0].verifyInfo);
Z
zengyawen 已提交
193
});
Z
zengyawen 已提交
194 195 196 197 198 199 200 201
```

### checkNewVersion

checkNewVersion(): Promise\<NewVersionInfo>

检查新版本,使用promise方式作为异步方法。

202 203
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
204 205
**返回值:**

H
HelloCrease 已提交
206 207
| 类型                                       | 说明               |
| ---------------------------------------- | ---------------- |
Z
zengyawen 已提交
208 209 210 211 212
| Promise\<[NewVersionInfo](#newversioninfo)> | Promise函数返回新版本信息 |

**示例:**

```
213 214 215 216
updater.checkNewVersion().then(value => {
  console.log(`info versionName = ` + value.checkResult[0].versionName);
  console.log(`info versionCode = ` + value.checkResult[0].versionCode);
  console.log(`info verifyInfo = ` + value.checkResult[0].verifyInfo);
Z
zengyawen 已提交
217
}).catch(err => {
Z
zengyawen 已提交
218
  console.log("checkNewVersion promise error: " + err.code);
Z
zengyawen 已提交
219
});
Z
zengyawen 已提交
220 221 222 223 224 225 226 227
```

### verifyUpdatePackage

verifyUpdatePackage(upgradeFile: string, certsFile: string): void

升级前检查升级包是否有效。

228 229
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
230 231
**参数:**

H
HelloCrease 已提交
232 233 234 235
| 参数名         | 类型     | 必填   | 说明        |
| ----------- | ------ | ---- | --------- |
| upgradeFile | string | 是    | 待校验的升级包路径 |
| certsFile   | string | 是    | 证书路径      |
Z
zengyawen 已提交
236 237 238 239

**示例:**

```
240
updater.on("verifyProgress", callback => {
Z
zengyawen 已提交
241
  console.info('on verifyProgress ' + callback.percent);
Z
zengyawen 已提交
242
});
Z
zengyawen 已提交
243
update.verifyUpdatePackage("XXX", "XXX");
Z
zengyawen 已提交
244 245
```

246
### rebootAndCleanUserData<sup>7+</sup>
Z
zengyawen 已提交
247 248 249 250 251

rebootAndCleanUserData(): Promise\<number>

重启设备并清除用户分区数据。

252 253
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
254 255
**返回值:**

H
HelloCrease 已提交
256 257
| 类型               | 说明                  |
| ---------------- | ------------------- |
Z
zengyawen 已提交
258 259 260 261 262
| Promise\<number> | Promise示例,用于异步获取结果。 |

**示例:**

```
263
updater.rebootAndCleanUserData().then(result => {
Z
zengyawen 已提交
264 265 266
  console.log("rebootAndCleanUserData " + result);
}).catch(err => {
  console.info("rebootAndCleanUserData promise error: " + err.code);
Z
zengyawen 已提交
267 268 269
});
```

270
### rebootAndCleanUserData<sup>7+</sup>
Z
zengyawen 已提交
271 272 273 274 275

rebootAndCleanUserData(callback: AsyncCallback\<number>): void

重启设备并清除用户分区数据。

276 277
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
278 279
**参数:**

H
HelloCrease 已提交
280
| 参数名      | 类型       | 必填   | 说明                     |
Z
zengyawen 已提交
281
| -------- | -------- | ---- | ---------------------- |
H
HelloCrease 已提交
282
| callback | Function | 是    | AsyncCallback\<number> |
Z
zengyawen 已提交
283 284 285 286

**示例:**

```
287
updater.rebootAndCleanUserData(result => {
Z
zengyawen 已提交
288
  console.log("rebootAndCleanUserData ", result)
Z
zengyawen 已提交
289 290 291 292 293 294 295 296 297
});
```

### applyNewVersion

applyNewVersion(): Promise\<number>

重启设备后安装升级包。

298 299
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
300 301
**返回值:**

H
HelloCrease 已提交
302 303
| 类型               | 说明                  |
| ---------------- | ------------------- |
Z
zengyawen 已提交
304 305 306 307 308
| Promise\<number> | Promise示例,用于异步获取结果。 |

**示例:**

```
309
updater.applyNewVersion().then(result => {
Z
zengyawen 已提交
310 311
    console.log("appVewVersion ", result)
}).catch(err => {
Z
zengyawen 已提交
312 313 314 315 316 317 318 319 320 321
    console.info("applyNewVersion promise error: " + err.code);
});
```

### applyNewVersion

applyNewVersion(callback: AsyncCallback\<number>): void

重启设备后安装升级包。

322 323
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
324 325
**参数:**

H
HelloCrease 已提交
326
| 参数名      | 类型       | 必填   | 说明                     |
Z
zengyawen 已提交
327
| -------- | -------- | ---- | ---------------------- |
H
HelloCrease 已提交
328
| callback | Function | 是    | AsyncCallback\<number> |
Z
zengyawen 已提交
329 330 331 332

**示例:**

```
333
updater.applyNewVersion(result => {
Z
zengyawen 已提交
334
  console.log("applyNewVersion ", result)
Z
zengyawen 已提交
335 336 337 338 339 340 341 342 343
});
```

### download

download(): void

下载新版本,并监听下载进程。

344 345
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
346 347 348 349 350 351 352
**示例:**

```
updater.on("downloadProgress", progress => {
  console.log("downloadProgress on" + progress);
  console.log(`downloadProgress status: ` + progress.status);
  console.log(`downloadProgress percent: ` + progress.percent);
Z
zengyawen 已提交
353
});
Z
zengyawen 已提交
354 355 356 357 358
updater.download();
```

### upgrade

H
HelloCrease 已提交
359
upgrade():void
Z
zengyawen 已提交
360 361 362

启动升级。

363 364
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
365 366 367 368 369 370 371
**示例:**

```
updater.on("upgradeProgress", progress => {
  console.log("upgradeProgress on" + progress);
  console.log(`upgradeProgress status: ` + progress.status);
  console.log(`upgradeProgress percent: ` + progress.percent);
Z
zengyawen 已提交
372
});
Z
zengyawen 已提交
373 374 375 376 377 378 379 380 381
updater.upgrade();
```

### setUpdatePolicy

setUpdatePolicy(policy: UpdatePolicy, callback: AsyncCallback\<number>): void

设置升级策略,使用callback方式作为异步方法。

382 383
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
384 385
**参数:**

H
HelloCrease 已提交
386 387 388 389
| 参数名      | 类型                            | 必填   | 说明     |
| -------- | ----------------------------- | ---- | ------ |
| policy   | [UpdatePolicy](#updatepolicy) | 是    | 设置升级策略 |
| callback | AsyncCallback\<number>        | 是    | 回调返回结果 |
Z
zengyawen 已提交
390 391 392 393 394 395

**示例:**

```
// 设置策略
let policy = {
Z
zengyawen 已提交
396 397 398 399 400
  autoDownload: false,
  autoDownloadNet: true,
  mode: 2,
  autoUpgradeInterval: [ 2, 3 ],
  autoUpgradeCondition: 2
Z
zengyawen 已提交
401
}
402
updater.setUpdatePolicy(policy, result => {
Z
zengyawen 已提交
403 404
  console.log("setUpdatePolicy ", result)
});
Z
zengyawen 已提交
405 406 407 408 409 410 411 412
```

### setUpdatePolicy

setUpdatePolicy(policy: UpdatePolicy): Promise\<number>

设置升级策略,使用promise方式作为异步方法。

413 414
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
415 416
**参数:**

H
HelloCrease 已提交
417 418 419
| 参数名    | 类型                            | 必填   | 说明     |
| ------ | ----------------------------- | ---- | ------ |
| policy | [UpdatePolicy](#updatepolicy) | 是    | 设置升级策略 |
Z
zengyawen 已提交
420 421 422

**返回值:**

H
HelloCrease 已提交
423 424
| 类型               | 说明              |
| ---------------- | --------------- |
Z
zengyawen 已提交
425 426 427 428 429 430
| Promise\<number> | Promise函数返回设置结果 |

**示例:**

```
let policy = {
Z
zengyawen 已提交
431 432 433 434 435
  autoDownload: false,
  autoDownloadNet: true,
  mode: 2,
  autoUpgradeInterval: [ 2, 3 ],
  autoUpgradeCondition: 2
Z
zengyawen 已提交
436
}
437
updater.setUpdatePolicy(policy).then(result => 
Z
zengyawen 已提交
438 439 440 441
  console.log("setUpdatePolicy ", result)
).catch(err => {
  console.log("setUpdatePolicy promise error: " + err.code);
});
Z
zengyawen 已提交
442 443 444 445 446 447 448 449
```

### getUpdatePolicy

getUpdatePolicy(callback: AsyncCallback\<UpdatePolicy>): void

获取升级策略信息,使用callback方式作为异步方法。

450 451
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
452 453
**参数:**

H
HelloCrease 已提交
454 455 456
| 参数名      | 类型                                       | 必填   | 说明         |
| -------- | ---------------------------------------- | ---- | ---------- |
| callback | AsyncCallback\<[UpdatePolicy](#updatepolicy)> | 否    | 回调返回升级策略信息 |
Z
zengyawen 已提交
457 458 459 460

**示例:**

```
461
updater.getUpdatePolicy(policy => {
Z
zengyawen 已提交
462 463 464 465
  console.log("getUpdatePolicy success");
  console.log(`policy autoDownload = ` + policy.autoDownload);
  console.log(`policy autoDownloadNet = ` + policy.autoDownloadNet);
  console.log(`policy mode = ` + policy.mode);
Z
zengyawen 已提交
466
});
Z
zengyawen 已提交
467 468 469 470 471 472 473 474
```

### getUpdatePolicy

getUpdatePolicy(): Promise\<UpdatePolicy>

获取升级策略,通过promise方式作为异步方法。

475 476
**系统能力**:SystemCapability.Update.UpdateService

Z
zengyawen 已提交
477 478
**返回值:**

H
HelloCrease 已提交
479 480
| 类型                                      | 说明                |
| --------------------------------------- | ----------------- |
Z
zengyawen 已提交
481 482 483 484 485
| Promise\<[UpdatePolicy](#updatepolicy)> | Promise函数返回升级策略信息 |

**示例:**

```
486
updater.getUpdatePolicy().then(value => {
Z
zengyawen 已提交
487 488 489
  console.log(`info autoDownload = ` + value.autoDownload);
  console.log(`info autoDownloadNet = ` + value.autoDownloadNet);
  console.log(`info mode = ` + value.mode);
Z
zengyawen 已提交
490
}).catch(err => {
Z
zengyawen 已提交
491
  console.log("getUpdatePolicy promise error: " + err.code);
Z
zengyawen 已提交
492
});
Z
zengyawen 已提交
493 494 495 496 497 498
```

## UpdateTypes

升级类型。

499 500
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService

H
HelloCrease 已提交
501 502 503 504
| 参数名   | 说明    |
| ----- | ----- |
| OTA   | OTA升级 |
| patch | 补丁升级  |
Z
zengyawen 已提交
505 506 507 508 509

## PackageTypes

升级包类型。

510 511
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService

H
HelloCrease 已提交
512 513 514 515 516 517 518 519 520
| 参数名                  | 默认值  | 说明      |
| -------------------- | ---- | ------- |
| PACKAGE_TYPE_NORMAL  | 1    | 通用升级包   |
| PACKAGE_TYPE_BASE    | 2    | 基础升级包   |
| PACKAGE_TYPE_CUST    | 3    | 定制升级包   |
| PACKAGE_TYPE_PRELOAD | 4    | 预装升级包   |
| PACKAGE_TYPE_COTA    | 5    | 参数配置升级包 |
| PACKAGE_TYPE_VERSION | 6    | 版本升级包   |
| PACKAGE_TYPE_PATCH   | 7    | 补丁包     |
Z
zengyawen 已提交
521 522 523 524 525

## InstallMode

安装模式。

526 527
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService

H
HelloCrease 已提交
528 529 530 531 532
| 参数名                 | 默认值  | 说明   |
| ------------------- | ---- | ---- |
| INSTALL_MODE_NORMAL | 0    | 正常升级 |
| INSTALL_MODE_NIGHT  | 1    | 夜间升级 |
| INSTALL_MODE_AUTO   | 2    | 自动升级 |
Z
zengyawen 已提交
533 534 535 536 537

## NewVersionStatus

新版本检测状态。

538 539
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService

H
HelloCrease 已提交
540 541 542 543 544 545
| 参数名                 | 默认值  | 说明       |
| ------------------- | ---- | -------- |
| VERSION_STATUS_ERR  | -1   | 检测版本时出错  |
| VERSION_STATUS_NEW  | 0    | 检测到新版本   |
| VERSION_STATUS_NONE | 1    | 没有检测到新版本 |
| VERSION_STATUS_BUSY | 2    | 检测版本时忙   |
Z
zengyawen 已提交
546 547 548 549 550

## UpdatePolicy

升级策略。

551 552
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService

H
HelloCrease 已提交
553 554 555 556 557
| 名称                  | 参数类型                        | 必填   | 说明      |
| ------------------- | --------------------------- | ---- | ------- |
| autoDownload        | bool                        | 是    | 自动升级开关  |
| installMode         | [InstallMode](#installmode) | 是    | 安装模式    |
| autoUpgradeInterval | Array\<number>              | 是    | 自动升级时间段 |
Z
zengyawen 已提交
558 559 560 561 562

## NewVersionInfo

新版本信息。

563 564
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService

H
HelloCrease 已提交
565 566 567 568 569 570
| 名称              | 参数类型                                     | 必填   | 说明   |
| --------------- | ---------------------------------------- | ---- | ---- |
| status          | [NewVersionStatus](#newversionstatus)    | 是    | 升级状态 |
| errMsg          | string                                   | 是    | 错误信息 |
| checkResults    | Array<[CheckResult](#checkresult)>       | 是    | 检测结果 |
| descriptionInfo | Array\<[DescriptionInfo](#descriptioninfo)> | 是    | 描述信息 |
Z
zengyawen 已提交
571 572 573 574 575

## CheckResult

检测结果。

576 577
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService

H
HelloCrease 已提交
578 579 580 581 582 583 584 585
| 名称            | 参数类型                          | 必填   | 说明     |
| ------------- | ----------------------------- | ---- | ------ |
| versionName   | string                        | 是    | 版本名称   |
| versionCode   | number                        | 是    | 版本编码   |
| size          | number                        | 是    | 版本大小   |
| verifyInfo    | string                        | 是    | 版本校验信息 |
| packageType   | [PackageTypes](#packagetypes) | 是    | 版本类型   |
| descriptionId | string                        | 是    | 版本描述信息 |
Z
zengyawen 已提交
586 587 588 589 590

## DescriptionInfo

版本描述信息。

591 592
**系统能力**:以下各项对应的系统能力均为:SystemCapability.Update.UpdateService

H
HelloCrease 已提交
593 594 595 596
| 名称            | 参数类型   | 必填   | 说明            |
| ------------- | ------ | ---- | ------------- |
| descriptionId | string | 是    | 版本versionId信息 |
| content       | string | 是    | 版本changelog信息 |