reduce size of openssl static lib by getting rid of unused crypto algos. This reduces size of msix SDK binary by ~400K
current size is now down from 1.6MB to ~1.2MB.
Related work items: #19319090
Adding support for flat bundles. There are two ways a flat bundle can be unpacked:
1. Payload packages are in the same directory as the flat bundle.
1. Payload packages are in a different directory as the flat bundle.
For case 1, we create the stream of the package given the path of the bundle plus the information on the bundle manifest. A flat bundle and payload packages for testing can be found under test/appx/flat.
For case 2, two new public interfaces are defined: IMsixFactoryOverrides and IMsixStreamFactory. IMsixFactoryOverrides is implemented by the AppxFactory. The user can QI for this interface and specify an override via SpecifyExtension and the extension it wants to override defined in the MSIX_FACTORY_EXTENSION enum before creating the bundle/package reader. For now, we only have MSIX_FACTORY_EXTENSION_STREAM_FACTORY but it is design to be extended if we need to (eg. override applicability logic)
For MSIX_FACTORY_EXTENSION_STREAM_FACTORY, the user needs to set an object that implements IMsixStreamFactory. When the bundle being unpacked is a flat bundle, we get the override via GetCurrentSpecifiedExtension and QI for IMsixStreamFactory. IMsixStreamFactory has only one method, CreateStreamOnRelativePath that takes a path of the package and returns an IStream for that package. We then validate this stream as normal.
sample/OverrideStreamSample contains a sample implementation of IMsixStreamFactory and IStream. An easy way to play with the sample is to copy FlatBundleWithAsset.appxbundle in a different folder and try to unpack it.
Extras: refactor to improve readability of the code.
Related work items: #18607747, #18607753
Remove test files build for openssl. Also allow users to have a dynamic dependency on openssl by adding a cmake switch. Use -DUSE_SHARED_OPENSSL=on in the cmake command to enable it.
Related work items: #17881939
In this change:
- Enable unpacking appx bundles and recursive unpacking of the packages in the bundle.
- Generate PublsiherId using the Windows implementation
- Take out the bundles xsds from the RESOURCES_APPXBUNDLEMANIFEST set
- Remove cache semantics in DirectoryObject to avoid errono = 24 (too many files open) while unpacking a bundle
- Add appx bundle packages for testing
- Enable some tests on non-mobile platforms. On non-mobile we use the public APIs. This functionality will be enable in another PR.
This change replaces the series of VS build solutions and one-off Xcode workspace/projects that had to constantly be kept in sync with each other with a single CMake-based build system. This new system has a single build authoring mechanism (CMakeLists.txt) that describes each logical sub-project of the entire project. Builds in VS2017, Xcode, VS NMake, and unix make have been confirmed as working. Automated continuous integration of this new build system is now turned-on, meaning that once this change goes live, you'll need to update your client view of the project. At a minimum, you'll need to run: git submodule update && git submodule init once this change is pulled into your branch. For those not entirely familiar with CMake, you can use https://cmake.org/Wiki/CMake as a good starting point for how to get up and running.
Related work items: #13953155, #13953165