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 #ifndef __PKGMGR_INSTALLER_H__
25 #define __PKGMGR_INSTALLER_H__
27 #include <sys/types.h>
29 #include "pkgmgr_installer_type.h"
32 * @file pkgmgr_installer.h
33 * @author Youmin Ha <youmin.ha@samsung.com>
35 * @brief This file declares API of pkgmgr_installer
43 * pkgmgr_installer is an opaque type for an object
45 typedef struct pkgmgr_installer pkgmgr_installer;
46 typedef void *pkgmgr_instcertinfo_h;
49 * @brief Create a pkgmgr_installer object.
51 * @post pkgmgr_installer object must be freed.
52 * @see pkgmgr_installer_free
53 * @return pkgmgr_installer object
54 * @retval NULL on failure creating an object
57 #include <pkgmgr_installer.h>
58 pkgmgr_installer *pi = pkgmgr_installer_new();
59 pkgmgr_installer_free(pi);
62 pkgmgr_installer *pkgmgr_installer_new(void);
65 * @brief Create a pkgmgr_installer object in offline mode
67 * @post pkgmgr_installer object must be freed.
68 * @see pkgmgr_installer_free
69 * @return pkgmgr_installer object
70 * @retval NULL on failure creating an object
73 #include <pkgmgr_installer.h>
74 pkgmgr_installer *pi = pkgmgr_installer_offline_new();
75 pkgmgr_installer_free(pi);
78 pkgmgr_installer *pkgmgr_installer_offline_new(void);
81 @brief Free a pkgmgr_installer object
82 @pre pi must be a valid object.
84 @see pkgmgr_installer_new
85 @param[in] pi A pkgmgr_installer object
86 @return Operation result
88 @retval -errno on error
91 #include <pkgmgr_installer.h>
92 pkgmgr_installer *pi = pkgmgr_installer_new();
93 pkgmgr_installer_free(pi);
96 int pkgmgr_installer_free(pkgmgr_installer *pi);
99 @brief Receive a request from argv
101 @post pkgmgr_installer_get_*(), pkgmgr_installer_is_quiet() can be called.
102 @see pkgmgr_installer_get_request_type, pkgmgr_installer_get_request_info, pkgmgr_installer_get_session_id, pkgmgr_installer_is_quiet
103 @param[in] pi a pkgmgr_installer object
104 @param[in] argc argc from system
105 @param[in] argv argv from system
106 @return Operation result
108 @retval -errno on failure
111 #include <pkgmgr_installer.h>
112 int main(int argc, char **argv)
114 pkgmgr_installer *pi;
117 pi = pkgmgr_installer_new();
118 int r = pkgmgr_installer_receive_request(pi, argc, argv);
119 pkgmgr_installer_free(pi);
125 int pkgmgr_installer_receive_request(pkgmgr_installer *pi,
126 const int argc, char **argv);
129 @brief Get request type
130 @pre pkgmgr_installer_receive_request() must be called.
132 @see pkgmgr_installer_receive_request
133 @param[in] pi pkgmgr_installer object
134 @return Request type (One of PKGMGR_REQ_* enum values)
137 int main(int argc, char **argv)
139 pkgmgr_installer *pi;
142 pi = pkgmgr_installer_new();
144 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
149 switch(pkgmgr_installer_get_request_type(pi)) {
150 case PKGMGR_REQ_PERM:
151 // Do error processing
153 case PKGMGR_REQ_INVALID:
154 // Do error processing
157 case PKGMGR_REQ_INSTALL:
158 // Do install processing
160 case PKGMGR_REQ_UNINSTALL:
161 // Do uninstall processing
163 case PKGMGR_REQ_RECOVER:
164 // Do recovere processing
166 case PKGMGR_REQ_REINSTALL:
167 // Do reinstall processing
173 pkgmgr_installer_free(pi);
179 int pkgmgr_installer_get_request_type(pkgmgr_installer *pi);
183 @pre pkgmgr_installer_receive_request() must be called.
185 @see pkgmgr_installer_receive_request
186 @param[in] pi pkgmgr_installer object
188 @retval NULL on function failure
189 @remark Returned uid must not be modified.
191 #include <pkgmgr_installer.h>
192 int main(int argc, char **argv)
194 pkgmgr_installer *pi;
198 pi = pkgmgr_installer_new();
200 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
204 uid = pkgmgr_installer_get_uid(pi);
208 pkgmgr_installer_free(pi);
213 uid_t pkgmgr_installer_get_uid(pkgmgr_installer *pi);
216 @brief Get request info
217 @pre pkgmgr_installer_receive_request() must be called.
219 @see pkgmgr_installer_receive_request
220 @param[in] pi pkgmgr_installer object
221 @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.
222 @retval NULL on function failure
223 @remark Returned string must not be modified.
225 #include <pkgmgr_installer.h>
226 int main(int argc, char **argv)
228 pkgmgr_installer *pi;
230 char *req_info = NULL;
232 pi = pkgmgr_installer_new();
234 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
238 req_info = (char *) pkgmgr_installer_get_request_info(pi);
242 pkgmgr_installer_free(pi);
247 const char *pkgmgr_installer_get_request_info(pkgmgr_installer *pi);
251 @pre pkgmgr_installer_receive_request() must be called.
253 @see pkgmgr_installer_receive_request
254 @param[in] pi pkgmgr_installer object
255 @return TEP path if exists
256 @retval NULL on function failure
257 @remark Returned string must not be modified.
259 #include <pkgmgr_installer.h>
260 int main(int argc, char **argv)
262 pkgmgr_installer *pi;
264 char *tep_path = NULL;
266 pi = pkgmgr_installer_new();
268 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
272 tep_path = (char *) pkgmgr_installer_get_tep_path(pi);
276 pkgmgr_installer_free(pi);
281 const char *pkgmgr_installer_get_tep_path(pkgmgr_installer *pi);
284 @brief Get TEP move type
285 @pre pkgmgr_installer_receive_request() must be called.
287 @see pkgmgr_installer_receive_request
288 @param[in] pi pkgmgr_installer object
289 @return integer value indicates tep move type(0: copy TEP file / 1: move TEP file)
290 @retval 0 on function failure
291 @remark Returned string must not be modified.
293 #include <pkgmgr_installer.h>
294 int main(int argc, char **argv)
296 pkgmgr_installer *pi;
298 int tep_move_type = -1;
300 pi = pkgmgr_installer_new();
302 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
306 tep_move_type = pkgmgr_installer_get_tep_move_type(pi);
310 pkgmgr_installer_free(pi);
315 int pkgmgr_installer_get_tep_move_type(pkgmgr_installer *pi);
318 @brief Get session ID for a certain session
319 @pre pkgmgr_installer_receive_request() must be called.
321 @see pkgmgr_installer_receive_request
322 @param[in] pi pkgmgr_installer object
324 @retval NULL on function failure
325 @remark Returned string must not be modified.
327 #include <pkgmgr_installer.h>
328 int main(int argc, char **argv)
330 pkgmgr_installer *pi;
332 char *session_id = NULL;
334 pi = pkgmgr_installer_new();
336 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
340 session_id = (char *) pkgmgr_installer_get_session_id(pi);
344 pkgmgr_installer_free(pi);
349 const char *pkgmgr_installer_get_session_id(pkgmgr_installer *pi);
352 @brief Get a license path
353 @pre pkgmgr_installer_receive_request() must be called.
355 @see pkgmgr_installer_receive_request
356 @param[in] pi pkgmgr_installer object
358 @retval NULL on function failure
359 @remark Returned string must not be modified.
361 #include <pkgmgr_installer.h>
362 int main(int argc, char **argv)
364 pkgmgr_installer *pi;
366 char *license_path = NULL;
368 pi = pkgmgr_installer_new();
370 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
374 session_id = (char *) pkgmgr_installer_get_license_path(pi);
378 pkgmgr_installer_free(pi);
383 const char *pkgmgr_installer_get_license_path(pkgmgr_installer *pi);
386 @brief Get a optional data
387 @pre pkgmgr_installer_receive_request() must be called.
389 @see pkgmgr_installer_receive_request
390 @param[in] pi pkgmgr_installer object
391 @return optional data
392 @retval NULL on function failure
393 @remark Returned string must not be modified.
395 #include <pkgmgr_installer.h>
396 int main(int argc, char **argv)
398 pkgmgr_installer *pi;
400 char *optional_data = NULL;
402 pi = pkgmgr_installer_new();
404 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
408 optional_data = (char *) pkgmgr_installer_get_optional_data(pi);
412 pkgmgr_installer_free(pi);
417 const char *pkgmgr_installer_get_optional_data(pkgmgr_installer *pi);
420 @brief Get if a request is with quite mode or not
421 @pre pkgmgr_installer_receive_request() must be called.
423 @see pkgmgr_installer_receive_request
424 @param[in] pi pkgmgr_installer object
425 @return Operation result
426 @retval 0 if a request is not quiet mode
427 @retval 1 if a request is quiet mode
430 #include <pkgmgr_installer.h>
431 int main(int argc, char **argv)
433 pkgmgr_installer *pi;
436 pi = pkgmgr_installer_new();
438 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
442 if(pkgmgr_installer_is_quiet(pi)) {
443 // Do quiet mode work...
445 // Do normal mode work...
448 pkgmgr_installer_free(pi);
453 int pkgmgr_installer_is_quiet(pkgmgr_installer *pi);
457 @pre pkgmgr_installer_receive_request() must be called.
459 @see pkgmgr_installer_receive_request
460 @param[in] pi pkgmgr_installer object
461 @return Operation result
462 @retval enum value of move type
465 #include <pkgmgr_installer.h>
466 int main(int argc, char **argv)
468 pkgmgr_installer *pi;
471 pi = pkgmgr_installer_new();
473 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
477 move_type = pkgmgr_installer_get_move_type(pi);
481 pkgmgr_installer_free(pi);
486 int pkgmgr_installer_get_move_type(pkgmgr_installer *pi);
489 @brief Get caller package id
490 @pre pkgmgr_installer_receive_request() must be called.
492 @see pkgmgr_installer_receive_request
493 @param[in] pi pkgmgr_installer object
494 @return Operation result
495 @retval enum value of move type
498 #include <pkgmgr_installer.h>
499 int main(int argc, char **argv)
501 pkgmgr_installer *pi;
505 pi = pkgmgr_installer_new();
507 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
511 pkgid = (char *) pkgmgr_installer_get_caller_pkgid(pi);
515 pkgmgr_installer_free(pi);
520 const char *pkgmgr_installer_get_caller_pkgid(pkgmgr_installer *pi);
523 @brief Get if the request is for preload app or not
524 @pre pkgmgr_installer_receive_request() must be called.
526 @see pkgmgr_installer_receive_request
527 @param[in] pi pkgmgr_installer object
528 @return Operation result
529 @retval 0 if a request is not for preload
530 @retval 1 if a request is for preload
533 #include <pkgmgr_installer.h>
534 int main(int argc, char **argv)
536 pkgmgr_installer *pi;
540 pi = pkgmgr_installer_new();
542 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
546 is_preload = pkgmgr_installer_get_is_preload(pi);
550 pkgmgr_installer_free(pi);
555 int pkgmgr_installer_get_is_preload(pkgmgr_installer *pi);
556 int pkgmgr_installer_get_is_preload_rw(pkgmgr_installer *pi);
559 @brief Get if the request is for force-removal
560 @pre pkgmgr_installer_receive_request() must be called.
562 @see pkgmgr_installer_receive_request
563 @param[in] pi pkgmgr_installer object
564 @return Operation result
565 @retval 0 if a request is not for force-removal
566 @retval 1 if a request is for force-removal
569 #include <pkgmgr_installer.h>
570 int main(int argc, char **argv)
572 pkgmgr_installer *pi;
574 int force_remove = 0;
576 pi = pkgmgr_installer_new();
578 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
582 force_remove = pkgmgr_installer_get_force_removal(pi);
586 pkgmgr_installer_free(pi);
591 int pkgmgr_installer_get_force_removal(pkgmgr_installer *pi);
592 int pkgmgr_installer_get_no_removal(pkgmgr_installer *pi);
595 @brief Get if the request is for keep-rwdata
596 @pre pkgmgr_installer_receive_request() must be called.
598 @see pkgmgr_installer_receive_request
599 @param[in] pi pkgmgr_installer object
600 @return Operation result
601 @retval 0 if a request is not for keep-rwdata
602 @retval 1 if a request is for keep-rwdata
603 @remark Keep RW-data of updated RO pkg.
605 #include <pkgmgr_installer.h>
606 int main(int argc, char **argv)
608 pkgmgr_installer *pi;
610 int force_remove = 0;
612 pi = pkgmgr_installer_new();
614 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
618 force_remove = pkgmgr_installer_get_keep_rwdata(pi);
622 pkgmgr_installer_free(pi);
627 int pkgmgr_installer_get_keep_rwdata(pkgmgr_installer *pi);
630 @brief Get if the request is for partial-rw
631 @pre pkgmgr_installer_receive_request() must be called.
633 @see pkgmgr_installer_receive_request
634 @param[in] pi pkgmgr_installer object
635 @return Operation result
636 @retval 0 if a request is not for partial-rw
637 @retval 1 if a request is for partial-rw
638 @remark For install/update/uninstall of stubs of RO pkg
641 #include <pkgmgr_installer.h>
642 int main(int argc, char **argv)
644 pkgmgr_installer *pi;
646 int force_remove = 0;
648 pi = pkgmgr_installer_new();
650 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
654 force_remove = pkgmgr_installer_get_partial_rw(pi);
658 pkgmgr_installer_free(pi);
663 int pkgmgr_installer_get_partial_rw(pkgmgr_installer *pi);
666 @brief Get debug mode value
667 @pre pkgmgr_installer_receive_request() must be called.
669 @see pkgmgr_installer_receive_request
670 @param[in] pi pkgmgr_installer object
671 @return Operation result
672 @retval 0 if a request is not debug mode
673 @retval 1 if a request is debug mode
676 #include <pkgmgr_installer.h>
677 int main(int argc, char **argv)
679 pkgmgr_installer *pi;
681 int force_remove = 0;
683 pi = pkgmgr_installer_new();
685 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
689 force_remove = pkgmgr_installer_get_debug_mode(pi);
693 pkgmgr_installer_free(pi);
698 int pkgmgr_installer_get_debug_mode(pkgmgr_installer *pi);
701 @brief Send a app status signal
705 @param[in] pi pkgmgr_installer object
706 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
707 @param[in] pkgid package id
708 @param[in] appid application id
709 @param[in] key Signal key
710 @param[in] val Signal value
711 @return Operation result
713 @retval -errno on failure
715 #include <pkgmgr_installer.h>
716 void send_app_singal(uid_t uid, int request_type, int req_id,
717 const char *pkg_type, const char *pkgid, const char *appid,
718 const char *key, const char *val)
720 pkgmgr_installer *pi;
723 pi = pkgmgr_installer_new();
726 if (pkgmgr_installer_set_uid(pi, uid))
728 if (pkgmgr_installer_set_request_type(pi, request_type))
730 if ((pkgmgr_installer_set_session_id(pi, req_id))
732 pkgmgr_installer_send_app_signal(pi, pkg_type, pkgid, appid, key, val);
737 int pkgmgr_installer_send_app_signal(pkgmgr_installer *pi,
738 const char *pkg_type,
741 const char *key, const char *val);
744 @brief Send a process status signal
748 @param[in] pi pkgmgr_installer object
749 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
750 @param[in] pkgid package id
751 @param[in] key Signal key
752 @param[in] val Signal value
753 @return Operation result
755 @retval -errno on failure
756 @remark If pkgmgr_installer_receive_request() is not called, the session ID will be null string (=="/0").
758 #include <pkgmgr_installer.h>
759 int main(int argc, char **argv)
761 pkgmgr_installer *pi;
763 char *session_id = NULL;
765 pi = pkgmgr_installer_new();
767 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
773 pkgmgr_installer_send_signal(pi,
774 "deb", "org.tizen.foo", "install_percent", "100");
777 pkgmgr_installer_free(pi);
782 int pkgmgr_installer_send_signal(pkgmgr_installer *pi,
783 const char *pkg_type,
784 const char *pkgid, const char *key,
788 @brief Send a app status signal
792 @param[in] pi pkgmgr_installer object
793 @param[in] uid user id
794 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
795 @param[in] pkgid package id
796 @param[in] appid application id
797 @param[in] key Signal key
798 @param[in] val Signal value
799 @return Operation result
800 @retval 0 on success, otherwise -1
801 @remark If pkgmgr_installer_receive_request() is not called, the session ID will be null string (=="/0").
803 int pkgmgr_installer_send_app_signal_for_uid(pkgmgr_installer *pi,
805 const char *pkg_type,
808 const char *key, const char *val);
811 @brief Send a process status signal
815 @param[in] pi pkgmgr_installer object
816 @param[in] uid user id
817 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
818 @param[in] pkgid package id
819 @param[in] key Signal key
820 @param[in] val Signal value
821 @return Operation result
822 @retval 0 on success, otherwise -1
823 @remark If pkgmgr_installer_receive_request() is not called, the session ID will be null string (=="/0").
825 int pkgmgr_installer_send_signal_for_uid(pkgmgr_installer *pi,
827 const char *pkg_type,
828 const char *pkgid, const char *key,
832 @brief Send a signal which indicates application is being uninstalled
836 @param[in] pi pkgmgr_installer object
837 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
838 @param[in] pkgid package id
839 @param[in] key Signal key
840 @param[in] val Signal value
841 @return Operation result
843 @retval -errno on failure
845 #include <pkgmgr_installer.h>
846 int main(int argc, char **argv)
848 pkgmgr_installer *pi;
850 char *session_id = NULL;
852 pi = pkgmgr_installer_new();
854 if(pkgmgr_installer_receive_request(pi, argc, argv)) {
860 pkgmgr_installer_send_app_uninstall_signal(pi,
861 "tpk", "org.tizen.foo");
864 pkgmgr_installer_free(pi);
869 int pkgmgr_installer_send_app_uninstall_signal(pkgmgr_installer *pi,
870 const char *pkg_type,
875 @brief Send a signal which indicates application is being uninstalled
879 @param[in] pi pkgmgr_installer object
880 @param[in] uid user id
881 @param[in] pkg_type package type: "deb", "jar", "wgt", ...
882 @param[in] pkgid package id
883 @param[in] key Signal key
884 @param[in] val Signal value
885 @return Operation result
887 @retval -errno on failure
889 int pkgmgr_installer_send_app_uninstall_signal_for_uid(
890 pkgmgr_installer *pi, uid_t uid, const char *pkg_type,
891 const char *pkgid, const char *val);
894 * @brief This API sets the uid of given pkgmgr_installer.
896 * This API is for package-manager client application.\n
898 * @param[in]pi pointer to pkgmgr_installer
900 * @return 0 if success, error code(<0) if fail\n
902 int pkgmgr_installer_set_uid(pkgmgr_installer *pi, uid_t uid);
905 * @brief This API sets the requst info of given pkgmgr_installer.
907 * This API is for package-manager client application.\n
909 * @param[in]pi pointer to pkgmgr_installer
910 * @param[in] request_type request type
911 * @return 0 if success, error code(<0) if fail\n
913 int pkgmgr_installer_set_request_type(pkgmgr_installer *pi, int request_type);
916 * @brief This API sets the session ID.
918 * This API is for package-manager client application.\n
920 * @param[in] pi pointer to pkgmgr_installer
921 * @param[in] session_id session ID to be set
922 * @return 0 if success, error code(<0) if fail\n
924 int pkgmgr_installer_set_session_id(pkgmgr_installer *pi, const char *session_id);
927 * @brief This API creates the certinfo handle.
929 * This API is for package-manager client application.\n
931 * @param[out] handle pointer to cert info handle
932 * @return 0 if success, error code(<0) if fail\n
934 int pkgmgr_installer_create_certinfo_set_handle(pkgmgr_instcertinfo_h *handle);
937 * @brief This API sets cert value for corresponding cert type.
939 * This API is for package-manager client application.\n
941 * @param[in] handle pointer to cert info handle
942 * @param[in] cert_type enum value for certificate type
943 * @param[in] cert_value certificate value
944 * @return 0 if success, error code(<0) if fail\n
946 int pkgmgr_installer_set_cert_value(pkgmgr_instcertinfo_h handle, pkgmgr_instcert_type cert_type, char *cert_value);
949 * @brief This API saves cert info in DB.
951 * This API is for package-manager client application.\n
953 * @param[in] pkgid package ID
954 * @param[in] handle pointer to cert info handle
955 * @return 0 if success, error code(<0) if fail\n
957 int pkgmgr_installer_save_certinfo(const char *pkgid, pkgmgr_instcertinfo_h handle, uid_t uid);
960 * @brief This API destroys cert info handle freeing all resources.
962 * This API is for package-manager client application.\n
964 * @param[in] handle pointer to cert info handle
965 * @return 0 if success, error code(<0) if fail\n
967 int pkgmgr_installer_destroy_certinfo_set_handle(pkgmgr_instcertinfo_h handle);
970 * @brief This API deletes cert info from DB. To be used to cleanup info upon pkg uninstallation
972 * This API is for package-manager client application.\n
974 * @param[in] pkgid package ID
975 * @return 0 if success, error code(<0) if fail\n
977 int pkgmgr_installer_delete_certinfo(const char *pkgid);
980 * @brief This API sets privilege level for pkgmgr_installer_info
982 * This API is for installer backend.\n
984 * @param[in] level pkgmgr_privilege_level
985 * @return 0 if success, error code(<0) if fail\n
987 int pkgmgr_installer_set_privilege_level(pkgmgr_privilege_level level);
993 #endif /* __PKGMGR_INSTALLER_H__ */