MSIX SDK
Перейти к файлу
Ruben Guerrero Samaniego 4a377460b4 Select the resources to be compressed depending on the OS and XML parser being used and generate the MSIXResource.hpp only witht he applicable resources. Re-add missing AppxManifest schemas. Add AppxManifest schemas to the resources zip file when the parser is MSXML6 in Windows. 2018-03-29 17:06:30 -07:00
.vscode openssl stuff 2017-11-22 14:19:53 -08:00
cmake Select the resources to be compressed depending on the OS and XML parser being used and generate the MSIXResource.hpp only witht he applicable resources. Re-add missing AppxManifest schemas. Add AppxManifest schemas to the resources zip file when the parser is MSXML6 in Windows. 2018-03-29 17:06:30 -07:00
lib Add standard headers. 2018-03-29 17:06:06 -07:00
resources Select the resources to be compressed depending on the OS and XML parser being used and generate the MSIXResource.hpp only witht he applicable resources. Re-add missing AppxManifest schemas. Add AppxManifest schemas to the resources zip file when the parser is MSXML6 in Windows. 2018-03-29 17:06:30 -07:00
sample Delete AppxCerts.hpp to use the new resource zip file. Rename resource file to MSIXResource. Create a helper methods to obtain the resources and move CreateBufferFromStream to its own header. 2018-03-29 17:06:17 -07:00
src Select the resources to be compressed depending on the OS and XML parser being used and generate the MSIXResource.hpp only witht he applicable resources. Re-add missing AppxManifest schemas. Add AppxManifest schemas to the resources zip file when the parser is MSXML6 in Windows. 2018-03-29 17:06:30 -07:00
test Add standard headers. 2018-03-29 17:06:06 -07:00
.gitignore Use const std::uint8_t instead of std::vector 2018-03-29 17:06:20 -07:00
.gitmodules Merged PR 1304570: Remove dead/unused submodules from project. 2018-01-12 00:49:27 +00:00
CMakeLists.txt Move generation of headers to its own cmake module 2018-03-29 17:06:13 -07:00
CMakeSettings.json Merged PR 1015588: Merge cmake to feature 2017-10-25 00:40:45 +00:00
LICENSE Add attribution text to existing license text file to meet CELA compliance for OSS project. 2018-01-16 16:53:40 -08:00
Microsoft.MSIX.Packaging.targets Merged PR 1424038: Rename CrossPlat files from appx to MSIX 2018-02-13 21:25:38 +00:00
Package.nuspec.cmakein Add rubengu@microsoft.com as author 2018-03-29 17:06:04 -07:00
ProjectIcon.png Merged PR 1028022: Merge xerces to feature 2017-10-27 18:48:31 +00:00
README.md Updated README.md 2018-03-29 17:06:07 -07:00
makeaosp.sh Merged PR 1424038: Rename CrossPlat files from appx to MSIX 2018-02-13 21:25:38 +00:00
makeaosponwinx86.cmd Merged PR 1303562: Remove C++ runtime static dependency on Android 2018-01-11 23:31:31 +00:00
makeios.sh Merged PR 1424038: Rename CrossPlat files from appx to MSIX 2018-02-13 21:25:38 +00:00
makelinux.sh Merged PR 1424038: Rename CrossPlat files from appx to MSIX 2018-02-13 21:25:38 +00:00
makemac.sh Merged PR 1424038: Rename CrossPlat files from appx to MSIX 2018-02-13 21:25:38 +00:00
makewin.cmd Merged PR 1358121: Create new CHK flavored build scripts. 2018-01-26 00:10:10 +00:00
makewin32.cmd Push release builds to as small as possible. Will add chk builds in a subsequent patch. 2017-12-12 14:55:32 -08:00
makewin32chk.cmd Merged PR 1358121: Create new CHK flavored build scripts. 2018-01-26 00:10:10 +00:00
makewin32x64.cmd Push release builds to as small as possible. Will add chk builds in a subsequent patch. 2017-12-12 14:55:32 -08:00
makewin32x64chk.cmd Merged PR 1358121: Create new CHK flavored build scripts. 2018-01-26 00:10:10 +00:00
release_master.cmd Fix release break due to CMakeList.txt dependency on description containing 3+ parts (which doesn't happen on first build with specified tag) 2017-10-27 15:05:33 -07:00
release_master.ps1 Fix release break due to CMakeList.txt dependency on description containing 3+ parts (which doesn't happen on first build with specified tag) 2017-10-27 15:05:33 -07:00

README.md

MSIX Packaging SDK


Copyright (c) 2017 Microsoft Corp.  All rights reserved.

DESCRIPTION


The MSIX Packaging format is an evolution of the Windows 8 era AppX package format as detailed at: 
https://blogs.msdn.microsoft.com/windowsappdev/2012/12/04/designing-a-simple-and-secure-app-package-appx/.  

The MSIX Packaging SDK project is an effort to enable developers on a variety of platforms to package and unpackage 
application packages for the purposes of distribution from either the Microsoft Store, or 2nd/3rd party stores.  

The MSIX Packaging APIs that a client app would use to interact with .msix/.appx packages are a subset of those
documented here: https://msdn.microsoft.com/en-us/library/windows/desktop/hh446766(v=vs.85).aspx.  See 
./sample/ExtractContentsSample/ExtratContentsSample.cpp for additional details.

OVERVIEW


The MSIX Packaging SDK project includes cross platform API support for unpacking of .msix/.appx packages

The MSIX Packaging SDK project includes:

    msix            - A shared library (DLL on Win32, dylib on MacOs, SO on Linux and Android) that exports a subset
                      of the functionality contained within appxpackaging.dll on Windows.  See:
                      https://msdn.microsoft.com/en-us/library/windows/desktop/hh446766(v=vs.85).aspx
                      for additional details.

                      On all platforms instead of CoCreating IAppxFactory, a c-style export: CoCreateAppxFactory is 
                      provided.  See sample folder at root of package for cross platform consumption examples.

                      Finally, there is one export 'Unpack' that provides an simplified unpackage implementation.
                      
    makemsix        - A command line wrapper over the Unpack implementation.  This tool exists
                      primarily as a means of validating the implementation of the MSIX Packaging SDK internal
                      routines and is compiled for Win32, MacOS, and Linux platforms.

SETUP INSTRUCTIONS


Step 1: Clone the repository:
    git clone [URL]
    
Step 2: Initialize git submodules:
    git submodule init
    git submodule update

ISSUES


If you are using Visual Studio 2017 and you run into errors about not being able to find the v140 toolset, then 1st:
    step 1: Install the Microsoft Build Tools (https://chocolatey.org/packages/microsoft-build-tools)
    step 2: start -> visual studio installer -> Visual Studio Build Tools 2017 -> Modify the 2014 toolset -> individual components 
    step 3: make sure that VC++ 2015.3 v140 toolset for desktop is selected and then unselect VC++ 2017 141 toolset
    step 4: close, then re-open the solution.

PREREQUISITES


Make sure that you have CMAKE installed on your machine 

* https://cmake.org/download/

One or more of the following prerequisites may also be required on your machine:

Ninja-build:
------------
https://github.com/ninja-build/ninja/releases

Android NDK:
------------
https://developer.android.com/ndk/downloads/index.html

Clang/LLVM:
-----------
http://releases.llvm.org/download.html

VS 2017 clients: 
----------------
Open Visual Studio 2017
File->Open Folder->navigate to project root and select "CMakeLists.txt"

See: https://blogs.msdn.microsoft.com/vcblog/2016/10/05/cmake-support-in-visual-studio/
for details regarding how to configure your environment.

Xcode clients: 
--------------
open terminal, from project root:
mkdir build && cd build && cmake -DMACOS=on -G"Xcode" ..
open xcode
File->Open->navigate to project root/build and select "Project.xcodeproj"

See: https://www.johnlamp.net/cmake-tutorial-2-ide-integration.html#section-Xcode for additional details

BUILD


On Windows using Visual Studio 2017 nmake:
------------------------------------------
    makewin32.cmd

On Mac using make: 
------------------
    ./makemac
    ./makeios

On Linux using make:
--------------------
    ./makelinux
    ./makeaosp

How to compile for Android on Windows:
--------------------------------------
Unpack the latest Android NDK to c:\android-ndk
Unpack Ninja-build to c:\ninja
Add c:\ninja to the path environment variable
Create a folder under the root of the enlistment called "android", cd into that folder, then run the following command to create ninja build files:

cmake -DCMAKE_ANDROID_NDK=c:/android-ndk ^
    -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang ^
    -DCMAKE_SYSTEM_NAME=Android ^
    -DCMAKE_SYSTEM_VERSION=19 ^
    -DCMAKE_ANDROID_ARCH_ABI=x86 ^
    -DCMAKE_ANDROID_STL_TYPE=c++_shared ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DAOSP=on ^
    -G"Ninja" ..

To compile, run the following command from the android folder:

ninja    

Contributing


This project welcomes contributions and suggestions. Most contributions require you to
agree to a Contributor License Agreement (CLA) declaring that you have the right to,
and actually do, grant us the rights to use your contribution. For details, visit
https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need
to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the
instructions provided by the bot. You will only need to do this once across all repositories using our CLA.

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.