Since managed handlers for the 7z format seem to be non-existant, I had decided that I would end up having to write my own. After a couple of false starts (incorrect downloads, wrong code, trying to figure out what the heck was what), I finally managed to get my hands on the unmanaged dll, and its source code.
So, at the moment, my options are:
- attempting to rewrite the dll as native C# code
- compiling 7za.dll to managed code and working from there, or
- leaving it as it is and working with the unmanaged code through DllImport statements
Since what I am working on now is more of a proof of concept builder than anything else, I think the first one is out of the question. The second sounds like more trouble than its worth at the moment.
The third sounds like my best bet at the moment (well, actually abandoning 7z for a different format sounds better, but I'm still attracted by the high compression rates that the LZMA algorithm offers when combined with the format). However, Igor doesn't seem to believe in commenting or documenting his code. Answers to questions tend to be along the lines of "You can find a small example in the source code", or "read the 7zFormat.txt file". So here's me with the task of trawling through the C++ code, again, trying to find what methods do what, what ones I will be needing, and what ones I can leave behind, again.
In future, before I settle on a library, I think I'm going to pay a little more attention to what the documentation is like. if there is a plus side to be had, at least I'll have a better understanding of where to begin when it comes to taking care of this aspect of the installer client.
If anybody needs me, I'm going to put my head down in a dark room for a while...