In general Microsoft claims appx packages should be basically zips with special content, but actually they are slightly different. If I take an appx package and extract it with 7-Zip, I already get a "Headers-Error" on extraction. if I then pack again the files into a Zip and change the extension, the package is invalid.
I was searching already for more details regarding the format but could not find something. Most answers to appx packaging related questions end with commands interfacing with the MakeAppx.exe. Does anybody know what exactly makes an appx different to a classical zip file and by this can possibly describe how you can create such a package without the use of the MakeAppx.exe ?
Goal is to be able to create appx packages programmatically on my own, without relying on the MakeAppx. Considering that they promote "Building on Standards" and the "Open Packaging Conventions" so much, I guess the difference is subtle. Most other OPC file formats appear to be 100% classical zips. Office documents, NuGet packages, Visual Studio extensions etc. can be easily un-zipped and repackaged without additional logic. Only appx containers seem to have some special header information contained.
Background of my question is that I am the author of a Signing Server used within our company. It accepts certain data formats and creates signed versions of them (like a 'SignTool' services). One functionality is the overwriting of existing signatures with our company signature (e.g. to replace internal testing certificates with the production one). Appx has quite some restrictions when it comes to signing, the manifest must be correct, correct hashing algorithms must be used etc. Microsoft provides the source on how to do the signing programatically, nice. But when it comes to a possible re-packaging there is no API available. I could try interfacing simply with the exe, invoking it, but this brings a lot of drawbacks that I want to prevent (error handling, temp file creation etc.)