1# Update Service<a name="EN-US_TOPIC_0000001102254666"></a>
2
3-   [Introduction](#section184mcpsimp)
4-   [Directory Structure](#section193mcpsimp)
5-   [Description](#section208mcpsimp)
6    -   [JS APIs](#section210mcpsimp)
7    -   [Usage](#section253mcpsimp)
8
9-   [Repositories Involved](#section366mcpsimp)
10
11## Introduction<a name="section184mcpsimp"></a>
12
13The update service is a system ability \(SA\) started by the init process of OHOS to implement an update.
14
15The update service provides the following functions:
16
171. Searching for available update packages
18
192. Downloading update packages
20
213. Setting and obtaining the update policy
22
234. Triggering an update
24
25## Directory Structure<a name="section193mcpsimp"></a>
26
27```
28base/update/updateservice  # Update service code
29├── interfaces             # Update client APIs
30│   ├── kits               # External APIs
31│   │   └── js             # JS APIs for the update app
32│   └── inner_api          # SA APIs
33├── frameworks             # module which is not independent's implement
34│   └── js                 # JS APIs
35│       └── napi           # napi
36│           └── client     # NAPI-based update client
37├── services               # module which is independent's implement
38│   ├── callback           # callback API
39│   └── engine             # Update client engine
40│       ├── etc            # rc configuration files for the update client engine
41│       ├── include        # Header files for the update client engine
42│       ├── sa_profile     # SA profiles
43│       └── src            # Source code of the update client engine
44├── test                   # Test code
45│   ├── unittest           # Unit test code for the update client
46│   └── fuzztest           # Fuzz test code for the update client
47├── BUILD.gn               # compile entrance
48└── bundle.json            # module description file
49```
50
51## Description<a name="section208mcpsimp"></a>
52
53### JS APIs<a name="section210mcpsimp"></a>
54
55<a name="table212mcpsimp"></a>
56<table><tbody><tr id="row217mcpsimp"><td class="cellrowborder" valign="top" width="52%"><p id="p219mcpsimp"><a name="p219mcpsimp"></a><a name="p219mcpsimp"></a><strong id="b6143153974418"><a name="b6143153974418"></a><a name="b6143153974418"></a>API</strong></p>
57</td>
58<td class="cellrowborder" valign="top" width="48%"><p id="p222mcpsimp"><a name="p222mcpsimp"></a><a name="p222mcpsimp"></a><strong id="b156019475446"><a name="b156019475446"></a><a name="b156019475446"></a>Description</strong></p>
59</td>
60</tr>
61<tr id="row223mcpsimp"><td class="cellrowborder" valign="top" width="52%"><p id="p16387178102716"><a name="p16387178102716"></a><a name="p16387178102716"></a>checkNewVersion</p>
62</td>
63<td class="cellrowborder" valign="top" width="48%"><p id="p227mcpsimp"><a name="p227mcpsimp"></a><a name="p227mcpsimp"></a>Checks whether a new update package is available.</p>
64</td>
65</tr>
66<tr id="row228mcpsimp"><td class="cellrowborder" valign="top" width="52%"><p id="p1884710150275"><a name="p1884710150275"></a><a name="p1884710150275"></a>download()</p>
67</td>
68<td class="cellrowborder" valign="top" width="48%"><p id="p232mcpsimp"><a name="p232mcpsimp"></a><a name="p232mcpsimp"></a>Downloads the update package. </p>
69</td>
70</tr>
71<tr id="row233mcpsimp"><td class="cellrowborder" valign="top" width="52%"><p id="p7326722162717"><a name="p7326722162717"></a><a name="p7326722162717"></a>upgrade()</p>
72</td>
73<td class="cellrowborder" valign="top" width="48%"><p id="p237mcpsimp"><a name="p237mcpsimp"></a><a name="p237mcpsimp"></a>Writes the update command to the misc partition and runs the <strong id="b1069864618574"><a name="b1069864618574"></a><a name="b1069864618574"></a>reboot</strong> command to access the updater.</p>
74</td>
75</tr>
76<tr id="row238mcpsimp"><td class="cellrowborder" valign="top" width="52%"><p id="p4981103002720"><a name="p4981103002720"></a><a name="p4981103002720"></a>getNewVersionInfo()</p>
77</td>
78<td class="cellrowborder" valign="top" width="48%"><p id="p242mcpsimp"><a name="p242mcpsimp"></a><a name="p242mcpsimp"></a>Obtains the version information after a version update.</p>
79</td>
80</tr>
81<tr id="row243mcpsimp"><td class="cellrowborder" valign="top" width="52%"><p id="p568117524271"><a name="p568117524271"></a><a name="p568117524271"></a>setUpgradePolicy</p>
82</td>
83<td class="cellrowborder" valign="top" width="48%"><p id="p247mcpsimp"><a name="p247mcpsimp"></a><a name="p247mcpsimp"></a>Sets the upgrade policy.</p>
84</td>
85</tr>
86<tr id="row248mcpsimp"><td class="cellrowborder" valign="top" width="52%"><p id="p19534844192712"><a name="p19534844192712"></a><a name="p19534844192712"></a>getUpgradePolicy</p>
87</td>
88<td class="cellrowborder" valign="top" width="48%"><p id="p252mcpsimp"><a name="p252mcpsimp"></a><a name="p252mcpsimp"></a>Obtains the upgrade policy.</p>
89</td>
90</tr>
91</tbody>
92</table>
93
94### Usage<a name="section253mcpsimp"></a>
95
961. Import  **libupdateclient**.
97
98```
99import client from 'libupdateclient.z.so'
100```
101
1022. Obtain the  **Updater**  object.
103
104```
105let updater = client.getUpdater('OTA');
106```
107
1083. Obtain the new version information.
109
110```
111updater.getNewVersionInfo(info => {
112	info "New version information"
113});
114```
115
1164. Checks for a new version.
117
118```
119updater.checkNewVersion(info => {
120	info "New version information"
121});
122```
123
1245. Download the new version and monitor the download process.
125
126```
127updater.download();
128updater.on("downloadProgress", progress => {
129	progress "Download progress information"
130});
131```
132
1336. Start the update.
134
135```
136updater.upgrade();
137updater.on("upgradeProgress", progress => {
138	progress "Update progress information"
139});
140```
141
1427. Set the update policy.
143
144```
145updater.setUpgradePolicy(result => {
146	result "Update policy setting result"
147});
148```
149
1508. Check the update policy.
151
152```
153updater.getUpgradePolicy(policy => {
154	policy "Update policy"
155});
156```
157
158## Repositories Involved<a name="section366mcpsimp"></a>
159
160Update subsystem
161
162[update\_app](https://gitee.com/openharmony/update_app)
163
164**update\_updateservice**
165
166[update\_updater](https://gitee.com/openharmony/update_updater)
167
168