add_flags |= WIMLIB_ADD_FLAG_WIMBOOT;
break;
case IMAGEX_UNSAFE_COMPACT_OPTION:
+ if (cmd != CMD_APPEND) {
+ imagex_error(T("'--unsafe-compact' is only "
+ "valid for append!"));
+ goto out_err;
+ }
write_flags |= WIMLIB_WRITE_FLAG_UNSAFE_COMPACT;
break;
default:
ret = wimlib_set_output_chunk_size(wim, chunk_size);
if (ret)
goto out_free_wim;
- } else if ((add_flags & WIMLIB_ADD_FLAG_WIMBOOT) &&
- compression_type == WIMLIB_COMPRESSION_TYPE_XPRESS) {
- ret = wimlib_set_output_chunk_size(wim, 4096);
- if (ret)
- goto out_free_wim;
+ } else if ((add_flags & WIMLIB_ADD_FLAG_WIMBOOT)) {
+
+ int ctype = compression_type;
+
+ if (cmd == CMD_APPEND) {
+ struct wimlib_wim_info info;
+ wimlib_get_wim_info(wim, &info);
+ ctype = info.compression_type;
+ }
+
+ if (ctype == WIMLIB_COMPRESSION_TYPE_XPRESS) {
+ ret = wimlib_set_output_chunk_size(wim, 4096);
+ if (ret)
+ goto out_free_wim;
+ }
}
if (solid_ctype != WIMLIB_COMPRESSION_TYPE_INVALID) {
ret = wimlib_set_output_pack_compression_type(wim, solid_ctype);
goto out_free_src_wim;
}
+ if (write_flags & WIMLIB_WRITE_FLAG_UNSAFE_COMPACT) {
+ imagex_error(T("'--unsafe-compact' is only valid when "
+ "exporting to an existing WIM file!"));
+ ret = -1;
+ goto out_free_src_wim;
+ }
+
/* dest_wimfile is not an existing file, so create a new WIM. */
if (compression_type == WIMLIB_COMPRESSION_TYPE_INVALID) {