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>
31 #include <FAppPkgPackageInfo.h>
32 #include <FAppPkg_PackageManagerImpl.h>
34 #include "InstallerManager.h"
36 using namespace Tizen::App;
37 using namespace Tizen::App::Package;
38 using namespace Tizen::Base;
39 using namespace Tizen::Io;
41 extern "C" void Osp_Initialize();
42 static bool __osp_installer_report_result(const PackageId& packageId, int errorType);
44 static pkgmgr_installer *_pi = null;
47 main(int argc, char **argv)
50 const char *pkg_info = null;
51 char* pkg_path = null;
52 const char* pOptional = null;
57 pkgmgr_installer *pi = null;
63 for (int i = 0; i < argc; i++)
65 const char* pStr = argv[i];
68 AppLog(" # argv[%d] = [%s]", i, pStr);
70 std::unique_ptr< String > pCmd(new (std::nothrow) String(pStr));
71 TryReturn(pCmd, 0, "pCmd is null.");
73 buf.Append(*pCmd.get());
86 fprintf(stderr, " ## osp-installer: %s[%s] cmd=[%ls]\n", OSP_INSTALLER_VERSION, emul?"Emulator":"Target", buf.GetPointer());
88 if (argc == TEST_ARG_COUNT)
90 errorType = InstallerManager::ReqeustByTest();
93 else if (argc == COMMAND_ARG_COUNT)
95 errorType = InstallerManager::RequestByCommand(argc, argv);
99 pi = pkgmgr_installer_new();
102 pkgmgr_installer_receive_request(pi, argc, argv);
104 req_type = pkgmgr_installer_get_request_type(pi);
105 if (PKGMGR_REQ_INVALID >= req_type)
110 pkg_info = pkgmgr_installer_get_request_info(pi);
111 pkg_path = (const_cast<char*>(pkg_info));
112 AppLog(" # path = [%s]", pkg_path);
118 case PKGMGR_REQ_INSTALL:
120 pOptional = pkgmgr_installer_get_optional_data(pi);
123 optionalData = pOptional;
124 AppLog(" # optional = [%ls]", optionalData.GetPointer());
129 result r = File::GetAttributes(path, attr);
132 AppLog("GetAttributes() failed. [%ls]", path.GetPointer());
136 if (attr.IsDirectory())
138 if (path.EndsWith("/") == true)
140 int length = path.GetLength();
141 path.Remove(length - 1, 1);
144 path.SubString(path.GetLength() - PACKAGE_ID_LENGTH, PACKAGE_ID_LENGTH, packageId);
148 std::unique_ptr< PackageInfo > pPackageInfo(_PackageManagerImpl::GetInstance()->GetPackageInfoFromFileN(path));
151 packageId = pPackageInfo->GetId();
155 optionalData = packageId;
156 AppLog(" # path = [%ls] -> optionalData = [%ls]", path.GetPointer(), optionalData.GetPointer());
159 errorType = InstallerManager::Request(path, INSTALLER_OPERATION_INSTALL, INSTALLER_OPTION_NORMAL, pi, &optionalData);
161 // if (errorType != 0)
163 // manager.RemoveGarbage(path);
166 __osp_installer_report_result(packageId, errorType);
170 case PKGMGR_REQ_UNINSTALL:
172 PackageId reqeustPackageId;
174 path.SubString(0, PACKAGE_ID_LENGTH, reqeustPackageId);
176 AppLog("reqeustPackage = %ls", reqeustPackageId.GetPointer());
177 ret = InstallerManager::Request(reqeustPackageId, INSTALLER_OPERATION_UNINSTALL, INSTALLER_OPTION_NORMAL, _pi);
179 __osp_installer_report_result(reqeustPackageId, errorType);
183 case PKGMGR_REQ_REINSTALL:
185 PackageId rdsPackageId;
187 path.SubString(0, PACKAGE_ID_LENGTH, rdsPackageId);
189 AppLog("rdsPackage = %ls", rdsPackageId.GetPointer());
190 ret = InstallerManager::Request(rdsPackageId, INSTALLER_OPERATION_REINSTALL, INSTALLER_OPTION_NORMAL, _pi, &rdsPackageId);
192 __osp_installer_report_result(rdsPackageId, errorType);
196 case PKGMGR_REQ_MOVE:
201 moveType = pkgmgr_installer_get_move_type(_pi);
203 InstallerManager::RequestMove(path, moveType);
207 AppLog("_pi is null");
228 __osp_installer_report_result(const PackageId& packageId, int errorType)
230 AppLog("------------------------------------------");
231 AppLog("osp_installer_report_result");
232 AppLog(" # request_type = [%d]", pkgmgr_installer_get_request_type(_pi));
233 AppLog(" # request_info = [%s]", pkgmgr_installer_get_request_info(_pi));
234 AppLog(" # session = [%s]", pkgmgr_installer_get_session_id(_pi));
235 if (packageId.IsEmpty() == false)
237 AppLog(" # package = [%ls]", packageId.GetPointer());
239 AppLog(" # errorType = [%d]", errorType);
240 AppLog("------------------------------------------");
244 AppLog("_pi is null");
248 pkgmgr_installer_free(_pi);