Add wimlib_get_xml_data() API
[wimlib] / NEWS
1 Only the most important changes more recent than version 0.6 are noted here.
2
3 Version 1.5.2:
4         Added a new experimental LZX compressor which can be enabled by passing
5         '--compress-slow' to `wimlib-imagex capture' or `wimlib-imagex
6         optimize'.  (The latter is only applicable if the WIM is already
7         LZX-compressed and the '--recompress' option is also given.)  The
8         experimental compressor is much slower but compresses the data slightly
9         more --- currently usually to within a fraction of a percent of the
10         results from WIMGAPI/ImageX.
11
12         A workaround has been added for compatibility with versions of WinPE
13         that interpret alternate data stream entries in the boot WIM
14         incorrectly.
15
16         An alignment bug that caused a crash in the LZX decompressor on some
17         builds was fixed.
18
19         wimlib now attempts to clear the WIM_HDR_FLAG_WRITE_IN_PROGRESS flag in
20         the WIM header when restoring the previous state of a WIM it failed to
21         successfully update.
22
23         Added a workaround to avoid an access denied error on Windows when
24         replacing a WIM file that another process has opened.
25
26 Version 1.5.1:
27         wimlib can now open WinPE WIMs from WAIK v2.1, which had a quirk that
28         needed to be handled.
29
30         A bug in the interpretation of negative IMAGE indices in the
31         --update-of=[WIMFILE:]IMAGE option to `wimlib-imagex capture' and
32         `wimlib-imagex append' has been fixed.
33
34         A workaround has been added to successfully apply security descriptors
35         with empty DACLs when the NTFS-3g apply mode is being used with NTFS-3g
36         2013.1.13 or earlier.
37
38         `wimlib-imagex capture' can now accept the '--delta-from' option
39         multiple times.
40
41 Version 1.5.0:
42         Added support for "pipable" WIMs.  Pipable WIMs allow capturing images
43         to standard output and applying images from standard input, but they are
44         not compatible with Microsoft's software and are not created by default.
45         See the documentation for --pipable flag of `wimlib-imagex capture' for
46         more information.
47
48         To better support incremental backups, added support for declaring an
49         image as a modified form of another image.  See the documentation for
50         the '--update-of' option of `wimlib-imagex append' and `wimlib-imagex
51         capture'.
52
53         Added supported for "delta" WIMs.  See the documentation for the
54         '--delta-from' option of `wimlib-imagex capture'.
55
56         The library support for managing split WIMs has been changed to support
57         other arrangements, such as delta WIMs, and be easier to use.  This
58         change is visible in `wimlib-imagex', which also can now accept the
59         '--ref' option multiple times, and also now supports "delta" WIMs as
60         mentioned above.
61
62         wimlib now preserves WIM integrity tables by default, even if
63         WIMLIB_WRITE_FLAG_CHECK_INTEGRITY is not specified.  This changes the
64         behavior of `wimlib-imagex' whenever the WIM being operated on contains
65         an integrity table and the '--check' option is not specified.
66
67         `wimlib-imagex capture' now creates LZX-compressed WIMs by default
68         (when --compress is not specified).  This provides the best compression
69         ratio by default, which is usually what is desired, at a cost of some
70         speed.
71
72         `wimlib-imagex' now supports being invoked as wimCOMMAND, where COMMAND
73         is the command as in `wimlib-imagex COMMAND'; for example, it can be
74         invoked as `wimapply' as an alternative to `wimlib-imagex apply'.  The
75         appropriate hard links are created in UNIX installations of
76         `wimlib-imagex', while for the Windows distribution of `wimlib-imagex',
77         batch files that emulate this behavior are generated.
78
79         Security descriptors are now extracted correctly on Windows.
80
81         Fixed archiving DOS names in NTFS-3g capture mode.
82
83         The extraction code has been rewritten and it will now be easier to
84         support new features on all supported backends (currently Win32, UNIX,
85         and NTFS-3g).  For example, hard-linked extraction mode (--hardlink) is
86         now supported on all backends, not just UNIX.
87
88         `mkwinpeimg' now supports grabbing files from the WAIK supplement rather
89         than the WAIK itself.
90
91         wimlib_global_init() now, by default, attempts to acquire additional
92         privileges on Windows, so library clients need not do this.
93
94         This update bumps the shared library version number up to 9, since it is
95         not binary compatibible with previous releases.
96
97 Version 1.4.2:
98         Fixed bug in `wimlib-imagex export' that made it impossible to export an
99         image from a WIM that is readonly at the filesystem level.
100
101         Return error code rather than segfaulting when trying to list files from
102         a non-first part of a split WIM.
103
104         Joining a WIM will now preserve the RP_FIX and READONLY flags.
105
106 Version 1.4.1:
107         On Windows, paths given to wimlib-imagex are now treated case
108         insensitively.
109
110         Improved behavior regarding invalid filenames; in particular, on
111         Windows, wimlib-imagex will, when extracting, now omit (with an option
112         to override this default) filenames differing only in case, or filenames
113         containing characters not valid on Windows.
114
115         On Windows, wimlib now supports capturing and extracting long paths
116         (longer than the so-called MAX_PATH).
117
118         On Windows, `wimlib-imagex update' now acquires proper privileges when
119         running as an Administrator.
120
121         `wimlib-imagex update' will now complain if no image is specified when
122         trying to update a multi-image WIM.
123
124         `wimlib-imagex update' now supports specifying a single update command
125         directly on the command line using the --command option.
126
127         wimlib-imagex will now choose different units for progress messages,
128         depending on the amount of data that needs to be processed.
129
130         `wimlib-imagex append' will now generate a unique WIM image name if no
131         name is specified and the defaulted name already exists in the WIM.
132
133         wimlib now allows you to create unnamed WIM images, which can then only
134         be referred to by index.
135
136         wimlib now allows you to explicitly declare you want write access to a
137         WIM by providing the WIMLIB_OPEN_FLAG_WRITE_ACCESS flag to
138         wimlib_open_wim().
139
140         wimlib now respects the WIM_HDR_FLAG_READONLY flag when set in the WIM
141         header.
142
143         Progress callbacks have been added to wimlib's wimlib_update_image()
144         function.
145
146         Added wimlib_get_wim_info(), wimlib_set_wim_info(),
147         wimlib_iterate_dir_tree(), and wimlib_iterate_lookup_table() functions
148         to the library.
149
150         NTFS-3g capture now only warns about two conditions previously treated
151         as errors.
152
153         Fixed a couple issues with using wimlib-imagex on UDF filesystems on
154         Windows.
155
156         wimlib now correctly detects and returns an error when reading a WIM
157         image with a cyclic directory structure.  (Fun fact: such a WIM will
158         crash Microsoft's software.)
159
160 Version 1.4.0:
161         Added new "extract" and "update" subcommands to wimlib-imagex, along
162         with associated APIs in the library.  These commands are intended mainly
163         for Windows use but can be used on UNIX as well.
164
165         Many documentation improvements.
166
167         Fixed a bug in the Windows build where relative symbolic links were not
168         captured in reparse-point fixup mode.
169
170         Fixed a bug in the Windows build where file handles were left open to
171         the WIM file, causing `wimlib_imagex optimize' to fail in some cases.
172
173         Fixed a bug in the Windows build of wimlib-imagex where globbing
174         split-WIM parts could cause the program to crash.
175
176         Fixed a bug where the creation time of WIM images would be shown instead
177         of the last modification time.
178
179         With the Windows build it is now possible to restore a WIM containing
180         symbolic links as a non-Administrator; however you will receive warnings
181         about not being able to extract the symbolic links.
182
183 Version 1.3.3:
184         Capturing a WIM image should now be significantly faster in most cases
185         due to improved use of the operating system's cache and avoiding reading
186         files twice whenever possible.
187
188         The Windows build should now work on Windows XP.
189
190         The Windows build now supports capturing and restoring hidden,
191         compressed, sparse, and encrypted files.
192
193         The Windows build now supports capturing and applying WIM images from
194         filesystems other than NTFS (with some reduced functionality).
195
196         The Windows build now extracts short names correctly.
197
198         Added support for "reparse-point" fixups (i.e. fixing up of symbolic
199         links).  See docs for --rpfix and --norpfix flags of `wimlib-imagex
200         capture' and `wimlib-imagex apply'.
201
202         The performance of splitting and joining WIMs should be slightly
203         improved.
204
205         The LZX and XPRESS compression and decompression functions are now
206         exported from the library.
207
208 Version 1.3.2:
209         Improvements and bugfixes for the Windows build.
210
211         Added --strict-acls options.
212
213         Fixed the way that wimlib determines the order of images in the WIM.
214
215 Version 1.3.1:
216         Since wimlib can now be used on Windows, wimlib's implementation of
217         ImageX has been renamed to wimlib-imagex to avoid confusion with
218         Microsoft's implementation of ImageX, which would have the same file
219         name ("imagex.exe").  If you really don't like this you can pass the
220         --with-imagex-progname option to `configure' to choose a different name,
221         or even simply rename the binary yourself (but the former way will
222         configure the man pages to use the chosen name).
223
224         Various bugs fixed in the Windows build.  Mainly to do with capturing
225         and restoring alternate data streams correctly in weird cases, and
226         requesting the correct privileges when opening files.  Also added the
227         --noacls options to wimlib-imagex capture, append, and apply.
228
229         Windows build again: FindFirstStreamW() and FindNextStreamW() are now
230         dynamically loaded, so this may make the library compatible with Windows
231         XP (however, there may still be other problems).
232
233 Version 1.3.0:
234         Added experimental support for native Windows builds.  Binaries can be
235         downloaded from the SourceForge page.
236
237         --source-list option added to `imagex capture' and `imagex append'.
238
239         Better support for different character encodings.
240
241 Version 1.2.6:
242         Storing UNIX file owners, groups, and modes in WIM images is now
243         possible using `imagex capture' with the --unix-data flag.
244
245         Minor bug fixes and documentation fixes.
246
247 Version 1.2.5:
248         NTFS capture: Fixed capturing duplicate reparse points.
249
250         NTFS capture: Capture first unnamed stream if there are more than one
251         (print warning instead of error).
252
253         Allow multiple test cases to execute concurrently (e.g. make -j2 check).
254
255 Version 1.2.4:
256         Added --arch switch to mkwinpeimg script to support getting AMD64 WinPE
257         from the WAIK.
258
259         Update to work with ntfs-3g version 2013.1.13.
260
261 Version 1.2.3:
262         Fixed truncating file to shorter but non-zero length on read-write
263         mounted WIM image.
264
265         Various code cleanups and minor documentation fixes.
266
267 Version 1.2.2:
268         LZX and XPRESS decompression have received some additional optimizations
269         and should now be even faster.  (Although, they were already pretty
270         fast--- much faster than typical I/O speeds.)
271
272         Fixed a bug introduced in v1.2.1 that would cause a directory tree
273         containing hard links to be captured incorrectly in some cases.
274
275 Version 1.2.1:
276         By default, unmounting a read-write mounted WIM with 'imagex unmount
277         --commit' will now change the WIM in-place without needing to write the
278         entire WIM again.  Use 'imagex unmount --commit --rebuild' to get the
279         old behavior.
280
281         'imagex unmount' no longer has a hard-coded limit of 10 minutes to wait
282         for a response from the daemon servicing the mounted WIM.  Instead,
283         every second 'imagex unmount' will check if the daemon is still alive,
284         and keep waiting if so, otherwise terminate with an error.
285
286         'imagex unmount --commit' on a read-write mounted WIM will now print
287         progress information regarding the writing of new or modified streams
288         the WIM, just like when capturing or appending a WIM.
289
290         A small change has been made to XPRESS compression and it should improve
291         the compression ratio slightly.
292
293         A change was made that may improve performance slightly when applying a
294         WIM image to a NTFS volume.
295
296         Microsoft has managed to introduce even more bugs into their software,
297         and now the WIMs for Windows 8 have incorrect (too low) reference counts
298         for some streams.  This is unsafe because such streams can be removed
299         when they are in actuality still referenced in the WIM (perhaps by a
300         different image).  wimlib will now work around this problem by fixing
301         the stream reference counts.  This is only done when wimlib_delete_image() is
302         called ('imagex delete') or when wimlib_mount_image() is called with
303         WIMLIB_MOUNT_FLAG_READWRITE ('imagex mountrw').  Please note that this
304         requires reading the metadata for all images in the WIM, so this will
305         make these operations noticably slower on WIMs with multiple images.
306
307         Various other bugfixes.
308
309 Version 1.2.0:
310         Appending images to a WIM is now be done by default without re-building
311         the whole WIM.  Use the --rebuild flag to get the old behavior (which
312         was to re-build the entire WIM when a new image is appended).
313
314         A new command `imagex optimize' is now available to manually re-build a
315         WIM that has wasted space due to repeated appends.
316
317         Progress information has been improved, and now arbitrary callback
318         functions can be used to show the progress of a WIM operation.
319
320         A possible bug with changing the bootable image of a WIM was fixed.
321
322         Some advisory locking is now done to prevent two processes from
323         modifying a WIM at the same time (but only in some cases).  For example,
324         you cannot mount two images from a WIM read-write at the same time.
325
326         Some functions have been reorganized:
327                 * wimlib_mount() renamed to wimlib_mount_image().
328                 * wimlib_unmount() renamed to wimlib_unmount_image().
329                 * wimlib_overwrite_xml_and_header() removed as
330                 wimlib_overwrite() suffices now.
331                 * wimlib_apply_image_to_ntfs_volume() removed as
332                 wimlib_extract_image() suffices now.
333                 * wimlib_add_image_from_ntfs_volume() removed as
334                 * wimlib_add_image() suffices now.
335
336         Previously, the soname of libwim.so has been 0.0.0, despite many
337         interface changes.  The soname is now updated to 1.0.0 and will now be
338         updated each release.
339
340 Version 1.1.0:
341         Resources will now be compressed using multiple threads by default.
342         (This applies to `imagex capture', `imagex append', and `imagex
343         export').
344
345         Some performance improvements in mounted WIMs.
346
347         More progress information is shown when capturing a WIM.
348
349 Version 1.0.4:
350         Lots of minor fixes, code cleanups, and some documentation updates.
351         Nothing in particular is really noteworthy.
352
353 Version 1.0.3:
354         LZX and XPRESS compression improvements.
355
356         Fixed calculation of Directory Count, File Count, Total Bytes, and Hard
357         Link Bytes of the WIM.
358
359 Version 1.0.2:
360         Fixed bug when capturing NTFS file with multiple named data streams.
361
362         Internally, we are now using inode structures, even though these don't
363         appear literally in the WIM file.  This simplifies some of the code
364         (mainly for WIM mounting) and likely fixed a few problems, although it
365         needs more testing.
366
367 Version 1.0.1:
368         Fixed problem when exporting images from XPRESS to LZX compressed WIM or
369         vice versa
370
371 Version 1.0.0:
372         Enough changes to call it version 1.0.0!
373
374         Capturing a WIM directly from a NTFS volume, and applying a WIM directly
375         to a NTFS volume, is now supported.
376
377         Hard links and symbolic links have much improved support.  They are
378         supported for WIM capture, WIM application, and mounted WIMs (you can
379         even make them on read-write mounted WIMs).
380
381         Alternate data streams are now supported on mounted WIMs through an
382         xattr or a Windows-style stream interface.  Also they are supported when
383         capturing a WIM from NTFS or applying a WIM to NTFS.
384
385         Split WIMs are better supported.  You may now apply an image directly
386         from a split WIM, mount an image from a split WIM read-only, or export
387         an image from a split WIM.
388
389         Using a capture configuration file is now supported (but not fully yet).
390
391         SHA1 message digests are checked in more places, so we can make sure
392         applied and captured data is correct.
393
394         Man pages have been updated and consolidated.
395
396 Version 0.7.2:
397         Fixed segfault when unmounting read-only WIM.
398
399 Version 0.7.1:
400         Support for joining and splitting WIMs.
401         Also, security data is now preserved by default.
402
403 Version 0.6.3:
404         Can now build with older gcc and system headers, like on CentOS 5.
405
406 Version 0.6.2:
407         Fixed bug that made it impossible to overwrite files in read-write
408         mount.
409
410 Version 0.6.1:
411         Write byte-order mark before WIM XML data.  (imagex.exe requires this to
412         be there.)