Fix pipelines for all platforms by updating the cmake version and agent image.
Remove new warnings for xerces.
Update android build with a newer sdk and ndk.
Adding a definition of a pipeline to produce NuGet packages for the MSIX SDK.
Moved the definitions of each platform-specific job in the build pipelines to a template which is used by the respective pipeline, and added a new pipeline that uses all of these jobs and then creates the packages in a new stage. The new stage is based on an existing internal release pipeline, with minor changes (replaced build artifacts by pipeline artifacts, enabled generation for Linux, added a step to produce the SBoM manifest)
This includes several changes related to the pipelines for MSIX SDK.
* The pipelines for iOS, aosp and Linux builds were not running as we were using an outdated VM image that is no longer available. This updates all pipelines to a more recent image.
+ The update of the image used for iOS involved an update to the version of XCode used, from 11 to 12. On XCode 12 there is now support for the simulator running on arm64, and by default running the simulator will try to use that. This would cause an error when trying to run the tests for x86_64 as we were not building the msix library for arm64. To prevent it, I'm explicitly excluding arm64 on the test project when building for the simulator.
* The Windows pipeline was using the `windows-latest` image, which will soon change from `windows-2019` to `windows-2022`. I'm changing the image we use to `-2022` so we are sure that the change in `-latest` will not affect us.
* Some tests were failing on Windows builds; seemingly due to an OS update. I'm disabling those tests while I investigate.
* Attempt to create bundle method
* ProcessCommonOptions method
* Pass flags
* Update
* Create appxbundlefactory and bundlewriter
* Added interfaces to implement
* edit bundle options
* Remove comments
* Create vector of packages to write to bundle manifest
* Create bundle manifest bundle element
* Write Bundle Manifest Elements
* Add AppxBundleManifest, BlockMap, contenttype.xml to zip
* Validations to store fields into manifest
* Write Resources and Dependencies to Bundle Manifest
* Fetches correct value for resources and tdfs
* Created AppxBundleWriter and BundleWriterHelper files
* Writer verion to manifest, address PR comments
* process common and input options
* Use stdstrin instead of wchar
* Address PR comments
* Removed closeinternal from AppxBundleWriter.cpp
* Use exceptions instead of hresult
* Implement AppxManifestReader->GetQualifiedResources
* Write resources to bundle manifest
* Write correct namespaces to manifest file
* Code review comments
* Resolve build on other platforms
* Add packbundle to if MSIX_PACK
* Build should pass now
* Remove ectra qualification for build to pass
* add to msix_pack
* STATFLAG_NONAME error
* Resolve compiler error
* UINT64 and std::uint64 compiler error
* Use std::time instead of systemtime
* Build break
* resolve UINT64 ios compiler error
* Comment out arm64 mac jobs- known config issue
* Mac pipeline failure
* Remove Text data structure as per PR feedback
* gitignore, move zlib file, update filename to versionhelpers
* Resolve build
* Remove thumbs.db file
The primary change is the addition of a test that packs a file larger than 4GB. This is done by creating a stream that returns easily compressed data, resulting in an ~6MB package file. The test is tagged with a hidden [.slow] tag, as it takes ~5 minutes to churn through the data and then open the resulting package for verification.
The change also reorganizes the msix in directory into categories for current and future use. The categories (and directories) are:
public: headers that we "publish" for consumption by external callers
shared: headers used by the functional tests; no linking allowed
internal: headers used by future unit tests, were linking will happen
This allows the tests to reuse product functionality, rather than re-implementing things like ComPtr.