# Update
> ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE**
> The initial APIs of this module are supported since API version 6. Newly added APIs will be marked with a superscript to indicate their earliest API version.
The Update module applies to updates throughout the entire system, including built-in resources and preset applications, but not third-party applications.
There are two types of updates: SD card update and over the air (OTA) update.
- The SD card update depends on the update packages and SD cards.
- The OTA update depends on the server deployed by the phone manufacturer for managing update packages. The OTA server IP address is passed by the caller. The request interface is fixed and developed by the phone manufacturer.
## Modules to Import
```js
import update from '@ohos.update'
```
## Required Permissions
None
## update.getUpdater
getUpdater(upgradeFile: string, updateType?: UpdateTypes): Updater
Obtains the **Updater** object for local update.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| ----------- | --------------------------- | ---- | -------- |
| upgradeFile | string | Yes | Update file.|
| updateType | [UpdateTypes](#updatetypes) | Yes | Update type.|
**Return Value**
| Type | Description |
| ------------------- | -------- |
| [Updater](#updater) | **Updater** object.|
**Example**
```
try {
let updater = update.getUpdater('/data/updater/updater.zip', 'OTA');
} catch(error) {
console.error(" Fail to get updater error: " + error);
}
```
## update.getUpdaterForOther
getUpdaterForOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater
Obtains the **Updater** object for the device to be updated.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| ----------- | --------------------------- | ---- | ---------- |
| upgradeFile | string | Yes | Update file. |
| device | string | Yes | Device to be updated.|
| updateType | [UpdateTypes](#updatetypes) | Yes | Update type. |
**Return Value**
| Type | Description |
| ------------------- | -------- |
| [Updater](#updater) | **Updater** object.|
**Example**
```
try {
let updater = update.getUpdaterForOther('/data/updater/updater.zip', '1234567890', 'OTA');
} catch(error) {
console.error(" Fail to get updater error: " + error);
}
```
## update.getUpdaterFromOther
getUpdaterFromOther(upgradeFile: string, device: string, updateType?: UpdateTypes): Updater
Obtains the **Updater** object from another device for the device to be updated.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| ----------- | --------------------------- | ---- | ---------- |
| upgradeFile | string | Yes | Update file. |
| device | string | Yes | Device to be updated.|
| updateType | [UpdateTypes](#updatetypes) | Yes | Update type. |
**Return Value**
| Type | Description |
| ------------------- | -------- |
| [Updater](#updater) | **Updater** object.|
**Example**
```
try {
let updater = update.getUpdaterFromOther('/data/updater/updater.zip', '1234567890', 'OTA');
} catch(error) {
console.error(" Fail to get updater error: " + error);
}
```
## Updater
### getNewVersionInfo
getNewVersionInfo(callback: AsyncCallback\): void
Obtains the new version information. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------------------------ | ---- | ------------------ |
| callback | AsyncCallback<[NewVersionInfo](#newversioninfo)> | No | Callback used to return the result.|
**Example**
```
update.getNewVersionInfo(info => {
console.log("getNewVersionInfo success " + info.status);
console.log(`info versionName = ` + info.result[0].versionName);
console.log(`info versionCode = ` + info.result[0].versionCode);
console.log(`info verifyInfo = ` + info.result[0].verifyInfo);
});
```
### getNewVersionInfo
getNewVersionInfo(): Promise\
Obtains the new version information. This API uses a promise to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Return Value**
| Type | Description |
| ------------------------------------------- | ------------------------- |
| Promise\<[NewVersionInfo](#newversioninfo)> | Promise used to return the result.|
**Example**
```
updater.getNewVersionInfo().then(value => {
console.log(`info versionName = ` + value.result[0].versionName);
console.log(`info versionCode = ` + value.result[0].versionCode);
console.log(`info verifyInfo = ` + value.result[0].verifyInfo);
}).catch(err => {
console.log("getNewVersionInfo promise error: " + err.code);
});
```
### checkNewVersion
checkNewVersion(callback: AsyncCallback\): void
Checks whether the current version is the latest. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------------------------- | ---- | ------------------ |
| callback | AsyncCallback\<[NewVersionInfo](#newversioninfo)> | No | Callback used to return the result.|
**Example**
```
update.checkNewVersion(info => {
console.log("checkNewVersion success " + info.status);
console.log(`info versionName = ` + info.result[0].versionName);
console.log(`info versionCode = ` + info.result[0].versionCode);
console.log(`info verifyInfo = ` + info.result[0].verifyInfo);
});
```
### checkNewVersion
checkNewVersion(): Promise\
Checks whether the current version is the latest. This API uses a promise to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Return Value**
| Type | Description |
| ------------------------------------------- | ------------------------- |
| Promise\<[NewVersionInfo](#newversioninfo)> | Promise used to return the result.|
**Example**
```
update.checkNewVersion().then(value => {
console.log(`info versionName = ` + value.result[0].versionName);
console.log(`info versionCode = ` + value.result[0].versionCode);
console.log(`info verifyInfo = ` + value.result[0].verifyInfo);
}).catch(err => {
console.log("checkNewVersion promise error: " + err.code);
});
```
### verifyUpdatePackage
verifyUpdatePackage(upgradeFile: string, certsFile: string): void
Verifies whether the update package is valid.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| ----------- | ------ | ---- | ------------------ |
| upgradeFile | string | Yes | Path of the update package to be verified.|
| certsFile | string | Yes | Certificate path. |
**Example**
```
update.on("verifyProgress", callback => {
console.info('on verifyProgress ' + callback.percent);
});
update.verifyUpdatePackage("XXX", "XXX");
```
### rebootAndCleanUserData
rebootAndCleanUserData(): Promise\
Reboots the device and clears the user partition data. This API uses a promise to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Return Value**
| Type | Description |
| ---------------- | ------------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```
update.rebootAndCleanUserData().then(result => {
console.log("rebootAndCleanUserData " + result);
}).catch(err => {
console.info("rebootAndCleanUserData promise error: " + err.code);
});
```
### rebootAndCleanUserData
rebootAndCleanUserData(callback: AsyncCallback\): void
Reboots the device and clears the user partition data. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------- | ---- | ---------------------- |
| callback | AsyncCallback\| Yes | Callback used to return the result.|
**Example**
```
update.rebootAndCleanUserData(result => {
console.log("rebootAndCleanUserData ", result)
});
```
### applyNewVersion
applyNewVersion(): Promise\
Installs the update package. This API uses a promise to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Return Value**
| Type | Description |
| ---------------- | ------------------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```
update.applyNewVersion().then(result => {
console.log("appVewVersion ", result)
}).catch(err => {
console.info("applyNewVersion promise error: " + err.code);
});
```
### applyNewVersion
applyNewVersion(callback: AsyncCallback\): void
Installs the update package. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | -------- | ---- | ---------------------- |
| callback | AsyncCallback\| Yes | Callback used to return the result.|
**Example**
```
update.applyNewVersion(result => {
console.log("applyNewVersion ", result)
});
```
### download
download(): void
Downloads the new version and displays the download process.
**System capability**: SystemCapability.Update.UpdateService
**Example**
```
updater.on("downloadProgress", progress => {
console.log("downloadProgress on" + progress);
console.log(`downloadProgress status: ` + progress.status);
console.log(`downloadProgress percent: ` + progress.percent);
});
updater.download();
```
### upgrade
updater.upgrade():void
Starts an update.
**System capability**: SystemCapability.Update.UpdateService
**Example**
```
updater.on("upgradeProgress", progress => {
console.log("upgradeProgress on" + progress);
console.log(`upgradeProgress status: ` + progress.status);
console.log(`upgradeProgress percent: ` + progress.percent);
});
updater.upgrade();
```
### setUpdatePolicy
setUpdatePolicy(policy: UpdatePolicy, callback: AsyncCallback\): void
Sets the update policy. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ----------------------------- | ---- | ------------ |
| policy | [UpdatePolicy](#updatepolicy) | Yes | Update policy to set.|
| callback | AsyncCallback\ | Yes | Callback used to return the result.|
**Example**
```
// Set the update policy.
let policy = {
autoDownload: false,
autoDownloadNet: true,
mode: 2,
autoUpgradeInterval: [ 2, 3 ],
autoUpgradeCondition: 2
}
update.setUpdatePolicy(policy, result => {
console.log("setUpdatePolicy ", result)
});
```
### setUpdatePolicy
setUpdatePolicy(policy: UpdatePolicy): Promise\
Sets the update policy. This API uses a promise to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ----------------------------- | ---- | ------------ |
| policy | [UpdatePolicy](#updatepolicy) | Yes | Update policy to set.|
**Return Value**
| Type | Description |
| ---------------- | ----------------------- |
| Promise\ | Promise used to return the result.|
**Example**
```
let policy = {
autoDownload: false,
autoDownloadNet: true,
mode: 2,
autoUpgradeInterval: [ 2, 3 ],
autoUpgradeCondition: 2
}
update.setUpdatePolicy(policy).then(result =>
console.log("setUpdatePolicy ", result)
).catch(err => {
console.log("setUpdatePolicy promise error: " + err.code);
});
```
### getUpdatePolicy
getUpdatePolicy(callback: AsyncCallback\): void
Obtains the update policy. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | --------------------------------------------- | ---- | -------------------- |
| callback | AsyncCallback\<[UpdatePolicy](#updatepolicy)> | No | Callback used to return the result.|
**Example**
```
update.getUpdatePolicy(policy => {
console.log("getUpdatePolicy success");
console.log(`policy autoDownload = ` + policy.autoDownload);
console.log(`policy autoDownloadNet = ` + policy.autoDownloadNet);
console.log(`policy mode = ` + policy.mode);
});
```
### getUpdatePolicy
getUpdatePolicy(): Promise\
Obtains the update policy. This API uses a promise to return the result.
**System capability**: SystemCapability.Update.UpdateService
**Return Value**
| Type | Description |
| --------------------------------------- | --------------------------- |
| Promise\<[UpdatePolicy](#updatepolicy)> | Promise used to return the result.|
**Example**
```
update.getUpdatePolicy().then(value => {
console.log(`info autoDownload = ` + value.autoDownload);
console.log(`info autoDownloadNet = ` + value.autoDownloadNet);
console.log(`info mode = ` + value.mode);
}).catch(err => {
console.log("getUpdatePolicy promise error: " + err.code);
});
```
## UpdateTypes
Enumerates update types.
**System capability**: SystemCapability.Update.UpdateService
| Name| Description |
| ------ | -------- |
| OTA | OTA update. |
| patch | Patch update.|
## PackageTypes
Enumerates update package types.
**System capability**: SystemCapability.Update.UpdateService
| Name | Default Value| Description |
| -------------------- | ------ | -------------- |
| PACKAGE_TYPE_NORMAL | 1 | Common update package. |
| PACKAGE_TYPE_BASE | 2 | Basic update package. |
| PACKAGE_TYPE_CUST | 3 | Custom update package. |
| PACKAGE_TYPE_PRELOAD | 4 | Preinstalled update package. |
| PACKAGE_TYPE_COTA | 5 | Parameter configuration update package.|
| PACKAGE_TYPE_VERSION | 6 | Version update package. |
| PACKAGE_TYPE_PATCH | 7 | Patch packages |
## InstallMode
Enumerates update modes.
**System capability**: SystemCapability.Update.UpdateService
| Name | Default Value| Description |
| ------------------- | ------ | -------- |
| INSTALL_MODE_NORMAL | 0 | Normal update.|
| INSTALL_MODE_NIGHT | 1 | Update at night.|
| INSTALL_MODE_AUTO | 2 | Automatic update.|
## NewVersionStatus
Enumerates new version check results.
**System capability**: SystemCapability.Update.UpdateService
| Name | Default Value| Description |
| ------------------- | ------ | ---------------- |
| VERSION_STATUS_ERR | -1 | System error while checking for the new version. |
| VERSION_STATUS_NEW | 0 | New version detected. |
| VERSION_STATUS_NONE | 1 | No new version detected.|
| VERSION_STATUS_BUSY | 2 | System busy while checking for the new version. |
## UpdatePolicy
Defines the update policy.
**System capability**: SystemCapability.Update.UpdateService
| Name | Type | Mandatory| Description |
| ------------------- | --------------------------- | ---- | -------------- |
| autoDownload | bool | Yes | Automatic update switch. |
| installMode | [InstallMode](#installmode) | Yes | Installation mode. |
| autoUpgradeInterval | Array\ | Yes | Period of time for automatic update.|
## NewVersionInfo
Defines the new version information.
**System capability**: SystemCapability.Update.UpdateService
| Name | Type | Mandatory| Description |
| --------------- | ------------------------------------------- | ---- | -------- |
| status | [NewVersionStatus](#newversionstatus) | Yes | Update status.|
| errMsg | string | Yes | Error message.|
| checkResults | Array<[CheckResult](#checkresult)> | Yes | Version check result.|
| descriptionInfo | Array\<[DescriptionInfo](#descriptioninfo)> | Yes | Version description information.|
## CheckResult
Defines the version check result.
**System capability**: SystemCapability.Update.UpdateService
| Name | Type | Mandatory| Description |
| ------------- | ----------------------------- | ---- | ------------ |
| versionName | string | Yes | Version name. |
| versionCode | number | Yes | Version code. |
| size | number | Yes | Version size. |
| verifyInfo | string | Yes | Version verification information.|
| packageType | [PackageTypes](#packagetypes) | Yes | Version type. |
| descriptionId | string | Yes | Version description information.|
## DescriptionInfo
Defines the version description information.
**System capability**: SystemCapability.Update.UpdateService
| Name | Type| Mandatory| Description |
| ------------- | -------- | ---- | ----------------- |
| descriptionId | string | Yes | Version ID information.|
| content | string | Yes | Version changelog information.|