Warning, /graphics/krita/packaging/windows/msix/README.md is written in an unsupported language. File is not indexed.
0001 (Originally written by Alvin on 2020-06-02 ~ 2020-06-03) 0002 0003 Documentation sources: 0004 0005 - https://docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-manual-conversion 0006 - https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/appx-package-manifest 0007 - https://docs.microsoft.com/en-us/previous-versions/windows/dn934795%28v%3dwin.10%29 0008 - https://docs.microsoft.com/en-us/windows/uwp/design/style/app-icons-and-logos 0009 0010 0011 Assets 0012 --- 0013 0014 Most of the assets starts out extracted from the package that the MSIX 0015 Packaging Tool generated, with `fileicon.png` being the exception. Since the 0016 assets are target-based, we need to use `makepri` to generate a `pri` file. 0017 0018 The assets are placed under the `Assets` dir when inside the package, so this 0019 dir structure needs to be replicated. Also, in order to not mess up `makepri`, 0020 the `Assets` dir needs to be placed in its own dir with no other files in it. 0021 I chose to name it `pkg`. 0022 0023 I generated a `priconfig.xml` file using this command: 0024 0025 ``` 0026 makepri.exe createconfig /cf priconfig.xml /dq en-us 0027 ``` 0028 0029 ... however I also commented out the `packaging` section. 0030 0031 Read more about the app icons on https://docs.microsoft.com/en-us/windows/uwp/design/style/app-icons-and-logos 0032 0033 TODO: On editing the assets... 0034 0035 0036 Manifest 0037 --- 0038 0039 The manifest is constructed by referencing the official documentation and the 0040 two manifests generated by DAC (as in Krita 4.2.8 store version) and MSIX 0041 Packaging Tool. A huge portion is manually rewritten though. 0042 0043 There are several issues that couldn't be resolved: 0044 0045 - The property handler just doesn't work so it has been commented out. 0046 - Explorer doesn't add the drop shadow to the thumbnail. In Win32 there is a 0047 registry value to change it but there is no such option in the manifest. 0048 - Explorer doesn't load the preview image on the preview pane. In Win32 the 0049 image provided by the thumbnail handler is automatically used, but not for 0050 Appx for some reason? 0051 0052 0053 Building the MSIX 0054 --- 0055 0056 Needs: 0057 0058 - Latest Windows SDK (though I've tested with 10.0.17763.0 and10.0.18362.0) 0059 - Krita x64 NSIS installer EXE file 0060 - 7-Zip 0061 - The cert to sign the package with 0062 0063 Steps (if running manually): 0064 0065 1. Extract the EXE installer to somewhere **outside of the source tree** using 0066 7-Zip (don't run the installer!) 0067 2. Remove `$PLUGINSDIR` and `uninstall.exe.nsis`/`uninstall.exe` inside 0068 3. Copy `manifest.xml.in` into `manifest.xml` then make necessary amendments to 0069 it, including replacing the `@`-substitutions. 0070 4. Start a command prompt in this dir, then run 0071 `set KRITA_DIR=C:\path\where\you\extracted\the\Krita\files`, and then run 0072 `build_msix.cmd`. 0073 - If you need to specify the keyfile and password used to sign the MSIX 0074 file, execute the following command before running the final script: 0075 ``` 0076 set SIGNTOOL_SIGN_FLAGS=/f "absolute_path_to_keyfile.pfx" /p password 0077 ``` 0078 5. Install and test `out\krita.msix` 0079 0080 The script and related resources are also configured and installed into 0081 `${CMAKE_INSTALL_PREFIX}/krita-msix`, which is then used by the Binary Factory 0082 pipeline. On the Binary Factory, we also need to set `KRITA_SHELLEX` for it 0083 to copy the files required for the shell extension. 0084 0085 0086 Self-signing the package for testing purposes 0087 --------------------------------------------- 0088 0089 1. Make a backup of the built package if needed. You will **not** be able to remove the signature after it has been added. 0090 2. Generate a fake certificate for signing by running this command in PowerShell: 0091 ``` 0092 New-SelfSignedCertificate -Type Custom -Subject "CN=03E730BB-6849-4762-9BDB-10CD7FFDB2C1" -KeyUsage DigitalSignature -FriendlyName "Fake Krita Foundation certificate for debugging only" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") 0093 ``` 0094 This command will add the certificate into your 'Personal' storage. 0095 3. Go to 'Manage User Certificates' Windows applet. Export the key into a .ppk file 0096 4. Go to 'Manage Computer Certificates' (needs Administrator rights) 0097 5. Import your .ppk file into "Trusted Root Certificates" storage. 0098 6. Copy the certificate (by Ctrl+D&D) into "Trusted Publishers" section.