1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "sys_installer_callback.h"
17 #include "sys_installer_kits_impl.h"
18 #include "isys_installer_callback_func.h"
19
20 using namespace OHOS;
21 using namespace std;
22 using namespace OHOS::SysInstaller;
23
24 enum SysInstallerInterfaceCode {
25 SYS_INSTALLER_INIT = 1,
26 UPDATE_PACKAGE,
27 START_STREAM_UPDATE,
28 STOP_STREAM_UPDATE,
29 PROCESS_STREAM_DATA,
30 SET_UPDATE_CALLBACK,
31 GET_UPDATE_STATUS,
32 UPDATE_PARA_PACKAGE,
33 DELETE_PARA_PACKAGE,
34 DECOMPRESS_ACC_PACKAGE,
35 DELETE_ACC_PACKAGE,
36 DELETE_UPDATE_RESULT,
37 EXIT_SYS_INSTALLER
38 };
39
40 class ProcessCallback : public ISysInstallerCallbackFunc {
41 public:
42 ProcessCallback() = default;
43 ~ProcessCallback() = default;
OnUpgradeProgress(UpdateStatus updateStatus,int percent,const std::string & resultMsg)44 void OnUpgradeProgress(UpdateStatus updateStatus, int percent, const std::string &resultMsg) override
45 {
46 printf("ProgressCallback progress %d percent %d msg %s\n",
47 updateStatus, percent, resultMsg.c_str());
48 }
OnUpgradeDealLen(UpdateStatus updateStatus,int dealLen,const std::string & resultMsg)49 void OnUpgradeDealLen(UpdateStatus updateStatus, int dealLen, const std::string &resultMsg) override
50 {
51 printf("ProgressCallback progress %d dealLen %d msg %s\n",
52 updateStatus, dealLen, resultMsg.c_str());
53 }
54 };
55
main(int argc,char ** argv)56 int main(int argc, char **argv)
57 {
58 if (argc != 3) { // 3: max para
59 printf("argc para error\n");
60 return -1;
61 }
62
63 std::string taskId = argv[2];
64
65 int32_t ret = SysInstallerKitsImpl::GetInstance().SysInstallerInit(taskId);
66 printf("SysInstallerInit ret:%d taskId %s\n", ret, taskId.c_str());
67
68 sptr<ISysInstallerCallbackFunc> callback = new ProcessCallback;
69 if (callback == nullptr) {
70 printf("callback new failed\n");
71 return -1;
72 }
73 SysInstallerKitsImpl::GetInstance().SetUpdateCallback(taskId, callback);
74 std::string updateResult;
75 printf("argv[1]:%d\n", atoi(argv[1]));
76 switch (atoi(argv[1])) {
77 case SysInstallerInterfaceCode::UPDATE_PACKAGE:
78 ret = SysInstallerKitsImpl::GetInstance().StartUpdatePackageZip(taskId, "/data/ota_package/update.zip");
79 break;
80 case SysInstallerInterfaceCode::GET_UPDATE_STATUS:
81 ret = SysInstallerKitsImpl::GetInstance().GetUpdateStatus(taskId);
82 break;
83 case SysInstallerInterfaceCode::UPDATE_PARA_PACKAGE:
84 ret = SysInstallerKitsImpl::GetInstance().StartUpdateParaZip(taskId,
85 "/data/ota_package/update_para.zip", "System", "/taboo");
86 break;
87 case SysInstallerInterfaceCode::DELETE_PARA_PACKAGE:
88 ret = SysInstallerKitsImpl::GetInstance().StartDeleteParaZip(taskId, "System", "/taboo");
89 break;
90 case SysInstallerInterfaceCode::DECOMPRESS_ACC_PACKAGE:
91 ret = SysInstallerKitsImpl::GetInstance().AccDecompressAndVerifyPkg(taskId,
92 "/data/ota_package/update.zip",
93 "/data/ota_package/", 1);
94 break;
95 case SysInstallerInterfaceCode::DELETE_ACC_PACKAGE:
96 ret = SysInstallerKitsImpl::GetInstance().AccDeleteDir(taskId, "/data/ota_package/");
97 break;
98 case SysInstallerInterfaceCode::DELETE_UPDATE_RESULT:
99 updateResult = SysInstallerKitsImpl::GetInstance().GetUpdateResult(taskId, "taskType", "resultType");
100 break;
101 case SysInstallerInterfaceCode::EXIT_SYS_INSTALLER:
102 updateResult = SysInstallerKitsImpl::GetInstance().ExitSysInstaller();
103 break;
104 default:
105 break;
106 }
107
108 printf("updateResult %s\n", updateResult.c_str());
109 return ret;
110 }
111