2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
28 #include <pkgmgr_installer.h>
30 #include <FBase_StringConverter.h>
32 #include "InstallerManager.h"
33 #include "InstallerDefs.h"
34 #include "InstallerUtil.h"
36 using namespace Tizen::Base;
38 extern "C" void Osp_Initialize();
39 static bool __osp_installer_report_result(const String& appId, int errorType);
41 static pkgmgr_installer *_pi = null;
44 main(int argc, char **argv)
47 const char *pkg_info = NULL;
48 char* pkg_path = NULL;
52 InstallerManager manager;
53 pkgmgr_installer *pi = null;
58 AppLogTag(OSP_INSTALLER, "--\n\n\n");
59 AppLogTag(OSP_INSTALLER, "==========================================");
60 AppLogTag(OSP_INSTALLER, " # %s", OSP_INSTALLER_VERSION);
61 AppLogTag(OSP_INSTALLER, " # argc = %d", argc);
63 if (argc == TEST_ARG_COUNT)
65 errorType = manager.ReqeustByTest();
66 manager.PrintResult();
69 else if (argc == COMMAND_ARG_COUNT)
71 errorType = manager.RequestByCommand(argc, argv);
75 pi = pkgmgr_installer_new();
78 pkgmgr_installer_receive_request(pi, argc, argv);
80 req_type = pkgmgr_installer_get_request_type(pi);
81 if (PKGMGR_REQ_INVALID >= req_type)
86 pkg_info = pkgmgr_installer_get_request_info(pi);
87 pkg_path = (const_cast<char*>(pkg_info));
88 AppLogTag(OSP_INSTALLER, " # path = [%s]", pkg_path);
94 case PKGMGR_REQ_INSTALL:
96 errorType = manager.Request(path, INSTALLER_OPERATION_INSTALL, REQUESTER_TYPE_NORMAL);
97 appId = manager.GetId();
100 char resultBuf[128] = {0};
101 snprintf(resultBuf, sizeof(resultBuf), "%ls", appId.GetPointer());
102 pkgmgr_installer_send_signal(_pi, "tpk", resultBuf, "start", "install");
106 AppLogTag(OSP_INSTALLER, "_pi is null");
109 // if (errorType != 0)
111 // manager.RemoveGarbage(path);
114 __osp_installer_report_result(appId, errorType);
115 manager.PrintResult();
119 case PKGMGR_REQ_UNINSTALL:
123 if (path.Contains(PACKAGE_NAME_PREFIX_ORG) == true)
125 String prefixPackage(PACKAGE_NAME_PREFIX_ORG);
126 path.SubString(prefixPackage.GetLength(), APPID_LENGTH, requestAppId);
130 path.SubString(0, APPID_LENGTH, requestAppId);
133 AppLogTag(OSP_INSTALLER, "requestAppId = %ls", requestAppId.GetPointer());
134 ret = manager.Request(requestAppId, INSTALLER_OPERATION_UNINSTALL, REQUESTER_TYPE_NORMAL);
135 appId = manager.GetId();
139 char resultBuf[128] = {0};
140 snprintf(resultBuf, sizeof(resultBuf), "%ls", appId.GetPointer());
141 pkgmgr_installer_send_signal(_pi, "tpk", resultBuf, "start", "uninstall");
145 AppLogTag(OSP_INSTALLER, "_pi is null");
148 __osp_installer_report_result(appId, errorType);
149 manager.PrintResult();
153 case PKGMGR_REQ_MOVE:
158 moveType = pkgmgr_installer_get_move_type(_pi);
160 manager.RequestMove(path, moveType);
164 AppLog("_pi is null");
185 __osp_installer_send_error(int errorType)
187 char errorMsg[11] = {0};
190 if (errorType >= INSTALLER_ERROR_USER_CANCEL)
192 error = INSTALLER_ERROR_FATAL_ERROR;
195 snprintf(errorMsg, sizeof(errorMsg) - 1, "%d", error);
196 pkgmgr_installer_send_signal(_pi, "tpk", "", "error", errorMsg);
202 __osp_installer_report_result(const String& appId, int errorType)
205 char resultBuf[128] = {0};
206 InstallerManager manager;
207 const char* pPkgType = "tpk";
208 const char* pKey = "end";
209 const char* pValue = null;
211 AppLogTag(OSP_INSTALLER, "------------------------------------------");
212 AppLogTag(OSP_INSTALLER, "osp_installer_report_result");
213 AppLogTag(OSP_INSTALLER, " # request_type = [%d]", pkgmgr_installer_get_request_type(_pi));
214 AppLogTag(OSP_INSTALLER, " # request_info = [%s]", pkgmgr_installer_get_request_info(_pi));
215 AppLogTag(OSP_INSTALLER, " # session_id = [%s]", pkgmgr_installer_get_session_id(_pi));
216 AppLogTag(OSP_INSTALLER, "------------------------------------------");
220 AppLogTag(OSP_INSTALLER, "_pi is null");
226 if (appId.IsEmpty() == true)
228 snprintf(resultBuf, sizeof(resultBuf), "0000000000");
232 snprintf(resultBuf, sizeof(resultBuf), "%ls", appId.GetPointer());
239 snprintf(resultBuf, sizeof(resultBuf), "0000000000");
241 __osp_installer_send_error(errorType);
244 ret = pkgmgr_installer_send_signal(_pi, pPkgType, resultBuf, pKey, pValue);
245 AppLogTag(OSP_INSTALLER, "------------------------------------------");
246 AppLogTag(OSP_INSTALLER, "pkgmgr_installer_send_signal");
247 AppLogTag(OSP_INSTALLER, " # type = [%s]", pPkgType);
248 AppLogTag(OSP_INSTALLER, " # pkg id = [%s]", resultBuf);
249 AppLogTag(OSP_INSTALLER, " # key = [%s]", pKey);
250 AppLogTag(OSP_INSTALLER, " # val = [%s]", pValue);
251 AppLogTag(OSP_INSTALLER, " # ret = [%s]", (ret == 0)?"success":"failure");
252 AppLogTag(OSP_INSTALLER, "------------------------------------------");
254 pkgmgr_installer_free(_pi);