This is a bit of a hypothetical question (pending proper investigation), but I believe it could cause problems.
A C# application contains an exe and some dlls. Visual Studio/msbuild builds them slightly differently on every build (updated timestamps/guids/etc) but each build is functionally identical. A build server handles daily/release builds for consistency and to offload work.
Having already released v1.0.0 using WiX to package and bootstrap, I fix some issues lib_1.dll
and release v1.0.1. This time I also create a patch which contains only the diff of lib_1.dll
, in order to keep file sizes down. So far so good.
Now the fun part.
I make further changes but this time to lib_3.dll
, and release v1.0.2. I make another patch, this time including only the diff for lib_3.dll
. So now patching v1.0.0 to v1.0.1 works, as does v1.0.1 to v1.0.2, but because each build is slightly different, v1.0.0 to v1.0.1 to v1.0.2 with either fail or end up with corrupted files due to an incorrect diff. Hypothetically.
So the question is: How can this be resolved? Is there an easy way to manage binary files so only real changes are included in installers? Some way of comparing binaries that ignores per-build changes? Or something else?