First, I'm still confused about whether we are dealing with one problem or two
(one with capture, one with apply). The metadata you most recently posted only
shows the difference after a *capture* directly from a sysprepped filesystem, so
an *apply* isn't in the picture at all, correct?
Second, I did manage to identify a case in which a data stream might "go
missing" in a capture with wimlib v1.8.1 compared to a capture with wimlib
v1.8.0. If an NTFS file has more than one unnamed data stream (this is supposed
to be impossible but I won't make any guesses), then v1.8.0 and v1.8.1 may
choose a different one to save in the WIM image. I advise that you re-test
(specifically, the capture scenario) v1.8.1 with and without the following patch
applied:
Code: Select all
diff --git a/src/dentry.c b/src/dentry.c
index 6a75938..17c90aa 100644
--- a/src/dentry.c
+++ b/src/dentry.c
@@ -1842,7 +1842,7 @@ write_dentry(const struct wim_dentry * restrict dentry, u8 * restrict p)
if (strm->stream_type == STREAM_TYPE_DATA) {
if (stream_is_named(strm))
have_named_data_stream = true;
- else
+ else if (is_zero_hash(unnamed_data_stream_hash))
unnamed_data_stream_hash = stream_hash(strm);
} else if (strm->stream_type == STREAM_TYPE_REPARSE_POINT) {
have_reparse_point_stream = true;
Alternatively, check out commit a8215b2ff934d1fd0c3f74522deed28c69e36c5d from
the git repository.
For this isn't not necessary to post the full metadata resource --- running 'wimdir
--detailed' on each WIM image and taking the diff of the output should be
sufficient.