4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
7 * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
24 #include <sys/types.h>
26 #ifndef __PKGMGR_INSTALLER_H__
27 #define __PKGMGR_INSTALLER_H__
30 * @file pkgmgr_installer.h
31 * @author Youmin Ha <youmin.ha@samsung.com>
33 * @brief This file declares API of pkgmgr_installer
42 * pkgmgr_installer is an opaque type for an object
44 typedef struct pkgmgr_installer pkgmgr_installer;
45 typedef void* pkgmgr_instcertinfo_h;
48 * @brief listening event type in pkgmgr.
50 #define PKGMGR_INSTALLER_START_KEY_STR "start"
51 #define PKGMGR_INSTALLER_END_KEY_STR "end"
52 #define PKGMGR_INSTALLER_ERROR_KEY_STR "error"
53 #define PKGMGR_INSTALLER_APPID_KEY_STR "appid"
54 #define PKGMGR_INSTALLER_INSTALL_PERCENT_KEY_STR "install_percent"
55 #define PKGMGR_INSTALLER_GET_SIZE_KEY_STR "get_size"
57 #define PKGMGR_INSTALLER_INSTALL_EVENT_STR "install"
58 #define PKGMGR_INSTALLER_UNINSTALL_EVENT_STR "uninstall"
59 #define PKGMGR_INSTALLER_CLEAR_EVENT_STR "clear"
60 #define PKGMGR_INSTALLER_MOVE_EVENT_STR "move"
61 #define PKGMGR_INSTALLER_UPGRADE_EVENT_STR "update"
62 #define PKGMGR_INSTALLER_OK_EVENT_STR "ok"
63 #define PKGMGR_INSTALLER_FAIL_EVENT_STR "fail"
65 #define PKGMGR_INSTALLER_APP_DISABLE_EVENT_STR "disable_app"
66 #define PKGMGR_INSTALLER_APP_ENABLE_EVENT_STR "enable_app"
67 #define PKGMGR_INSTALLER_GLOBAL_APP_DISABLE_FOR_UID "disable_global_app_for_uid"
68 #define PKGMGR_INSTALLER_GLOBAL_APP_ENABLE_FOR_UID "enable_global_app_for_uid"
76 PKGMGR_REQ_INVALID = 0,
77 PKGMGR_REQ_INSTALL = 1,
78 PKGMGR_REQ_UNINSTALL = 2,
81 PKGMGR_REQ_RECOVER = 5,
82 PKGMGR_REQ_REINSTALL = 6,
83 PKGMGR_REQ_GETSIZE = 7,
84 PKGMGR_REQ_UPGRADE = 8,
86 PKGMGR_REQ_MANIFEST_DIRECT_INSTALL = 10,
87 PKGMGR_REQ_ENABLE_DISABLE_APP = 11
91 PKGMGR_INSTALLER_EINVAL = -2, /**< Invalid argument */
92 PKGMGR_INSTALLER_ERROR = -1, /**< General error */
93 PKGMGR_INSTALLER_EOK = 0 /**< General success */
98 PM_SET_AUTHOR_ROOT_CERT = 0,
99 PM_SET_AUTHOR_INTERMEDIATE_CERT = 1,
100 PM_SET_AUTHOR_SIGNER_CERT = 2,
101 PM_SET_DISTRIBUTOR_ROOT_CERT = 3,
102 PM_SET_DISTRIBUTOR_INTERMEDIATE_CERT = 4,
103 PM_SET_DISTRIBUTOR_SIGNER_CERT = 5,
104 PM_SET_DISTRIBUTOR2_ROOT_CERT = 6,
105 PM_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7,
106 PM_SET_DISTRIBUTOR2_SIGNER_CERT = 8,
107 }pkgmgr_instcert_type;
111 * @brief Create a pkgmgr_installer object.
113 * @post pkgmgr_installer object must be freed.
114 * @see pkgmgr_installer_free
115 * @return pkgmgr_installer object
116 * @retval NULL on failure creating an object
119 #include <pkgmgr_installer.h>
120 pkgmgr_installer *pi = pkgmgr_installer_new();
121 pkgmgr_installer_free(pi);
124 pkgmgr_installer *pkgmgr_installer_new(void);
127 * @brief Create a pkgmgr_installer object in offline mode
129 * @post pkgmgr_installer object must be freed.
130 * @see pkgmgr_installer_free
131 * @return pkgmgr_installer object
132 * @retval NULL on failure creating an object
135 #include <pkgmgr_installer.h>
136 pkgmgr_installer *pi = pkgmgr_installer_offline_new();
137 pkgmgr_installer_free(pi);
140 pkgmgr_installer *pkgmgr_installer_offline_new(void);
143 @brief Free a pkgmgr_installer object
144 @pre pi must be a valid object.
146 @see pkgmgr_installer_new
147 @param[in] pi A pkgmgr_installer object
148 @return Operation result
150 @retval -errno on error
153 #include <pkgmgr_installer.h>
154 pkgmgr_installer *pi = pkgmgr_installer_new();
155 pkgmgr_installer_free(pi);
158 int pkgmgr_installer_free(pkgmgr_installer *pi);
161 @brief Receive a request from argv
163 @post pkgmgr_installer_get_*(), pkgmgr_installer_is_quiet() can be called.
164 @see pkgmgr_installer_get_request_type, pkgmgr_installer_get_request_info, pkgmgr_installer_get_session_id, pkgmgr_installer_is_quiet
165 @param[in] pi a pkgmgr_installer object
166 @param[in] argc argc from system
167 @param[in] argv argv from system
168 @return Operation result
170 @retval -errno on failure
173 #include <pkgmgr_installer.h>
174 int main(int argc, char **argv)
176 pkgmgr_installer *pi;
179 pi = pkgmgr_installer_new();
180 int r = pkgmgr_installer_receive_request(pi, argc, argv);
181 pkgmgr_installer_free(pi);
187 int pkgmgr_installer_receive_request(pkgmgr_installer *pi,
188 const int argc, char **argv);
191 @brief Get request type
192 @pre pkgmgr_installer_receive_request() must be called.
194 @see pkgmgr_installer_receive_request
195 @param[in] pi pkgmgr_installer object
196 @return Request type (One of PKGMGR_REQ_* enum values)
199 int main(int argc, char **argv)
201 pkgmgr_installer *pi;
204 pi = pkgmgr_installer_new();
206 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
211 switch(pkgmgr_installer_get_request_type(pi)) {
212 case PKGMGR_REQ_PERM:
213 // Do error processing
215 case PKGMGR_REQ_INVALID:
216 // Do error processing
219 case PKGMGR_REQ_INSTALL:
220 // Do install processing
222 case PKGMGR_REQ_UNINSTALL:
223 // Do uninstall processing
225 case PKGMGR_REQ_RECOVER:
226 // Do recovere processing
228 case PKGMGR_REQ_REINSTALL:
229 // Do reinstall processing
235 pkgmgr_installer_free(pi);
241 int pkgmgr_installer_get_request_type(pkgmgr_installer *pi);
244 @brief Get request info
245 @pre pkgmgr_installer_receive_request() must be called.
247 @see pkgmgr_installer_receive_request
248 @param[in] pi pkgmgr_installer object
249 @return Request info. When PKGMGR_REQ_INSTALL, this is a package file path to be installed. When PKGMGR_REQ_UNINSTALL, this is a package name to be uninstalled.
250 @retval NULL on function failure
251 @remark Returned string must not be modified.
253 #include <pkgmgr_installer.h>
254 int main(int argc, char **argv)
256 pkgmgr_installer *pi;
258 char *req_info = NULL;
260 pi = pkgmgr_installer_new();
262 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
266 req_info = (char *) pkgmgr_installer_get_request_info(pi);
270 pkgmgr_installer_free(pi);
275 const char *pkgmgr_installer_get_request_info(pkgmgr_installer *pi);
279 @pre pkgmgr_installer_receive_request() must be called.
281 @see pkgmgr_installer_receive_request
282 @param[in] pi pkgmgr_installer object
283 @return TEP path if exists
284 @retval NULL on function failure
285 @remark Returned string must not be modified.
287 #include <pkgmgr_installer.h>
288 int main(int argc, char **argv)
290 pkgmgr_installer *pi;
292 char *tep_path = NULL;
294 pi = pkgmgr_installer_new();
296 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
300 tep_path = (char *) pkgmgr_installer_get_tep_path(pi);
304 pkgmgr_installer_free(pi);
309 const char *pkgmgr_installer_get_tep_path(pkgmgr_installer *pi);
312 @brief Get TEP move type
313 @pre pkgmgr_installer_receive_request() must be called.
315 @see pkgmgr_installer_receive_request
316 @param[in] pi pkgmgr_installer object
317 @return integer value indicates tep move type(0: copy TEP file / 1: move TEP file)
318 @retval 0 on function failure
319 @remark Returned string must not be modified.
321 #include <pkgmgr_installer.h>
322 int main(int argc, char **argv)
324 pkgmgr_installer *pi;
326 int tep_move_type = -1;
328 pi = pkgmgr_installer_new();
330 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
334 tep_move_type = pkgmgr_installer_get_tep_move_type(pi);
338 pkgmgr_installer_free(pi);
343 int pkgmgr_installer_get_tep_move_type(pkgmgr_installer *pi);
346 @brief Get session ID for a certain session
347 @pre pkgmgr_installer_receive_request() must be called.
349 @see pkgmgr_installer_receive_request
350 @param[in] pi pkgmgr_installer object
352 @retval NULL on function failure
353 @remark Returned string must not be modified.
355 #include <pkgmgr_installer.h>
356 int main(int argc, char **argv)
358 pkgmgr_installer *pi;
360 char *session_id = NULL;
362 pi = pkgmgr_installer_new();
364 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
368 session_id = (char *) pkgmgr_installer_get_session_id(pi);
372 pkgmgr_installer_free(pi);
377 const char *pkgmgr_installer_get_session_id(pkgmgr_installer *pi);
380 @brief Get a license path
381 @pre pkgmgr_installer_receive_request() must be called.
383 @see pkgmgr_installer_receive_request
384 @param[in] pi pkgmgr_installer object
386 @retval NULL on function failure
387 @remark Returned string must not be modified.
389 #include <pkgmgr_installer.h>
390 int main(int argc, char **argv)
392 pkgmgr_installer *pi;
394 char *license_path = NULL;
396 pi = pkgmgr_installer_new();
398 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
402 session_id = (char *) pkgmgr_installer_get_license_path(pi);
406 pkgmgr_installer_free(pi);
411 const char *pkgmgr_installer_get_license_path(pkgmgr_installer *pi);
414 @brief Get a optional data
415 @pre pkgmgr_installer_receive_request() must be called.
417 @see pkgmgr_installer_receive_request
418 @param[in] pi pkgmgr_installer object
419 @return optional data
420 @retval NULL on function failure
421 @remark Returned string must not be modified.
423 #include <pkgmgr_installer.h>
424 int main(int argc, char **argv)
426 pkgmgr_installer *pi;
428 char *optional_data = NULL;
430 pi = pkgmgr_installer_new();
432 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
436 optional_data = (char *) pkgmgr_installer_get_optional_data(pi);
440 pkgmgr_installer_free(pi);
445 const char *pkgmgr_installer_get_optional_data(pkgmgr_installer *pi);
448 @brief Get if a request is with quite mode or not
449 @pre pkgmgr_installer_receive_request() must be called.
451 @see pkgmgr_installer_receive_request
452 @param[in] pi pkgmgr_installer object
453 @return Operation result
454 @retval 0 if a request is not quiet mode
455 @retval 1 if a request is quiet mode
458 #include <pkgmgr_installer.h>
459 int main(int argc, char **argv)
461 pkgmgr_installer *pi;
464 pi = pkgmgr_installer_new();
466 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
470 if(pkgmgr_installer_is_quiet(pi)) {
471 // Do quiet mode work...
473 // Do normal mode work...
476 pkgmgr_installer_free(pi);
481 int pkgmgr_installer_is_quiet(pkgmgr_installer *pi);
485 @pre pkgmgr_installer_receive_request() must be called.
487 @see pkgmgr_installer_receive_request
488 @param[in] pi pkgmgr_installer object
489 @return Operation result
490 @retval enum value of move type
493 #include <pkgmgr_installer.h>
494 int main(int argc, char **argv)
496 pkgmgr_installer *pi;
499 pi = pkgmgr_installer_new();
501 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
505 move_type = pkgmgr_installer_get_move_type(pi);
509 pkgmgr_installer_free(pi);
514 int pkgmgr_installer_get_move_type(pkgmgr_installer *pi);
517 @brief Get caller package id
518 @pre pkgmgr_installer_receive_request() must be called.
520 @see pkgmgr_installer_receive_request
521 @param[in] pi pkgmgr_installer object
522 @return Operation result
523 @retval enum value of move type
526 #include <pkgmgr_installer.h>
527 int main(int argc, char **argv)
529 pkgmgr_installer *pi;
533 pi = pkgmgr_installer_new();
535 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
539 pkgid = (char *) pkgmgr_installer_get_caller_pkgid(pi);
543 pkgmgr_installer_free(pi);
548 const char *pkgmgr_installer_get_caller_pkgid(pkgmgr_installer *pi);
551 @brief Get if the request is for preload app or not
552 @pre pkgmgr_installer_receive_request() must be called.
554 @see pkgmgr_installer_receive_request
555 @param[in] pi pkgmgr_installer object
556 @return Operation result
557 @retval 0 if a request is not for preload
558 @retval 1 if a request is for preload
561 #include <pkgmgr_installer.h>
562 int main(int argc, char **argv)
564 pkgmgr_installer *pi;
568 pi = pkgmgr_installer_new();
570 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
574 preload = pkgmgr_installer_get_is_preload(pi);
578 pkgmgr_installer_free(pi);
583 int pkgmgr_installer_get_is_preload(pkgmgr_installer *pi);
586 @brief Send a process status signal
590 @param[in] pi pkgmgr_installer object
591 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
592 @param[in] pkgid package id
593 @param[in] key Signal key
594 @param[in] val Signal value
595 @return Operation result
597 @retval -errno on failure
598 @remark If pkgmgr_installer_receive_request() is not called, the session ID will be null string (=="/0").
600 #include <pkgmgr_installer.h>
601 int main(int argc, char **argv)
603 pkgmgr_installer *pi;
605 char *session_id = NULL;
607 pi = pkgmgr_installer_new();
609 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
615 pkgmgr_installer_send_signal(pi,
616 "deb", "org.tizen.foo", "install_percent", "100");
619 pkgmgr_installer_free(pi);
624 int pkgmgr_installer_send_signal(pkgmgr_installer *pi,
625 const char *pkg_type,
626 const char *pkgid, const char *key,
630 @brief Send a signal which indicates application is being uninstalled
634 @param[in] pi pkgmgr_installer object
635 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
636 @param[in] pkgid package id
637 @param[in] key Signal key
638 @param[in] val Signal value
639 @return Operation result
641 @retval -errno on failure
643 #include <pkgmgr_installer.h>
644 int main(int argc, char **argv)
646 pkgmgr_installer *pi;
648 char *session_id = NULL;
650 pi = pkgmgr_installer_new();
652 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
658 pkgmgr_installer_send_app_uninstall_signal(pi,
659 "tpk", "org.tizen.foo");
662 pkgmgr_installer_free(pi);
667 int pkgmgr_installer_send_app_uninstall_signal(pkgmgr_installer *pi,
668 const char *pkg_type,
673 * @brief This API sets the uid of given pkgmgr_installer.
675 * This API is for package-manager client application.\n
677 * @param[in]pi pointer to pkgmgr_installer
679 * @return 0 if success, error code(<0) if fail\n
681 int pkgmgr_installer_set_uid(pkgmgr_installer *pi, uid_t uid);
684 * @brief This API sets the requst info of given pkgmgr_installer.
686 * This API is for package-manager client application.\n
688 * @param[in]pi pointer to pkgmgr_installer
689 * @param[in] request_type request type
690 * @return 0 if success, error code(<0) if fail\n
692 int pkgmgr_installer_set_request_type(pkgmgr_installer *pi, int request_type);
695 * @brief This API sets the session ID.
697 * This API is for package-manager client application.\n
699 * @param[in] pi pointer to pkgmgr_installer
700 * @param[in] session_id session ID to be set
701 * @return 0 if success, error code(<0) if fail\n
703 int pkgmgr_installer_set_session_id(pkgmgr_installer *pi, char *session_id);
706 * @brief This API creates the certinfo handle.
708 * This API is for package-manager client application.\n
710 * @param[out] handle pointer to cert info handle
711 * @return 0 if success, error code(<0) if fail\n
713 int pkgmgr_installer_create_certinfo_set_handle(pkgmgr_instcertinfo_h *handle);
716 * @brief This API sets cert value for corresponding cert type.
718 * This API is for package-manager client application.\n
720 * @param[in] handle pointer to cert info handle
721 * @param[in] cert_type enum value for certificate type
722 * @param[in] cert_value certificate value
723 * @return 0 if success, error code(<0) if fail\n
725 int pkgmgr_installer_set_cert_value(pkgmgr_instcertinfo_h handle, pkgmgr_instcert_type cert_type, char *cert_value);
728 * @brief This API saves cert info in DB.
730 * This API is for package-manager client application.\n
732 * @param[in] pkgid package ID
733 * @param[in] handle pointer to cert info handle
734 * @return 0 if success, error code(<0) if fail\n
736 int pkgmgr_installer_save_certinfo(const char *pkgid, pkgmgr_instcertinfo_h handle, uid_t uid);
739 * @brief This API destroys cert info handle freeing all resources.
741 * This API is for package-manager client application.\n
743 * @param[in] handle pointer to cert info handle
744 * @return 0 if success, error code(<0) if fail\n
746 int pkgmgr_installer_destroy_certinfo_set_handle(pkgmgr_instcertinfo_h handle);
749 * @brief This API deletes cert info from DB. To be used to cleanup info upon pkg uninstallation
751 * This API is for package-manager client application.\n
753 * @param[in] pkgid package ID
754 * @return 0 if success, error code(<0) if fail\n
756 int pkgmgr_installer_delete_certinfo(const char *pkgid);
762 #endif /* __PKGMGR_INSTALLER_H__ */