summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/InstallationProxy.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/InstallationProxy.c b/src/InstallationProxy.c
index 7a8ef5a..917886d 100644
--- a/src/InstallationProxy.c
+++ b/src/InstallationProxy.c
@@ -676,6 +676,11 @@ leave_unlock:
676 * 676 *
677 * @param client The connected installation proxy client 677 * @param client The connected installation proxy client
678 * @param appid ApplicationIdentifier of the app to archive. 678 * @param appid ApplicationIdentifier of the app to archive.
679 * @param options This is either 0 for default behaviour (make an archive
680 * including app/user settings etc. AND uninstall the application),
681 * or one or a combination of the following options:
682 * INSTPROXY_ARCHIVE_APP_ONLY (1)
683 * INSTPROXY_ARCHIVE_SKIP_UNINSTALL (2)
679 * @param status_cb Callback function for progress and status information. If 684 * @param status_cb Callback function for progress and status information. If
680 * NULL is passed, this function will run synchronously. 685 * NULL is passed, this function will run synchronously.
681 * 686 *
@@ -687,7 +692,7 @@ leave_unlock:
687 * created successfully; any error occuring during the operation has to be 692 * created successfully; any error occuring during the operation has to be
688 * handled inside the specified callback function. 693 * handled inside the specified callback function.
689 */ 694 */
690instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid, instproxy_status_cb_t status_cb) 695instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid, uint32_t options, instproxy_status_cb_t status_cb)
691{ 696{
692 if (!client || !client->connection || !appid) 697 if (!client || !client->connection || !appid)
693 return INSTPROXY_E_INVALID_ARG; 698 return INSTPROXY_E_INVALID_ARG;
@@ -700,6 +705,16 @@ instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid
700 705
701 plist_t dict = plist_new_dict(); 706 plist_t dict = plist_new_dict();
702 plist_dict_insert_item(dict, "ApplicationIdentifier", plist_new_string(appid)); 707 plist_dict_insert_item(dict, "ApplicationIdentifier", plist_new_string(appid));
708 if (options > 0) {
709 plist_t client_opts = plist_new_dict();
710 if (options & INSTPROXY_ARCHIVE_APP_ONLY) {
711 plist_dict_insert_item(client_opts, "ArchiveType", plist_new_string("ApplicationOnly"));
712 }
713 if (options & INSTPROXY_ARCHIVE_SKIP_UNINSTALL) {
714 plist_dict_insert_item(client_opts, "SkipUninstall", plist_new_bool(1));
715 }
716 plist_dict_insert_item(dict, "ClientOptions", client_opts);
717 }
703 plist_dict_insert_item(dict, "Command", plist_new_string("Archive")); 718 plist_dict_insert_item(dict, "Command", plist_new_string("Archive"));
704 719
705 instproxy_lock(client); 720 instproxy_lock(client);