1 /*
2  * Copyright (c) 2024 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 #ifndef HNP_INSTALLER_H
17 #define HNP_INSTALLER_H
18 
19 #include "hnp_base.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 // 0x801301 组装安装路径失败
26 #define HNP_ERRNO_INSTALLER_GET_HNP_PATH_FAILED            HNP_ERRNO_COMMON(HNP_MID_INSTALLER, 0x1)
27 
28 // 0x801302 获取安装绝对路径失败
29 #define HNP_ERRNO_INSTALLER_GET_REALPATH_FAILED            HNP_ERRNO_COMMON(HNP_MID_INSTALLER, 0x2)
30 
31 // 0x801303 ELF文件验签失败
32 #define HNP_ERRNO_INSTALLER_CODE_SIGN_APP_FAILED           HNP_ERRNO_COMMON(HNP_MID_INSTALLER, 0x3)
33 
34 // 0x801304 安装的包已存在
35 #define HNP_ERRNO_INSTALLER_PATH_IS_EXIST                  HNP_ERRNO_COMMON(HNP_MID_INSTALLER, 0x4)
36 
37 // 0x801305 获取卸载路径失败
38 #define HNP_ERRNO_UNINSTALLER_HNP_PATH_NOT_EXIST           HNP_ERRNO_COMMON(HNP_MID_INSTALLER, 0x5)
39 
40 // 0x801306 安装命令参数uid错误
41 #define HNP_ERRNO_INSTALLER_ARGV_UID_INVALID               HNP_ERRNO_COMMON(HNP_MID_INSTALLER, 0x6)
42 
43 // 0x801307 restorecon 安装目录失败
44 #define HNP_ERRNO_INSTALLER_RESTORECON_HNP_PATH_FAIL       HNP_ERRNO_COMMON(HNP_MID_INSTALLER, 0x7)
45 
46 #define HNP_DEFAULT_INSTALL_ROOT_PATH "/data/app/el1/bundle"
47 #define HNP_SANDBOX_BASE_PATH "/data/service/hnp"
48 
49 /* hap安装信息 */
50 typedef struct HapInstallInfoStru {
51     int uid;                                  // 用户id
52     char *hapPackageName;                     // app名称
53     char *hnpRootPath;                        // hnp安装目录
54     char *hapPath;                            // hap目录
55     char *abi;                                // 系统abi路径
56     bool isForce;                             // 是否强制安装
57 } HapInstallInfo;
58 
59 /* hnp安装信息 */
60 typedef struct HnpInstallInfoStru {
61     HapInstallInfo *hapInstallInfo;           // hap安装信息
62     bool isPublic;                            // 是否公有
63     char hnpBasePath[MAX_FILE_PATH_LEN];      // hnp安装基础路径,public为 xxx/{uid}/hnppublic,private为xxx/{uid}/hnp/{hap}
64     char hnpSoftwarePath[MAX_FILE_PATH_LEN];  // 软件安装路径,为hnpBasePath/{name}.org/
65     char hnpVersionPath[MAX_FILE_PATH_LEN];   // 软件安装版本路径,为hnpBasePath/{name}.org/{name}_{version}
66     char hnpSignKeyPrefix[MAX_FILE_PATH_LEN]; // hnp包验签前缀,hnp/{abi}/xxxx/xxx.hnp
67 } HnpInstallInfo;
68 
69 int HnpCmdInstall(int argc, char *argv[]);
70 
71 int HnpCmdUnInstall(int argc, char *argv[]);
72 
73 #ifdef __cplusplus
74 }
75 #endif
76 
77 #endif