My company has a huge C++/C# software system composed of 1800 binaries. The technology range goes from old school native C++/MFC, then C++/CLI, up to .NET Framework and .NET Core 6. Almost all possible project types within these technologies exist in our software.
We struggle to find an optimal way to deploy these binaries at the client by sending them an incremental installer, since slighly changes in the source code may cause binaries to be built very differently.
We sign the DLLs and edit the version info, which also means that a new build of the software results in 1800 different binaries, when actually just a few bytes changed for each binary.
It is very hard to keep track of what source code changes caused exactly the change in the binaries. The complexity of tracking this for inter-related C++ projects is huge, so it is simply not a valid solution for us.
Currently we have an in-house automated PE Header comaparer system to detect changes in the binaries from one version to the other, but sometimes it fails to recognize minor changes in our binaries, which may result in a catastrophic deployment.
Any good ideas, strategies and/or recommendations on how to produce an incremental patch installer for thousands of C++/C# binaries?
The installer must be as small as possible. Suggestions on 3rd party solutions/frameworks are indeed welcome, as Microsoft does not seem to address this issue at all.