diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/InstallationProxy.c | 17 |
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 | */ |
| 690 | instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid, instproxy_status_cb_t status_cb) | 695 | instproxy_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); |
