X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=programs%2Fimagex.c;h=601ad01ca53374a06c63007c5174b4fee5b4f26b;hp=854be037e42ac281dd25eba5685f017bee191d69;hb=56ba8c06fa16282e9d89e0c8c88ec1d69c20d4d3;hpb=466646c4f936eb3387b76dcb9a41e7b8cfb98fe2 diff --git a/programs/imagex.c b/programs/imagex.c index 854be037..601ad01c 100644 --- a/programs/imagex.c +++ b/programs/imagex.c @@ -1519,7 +1519,7 @@ imagex_apply(int argc, tchar **argv) num_images = wimlib_get_num_images(w); if (argc == 2 && num_images != 1) { imagex_error(T("\"%"TS"\" contains %d images; Please select one " - "(or all)"), wimfile, num_images); + "(or all)."), wimfile, num_images); usage(APPLY); ret = -1; goto out; @@ -1928,7 +1928,7 @@ imagex_dir(int argc, tchar **argv) * choose that one; otherwise, print an error. */ num_images = wimlib_get_num_images(w); if (num_images != 1) { - imagex_error(T("The file \"%"TS"\" contains %d images; Please " + imagex_error(T("\"%"TS"\" contains %d images; Please " "select one."), wimfile, num_images); usage(DIR); ret = -1; @@ -2699,7 +2699,7 @@ imagex_mount_rw_or_ro(int argc, tchar **argv) image = 1; num_images = wimlib_get_num_images(w); if (num_images != 1) { - imagex_error(T("The file \"%"TS"\" contains %d images; Please " + imagex_error(T("\"%"TS"\" contains %d images; Please " "select one."), wimfile, num_images); usage((mount_flags & WIMLIB_MOUNT_FLAG_READWRITE) ? MOUNTRW : MOUNT); @@ -2934,6 +2934,7 @@ imagex_update(int argc, tchar **argv) size_t cmd_file_nchars; struct wimlib_update_command *cmds; size_t num_cmds; + int num_images; const tchar *config_file = NULL; tchar *config_str; @@ -3017,6 +3018,15 @@ imagex_update(int argc, tchar **argv) if (ret) goto out_wimlib_free; + num_images = wimlib_get_num_images(wim); + if (argc == 1 && num_images != 1) { + imagex_error(T("\"%"TS"\" contains %d images; Please select one."), + wimfile, num_images); + usage(UPDATE); + ret = -1; + goto out_wimlib_free; + } + /* Parse capture configuration file if specified */ if (config_file) { size_t config_len; @@ -3069,15 +3079,23 @@ imagex_update(int argc, tchar **argv) } } +#ifdef __WIN32__ + win32_acquire_capture_privileges(); +#endif + /* Execute the update commands */ ret = wimlib_update_image(wim, image, cmds, num_cmds, update_flags, imagex_progress_func); if (ret) - goto out_free_cmds; + goto out_release_privs; /* Overwrite the updated WIM */ ret = wimlib_overwrite(wim, write_flags, num_threads, imagex_progress_func); +out_release_privs: +#ifdef __WIN32__ + win32_release_capture_privileges(); +#endif out_free_cmds: free(cmds); out_free_cmd_file_contents: