diff options
author | Heonjae Jang <heonjae.jang@samsung.com> | 2018-04-06 13:28:12 +0900 |
---|---|---|
committer | Heonjae Jang <heonjae.jang@samsung.com> | 2018-04-06 13:28:12 +0900 |
commit | 96a8a3e1d043677b8ca2449bb7d6bbd5431daa74 (patch) | |
tree | f955277d618a9790cd0f5f6774e58c1263eb2026 | |
parent | bb05c1ebd62f2b28d4ea465dbeb934c50d0ea33d (diff) | |
download | ttsd-worker-package-96a8a3e1d043677b8ca2449bb7d6bbd5431daa74.tar.gz ttsd-worker-package-96a8a3e1d043677b8ca2449bb7d6bbd5431daa74.tar.bz2 ttsd-worker-package-96a8a3e1d043677b8ca2449bb7d6bbd5431daa74.zip |
Implements Installer
-rwxr-xr-x | CMakeLists.txt | 1 | ||||
-rw-r--r-- | inc/installer.h | 6 | ||||
-rwxr-xr-x | org.tizen.package-manager-worker.xml | 1 | ||||
-rw-r--r-- | src/downloader.c | 4 | ||||
-rw-r--r-- | src/installer.c | 43 |
5 files changed, 54 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 7994d82..122a218 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/inc) SET(SRCS
src/package-manager-worker.c
src/downloader.c
+ src/installer.c
)
ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
diff --git a/inc/installer.h b/inc/installer.h new file mode 100644 index 0000000..fdf22b4 --- /dev/null +++ b/inc/installer.h @@ -0,0 +1,6 @@ +#ifndef __INSTALLER_H__ +#define __INSTALLER_H__ + +void installer_install(char *path); + +#endif /* __INSTALLER_H__ */ diff --git a/org.tizen.package-manager-worker.xml b/org.tizen.package-manager-worker.xml index 753ec97..3c3add5 100755 --- a/org.tizen.package-manager-worker.xml +++ b/org.tizen.package-manager-worker.xml @@ -9,5 +9,6 @@ <privilege>http://tizen.org/privilege/network.get</privilege> <privilege>http://tizen.org/privilege/internet</privilege> <privilege>http://tizen.org/privilege/externalstorage</privilege> + <privilege>http://tizen.org/privilege/packagemanager.admin</privilege> </privileges> </manifest> diff --git a/src/downloader.c b/src/downloader.c index 5b23491..6dc4340 100644 --- a/src/downloader.c +++ b/src/downloader.c @@ -1,4 +1,5 @@ #include "downloader.h" +#include "installer.h" #include <app_common.h> #include <curl/curl.h> #include <dlog.h> @@ -28,7 +29,6 @@ void downloader_download(char *path) { snprintf(downloaded_path, sizeof(downloaded_path) - 1, "%s%s", data_path, file_name); free(data_path); - free(file_name); data_path = NULL; file_name = NULL; @@ -53,5 +53,7 @@ void downloader_download(char *path) { curl_easy_cleanup(curl); fclose(fp); + + installer_install(downloaded_path); } } diff --git a/src/installer.c b/src/installer.c new file mode 100644 index 0000000..176bbf8 --- /dev/null +++ b/src/installer.c @@ -0,0 +1,43 @@ +#include "installer.h" +#include <dlog.h> +#include <package_manager.h> +#include <stdio.h> +#include <tizen.h> + +static package_manager_request_h handle; + +static void _install_cb(int id, const char *type, const char *package, + package_manager_event_type_e event_type, + package_manager_event_state_e event_state, int progress, + package_manager_error_e error, void *user_data) { + if (event_type == PACKAGE_MANAGER_EVENT_TYPE_INSTALL || + event_type == PACKAGE_MANAGER_EVENT_TYPE_UPDATE) { + if (event_state == PACKAGE_MANAGER_EVENT_STATE_COMPLETED) { + dlog_print(DLOG_DEBUG, "package-manager-worker", "Success"); + package_manager_request_destroy(handle); + } else if (event_state == PACKAGE_MANAGER_EVENT_STATE_FAILED) { + dlog_print(DLOG_DEBUG, "package-manager-worker", "Fail"); + package_manager_request_destroy(handle); + } + } +} + +void installer_install(char *path) { + int ret = 0; + int request_id = 0; + + ret = package_manager_request_create(&handle); + if (ret != PACKAGE_MANAGER_ERROR_NONE) { + dlog_print(DLOG_DEBUG, "package-manager-worker", + "Fail create package manager request handle : %d(%s)", ret, + get_error_message(ret)); + return; + } + ret = package_manager_request_install_with_cb(handle, path, _install_cb, + NULL, &request_id); + if (ret != PACKAGE_MANAGER_ERROR_NONE) { + dlog_print(DLOG_DEBUG, "package-manager-worker", + "Fail request package manager install : %d(%s)", ret, + get_error_message(ret)); + } +}
\ No newline at end of file |