Still testing various Zip reading libraries.  It's able to read an APPX from the file system just fine, but not from an upload.  Perhaps the upload is being corrupted in some way?  More investigation is required.