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"
73 PKGMGR_REQ_INVALID = 0,
74 PKGMGR_REQ_INSTALL = 1,
75 PKGMGR_REQ_UNINSTALL = 2,
78 PKGMGR_REQ_RECOVER = 5,
79 PKGMGR_REQ_REINSTALL = 6,
80 PKGMGR_REQ_GETSIZE = 7,
81 PKGMGR_REQ_UPGRADE = 8,
83 PKGMGR_REQ_MANIFEST_DIRECT_INSTALL = 10,
84 PKGMGR_REQ_ENABLE_DISABLE_APP = 11
88 PKGMGR_INSTALLER_EINVAL = -2, /**< Invalid argument */
89 PKGMGR_INSTALLER_ERROR = -1, /**< General error */
90 PKGMGR_INSTALLER_EOK = 0 /**< General success */
95 PM_SET_AUTHOR_ROOT_CERT = 0,
96 PM_SET_AUTHOR_INTERMEDIATE_CERT = 1,
97 PM_SET_AUTHOR_SIGNER_CERT = 2,
98 PM_SET_DISTRIBUTOR_ROOT_CERT = 3,
99 PM_SET_DISTRIBUTOR_INTERMEDIATE_CERT = 4,
100 PM_SET_DISTRIBUTOR_SIGNER_CERT = 5,
101 PM_SET_DISTRIBUTOR2_ROOT_CERT = 6,
102 PM_SET_DISTRIBUTOR2_INTERMEDIATE_CERT = 7,
103 PM_SET_DISTRIBUTOR2_SIGNER_CERT = 8,
104 }pkgmgr_instcert_type;
108 * @brief Create a pkgmgr_installer object.
110 * @post pkgmgr_installer object must be freed.
111 * @see pkgmgr_installer_free
112 * @return pkgmgr_installer object
113 * @retval NULL on failure creating an object
116 #include <pkgmgr_installer.h>
117 pkgmgr_installer *pi = pkgmgr_installer_new();
118 pkgmgr_installer_free(pi);
121 pkgmgr_installer *pkgmgr_installer_new(void);
124 * @brief Create a pkgmgr_installer object in offline mode
126 * @post pkgmgr_installer object must be freed.
127 * @see pkgmgr_installer_free
128 * @return pkgmgr_installer object
129 * @retval NULL on failure creating an object
132 #include <pkgmgr_installer.h>
133 pkgmgr_installer *pi = pkgmgr_installer_offline_new();
134 pkgmgr_installer_free(pi);
137 pkgmgr_installer *pkgmgr_installer_offline_new(void);
140 @brief Free a pkgmgr_installer object
141 @pre pi must be a valid object.
143 @see pkgmgr_installer_new
144 @param[in] pi A pkgmgr_installer object
145 @return Operation result
147 @retval -errno on error
150 #include <pkgmgr_installer.h>
151 pkgmgr_installer *pi = pkgmgr_installer_new();
152 pkgmgr_installer_free(pi);
155 int pkgmgr_installer_free(pkgmgr_installer *pi);
158 @brief Receive a request from argv
160 @post pkgmgr_installer_get_*(), pkgmgr_installer_is_quiet() can be called.
161 @see pkgmgr_installer_get_request_type, pkgmgr_installer_get_request_info, pkgmgr_installer_get_session_id, pkgmgr_installer_is_quiet
162 @param[in] pi a pkgmgr_installer object
163 @param[in] argc argc from system
164 @param[in] argv argv from system
165 @return Operation result
167 @retval -errno on failure
170 #include <pkgmgr_installer.h>
171 int main(int argc, char **argv)
173 pkgmgr_installer *pi;
176 pi = pkgmgr_installer_new();
177 int r = pkgmgr_installer_receive_request(pi, argc, argv);
178 pkgmgr_installer_free(pi);
184 int pkgmgr_installer_receive_request(pkgmgr_installer *pi,
185 const int argc, char **argv);
188 @brief Get request type
189 @pre pkgmgr_installer_receive_request() must be called.
191 @see pkgmgr_installer_receive_request
192 @param[in] pi pkgmgr_installer object
193 @return Request type (One of PKGMGR_REQ_* enum values)
196 int main(int argc, char **argv)
198 pkgmgr_installer *pi;
201 pi = pkgmgr_installer_new();
203 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
208 switch(pkgmgr_installer_get_request_type(pi)) {
209 case PKGMGR_REQ_PERM:
210 // Do error processing
212 case PKGMGR_REQ_INVALID:
213 // Do error processing
216 case PKGMGR_REQ_INSTALL:
217 // Do install processing
219 case PKGMGR_REQ_UNINSTALL:
220 // Do uninstall processing
222 case PKGMGR_REQ_RECOVER:
223 // Do recovere processing
225 case PKGMGR_REQ_REINSTALL:
226 // Do reinstall processing
232 pkgmgr_installer_free(pi);
238 int pkgmgr_installer_get_request_type(pkgmgr_installer *pi);
241 @brief Get request info
242 @pre pkgmgr_installer_receive_request() must be called.
244 @see pkgmgr_installer_receive_request
245 @param[in] pi pkgmgr_installer object
246 @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.
247 @retval NULL on function failure
248 @remark Returned string must not be modified.
250 #include <pkgmgr_installer.h>
251 int main(int argc, char **argv)
253 pkgmgr_installer *pi;
255 char *req_info = NULL;
257 pi = pkgmgr_installer_new();
259 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
263 req_info = (char *) pkgmgr_installer_get_request_info(pi);
267 pkgmgr_installer_free(pi);
272 const char *pkgmgr_installer_get_request_info(pkgmgr_installer *pi);
276 @pre pkgmgr_installer_receive_request() must be called.
278 @see pkgmgr_installer_receive_request
279 @param[in] pi pkgmgr_installer object
280 @return TEP path if exists
281 @retval NULL on function failure
282 @remark Returned string must not be modified.
284 #include <pkgmgr_installer.h>
285 int main(int argc, char **argv)
287 pkgmgr_installer *pi;
289 char *tep_path = NULL;
291 pi = pkgmgr_installer_new();
293 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
297 tep_path = (char *) pkgmgr_installer_get_tep_path(pi);
301 pkgmgr_installer_free(pi);
306 const char *pkgmgr_installer_get_tep_path(pkgmgr_installer *pi);
309 @brief Get TEP move type
310 @pre pkgmgr_installer_receive_request() must be called.
312 @see pkgmgr_installer_receive_request
313 @param[in] pi pkgmgr_installer object
314 @return integer value indicates tep move type(0: copy TEP file / 1: move TEP file)
315 @retval 0 on function failure
316 @remark Returned string must not be modified.
318 #include <pkgmgr_installer.h>
319 int main(int argc, char **argv)
321 pkgmgr_installer *pi;
323 int tep_move_type = -1;
325 pi = pkgmgr_installer_new();
327 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
331 tep_move_type = pkgmgr_installer_get_tep_move_type(pi);
335 pkgmgr_installer_free(pi);
340 int pkgmgr_installer_get_tep_move_type(pkgmgr_installer *pi);
343 @brief Get session ID for a certain session
344 @pre pkgmgr_installer_receive_request() must be called.
346 @see pkgmgr_installer_receive_request
347 @param[in] pi pkgmgr_installer object
349 @retval NULL on function failure
350 @remark Returned string must not be modified.
352 #include <pkgmgr_installer.h>
353 int main(int argc, char **argv)
355 pkgmgr_installer *pi;
357 char *session_id = NULL;
359 pi = pkgmgr_installer_new();
361 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
365 session_id = (char *) pkgmgr_installer_get_session_id(pi);
369 pkgmgr_installer_free(pi);
374 const char *pkgmgr_installer_get_session_id(pkgmgr_installer *pi);
377 @brief Get a license path
378 @pre pkgmgr_installer_receive_request() must be called.
380 @see pkgmgr_installer_receive_request
381 @param[in] pi pkgmgr_installer object
383 @retval NULL on function failure
384 @remark Returned string must not be modified.
386 #include <pkgmgr_installer.h>
387 int main(int argc, char **argv)
389 pkgmgr_installer *pi;
391 char *license_path = NULL;
393 pi = pkgmgr_installer_new();
395 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
399 session_id = (char *) pkgmgr_installer_get_license_path(pi);
403 pkgmgr_installer_free(pi);
408 const char *pkgmgr_installer_get_license_path(pkgmgr_installer *pi);
411 @brief Get a optional data
412 @pre pkgmgr_installer_receive_request() must be called.
414 @see pkgmgr_installer_receive_request
415 @param[in] pi pkgmgr_installer object
416 @return optional data
417 @retval NULL on function failure
418 @remark Returned string must not be modified.
420 #include <pkgmgr_installer.h>
421 int main(int argc, char **argv)
423 pkgmgr_installer *pi;
425 char *optional_data = NULL;
427 pi = pkgmgr_installer_new();
429 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
433 optional_data = (char *) pkgmgr_installer_get_optional_data(pi);
437 pkgmgr_installer_free(pi);
442 const char *pkgmgr_installer_get_optional_data(pkgmgr_installer *pi);
445 @brief Get if a request is with quite mode or not
446 @pre pkgmgr_installer_receive_request() must be called.
448 @see pkgmgr_installer_receive_request
449 @param[in] pi pkgmgr_installer object
450 @return Operation result
451 @retval 0 if a request is not quiet mode
452 @retval 1 if a request is quiet mode
455 #include <pkgmgr_installer.h>
456 int main(int argc, char **argv)
458 pkgmgr_installer *pi;
461 pi = pkgmgr_installer_new();
463 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
467 if(pkgmgr_installer_is_quiet(pi)) {
468 // Do quiet mode work...
470 // Do normal mode work...
473 pkgmgr_installer_free(pi);
478 int pkgmgr_installer_is_quiet(pkgmgr_installer *pi);
482 @pre pkgmgr_installer_receive_request() must be called.
484 @see pkgmgr_installer_receive_request
485 @param[in] pi pkgmgr_installer object
486 @return Operation result
487 @retval enum value of move type
490 #include <pkgmgr_installer.h>
491 int main(int argc, char **argv)
493 pkgmgr_installer *pi;
496 pi = pkgmgr_installer_new();
498 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
502 move_type = pkgmgr_installer_get_move_type(pi);
506 pkgmgr_installer_free(pi);
511 int pkgmgr_installer_get_move_type(pkgmgr_installer *pi);
514 @brief Get caller package id
515 @pre pkgmgr_installer_receive_request() must be called.
517 @see pkgmgr_installer_receive_request
518 @param[in] pi pkgmgr_installer object
519 @return Operation result
520 @retval enum value of move type
523 #include <pkgmgr_installer.h>
524 int main(int argc, char **argv)
526 pkgmgr_installer *pi;
530 pi = pkgmgr_installer_new();
532 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
536 pkgid = (char *) pkgmgr_installer_get_caller_pkgid(pi);
540 pkgmgr_installer_free(pi);
545 const char *pkgmgr_installer_get_caller_pkgid(pkgmgr_installer *pi);
548 @brief Get if the request is for preload app or not
549 @pre pkgmgr_installer_receive_request() must be called.
551 @see pkgmgr_installer_receive_request
552 @param[in] pi pkgmgr_installer object
553 @return Operation result
554 @retval 0 if a request is not for preload
555 @retval 1 if a request is for preload
558 #include <pkgmgr_installer.h>
559 int main(int argc, char **argv)
561 pkgmgr_installer *pi;
565 pi = pkgmgr_installer_new();
567 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
571 preload = pkgmgr_installer_get_is_preload(pi);
575 pkgmgr_installer_free(pi);
580 int pkgmgr_installer_get_is_preload(pkgmgr_installer *pi);
583 @brief Send a process status signal
587 @param[in] pi pkgmgr_installer object
588 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
589 @param[in] pkgid package id
590 @param[in] key Signal key
591 @param[in] val Signal value
592 @return Operation result
594 @retval -errno on failure
595 @remark If pkgmgr_installer_receive_request() is not called, the session ID will be null string (=="/0").
597 #include <pkgmgr_installer.h>
598 int main(int argc, char **argv)
600 pkgmgr_installer *pi;
602 char *session_id = NULL;
604 pi = pkgmgr_installer_new();
606 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
612 pkgmgr_installer_send_signal(pi,
613 "deb", "org.tizen.foo", "install_percent", "100");
616 pkgmgr_installer_free(pi);
621 int pkgmgr_installer_send_signal(pkgmgr_installer *pi,
622 const char *pkg_type,
623 const char *pkgid, const char *key,
627 @brief Send a signal which indicates application is being uninstalled
631 @param[in] pi pkgmgr_installer object
632 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
633 @param[in] pkgid package id
634 @param[in] key Signal key
635 @param[in] val Signal value
636 @return Operation result
638 @retval -errno on failure
640 #include <pkgmgr_installer.h>
641 int main(int argc, char **argv)
643 pkgmgr_installer *pi;
645 char *session_id = NULL;
647 pi = pkgmgr_installer_new();
649 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
655 pkgmgr_installer_send_app_uninstall_signal(pi,
656 "tpk", "org.tizen.foo");
659 pkgmgr_installer_free(pi);
664 int pkgmgr_installer_send_app_uninstall_signal(pkgmgr_installer *pi,
665 const char *pkg_type,
670 * @brief This API sets the requst info of given pkgmgr_installer.
672 * This API is for package-manager client application.\n
674 * @param[in]pi pointer to pkgmgr_installer
675 * @param[in] request_type request type
676 * @return 0 if success, error code(<0) if fail\n
678 int pkgmgr_installer_set_request_type(pkgmgr_installer *pi, int request_type);
681 * @brief This API sets the session ID.
683 * This API is for package-manager client application.\n
685 * @param[in] pi pointer to pkgmgr_installer
686 * @param[in] session_id session ID to be set
687 * @return 0 if success, error code(<0) if fail\n
689 int pkgmgr_installer_set_session_id(pkgmgr_installer *pi, char *session_id);
692 * @brief This API creates the certinfo handle.
694 * This API is for package-manager client application.\n
696 * @param[out] handle pointer to cert info handle
697 * @return 0 if success, error code(<0) if fail\n
699 int pkgmgr_installer_create_certinfo_set_handle(pkgmgr_instcertinfo_h *handle);
702 * @brief This API sets cert value for corresponding cert type.
704 * This API is for package-manager client application.\n
706 * @param[in] handle pointer to cert info handle
707 * @param[in] cert_type enum value for certificate type
708 * @param[in] cert_value certificate value
709 * @return 0 if success, error code(<0) if fail\n
711 int pkgmgr_installer_set_cert_value(pkgmgr_instcertinfo_h handle, pkgmgr_instcert_type cert_type, char *cert_value);
714 * @brief This API saves cert info in DB.
716 * This API is for package-manager client application.\n
718 * @param[in] pkgid package ID
719 * @param[in] handle pointer to cert info handle
720 * @return 0 if success, error code(<0) if fail\n
722 int pkgmgr_installer_save_certinfo(const char *pkgid, pkgmgr_instcertinfo_h handle, uid_t uid);
725 * @brief This API destroys cert info handle freeing all resources.
727 * This API is for package-manager client application.\n
729 * @param[in] handle pointer to cert info handle
730 * @return 0 if success, error code(<0) if fail\n
732 int pkgmgr_installer_destroy_certinfo_set_handle(pkgmgr_instcertinfo_h handle);
735 * @brief This API deletes cert info from DB. To be used to cleanup info upon pkg uninstallation
737 * This API is for package-manager client application.\n
739 * @param[in] pkgid package ID
740 * @return 0 if success, error code(<0) if fail\n
742 int pkgmgr_installer_delete_certinfo(const char *pkgid);
748 #endif /* __PKGMGR_INSTALLER_H__ */