Tutorials for using AIR Native Extensions in your Adobe AIR applications
AIR native extensions are available here
This content is deprecated. See the latest version of this site as part of the main documentation site
This content is deprecated. See the latest version of this tutorial here
This method gives the most versatility in editing the final package you create, giving you the ability to make changes to the AppxManifest. Additionally it simplifies testing as you only need to install a single test certificate on your machine.
This method involves the following steps:
This is the first step of the packaging process across all the methods and is the most important thing the DesktopAppConverter
does. It involves taking the application and converting it into the correct structure for a Windows package.
The result we are looking for here is a directory called PackagedFiles
that contains the eventual content of your appx
package.
DesktopAppConverter.exe
-Installer [PATH\TO\YOUR\AIR\OUTPUT]
-AppExecutable YourApplication`.exe
-Destination [PATH\TO\OUTPUT]
-PackageName "[Package/Identity/Name]"
-PackageDisplayName "[DISPLAYNAME]"
-Publisher "CN=[Package/Identity/Publisher]"
-PackagePublisherDisplayName "[Package/Properties/PublisherDisplayName]"
-AppDisplayName "[DISPLAYNAME]"
-Version [VERSION]
This is very similar to the command used in method 2, except we are removing the -MakeAppx
and -Sign
options.
At this point you can modify the content of the package before packaging it into the appx
package.
Most commonly you may need to add items into the AppxManifest.xml
.
We normally copy the first version of this file to another location and edit it as we require, then copy this file back into the PackagedFiles
directory in our build script.
Now that you have your package structure to convert this into an appx
file we use the MakeAppx
tool.
This is the equivalent of the -MakeAppx
option in the DesktopAppConverter
tool
https://docs.microsoft.com/en-us/windows/msix/package/create-app-package-with-makeappx-tool
This tool creates application packages.
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\makeappx.exe" pack ^
/d [PATH\TO\PackageFiles\] ^
/p YourApplication.appx
eg:
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\makeappx.exe" pack ^
/d C:\build\distriqt.airnativeextensions\PackageFiles\ ^
/p distriqt.airnativeextensions.appx
You will need a pfx
certificate file in order to sign your appx
file.
You will need to create a certificate
For testing we suggest creating a self-signed certificate which you can use for testing your application locally.
https://docs.microsoft.com/en-us/windows/msix/package/create-certificate-package-signing
For example. to create a test certificate:
New-SelfSignedCertificate -Type Custom `
-Subject "CN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" `
-KeyUsage DigitalSignature `
-FriendlyName "distriqt Pty Ltd" `
-CertStoreLocation "Cert:\CurrentUser\My" `
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
Note: It is important that the CN (common name) matches the one used in the conversion of your AIR app to APPX.
This will output a thumbprint which you use to export the certificate:
$password = ConvertTo-SecureString -String YOUR_CERT_PASSWORD -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\CurrentUser\My\YOUR_CERT_THUMBPRINT" -FilePath certificate.pfx -Password $password
For store release you will need to use the certificate setup for store distribution.
At the end of this process you should have a pfx
certifcate file which you will use to sign your app.
If you are using a test certificate, at this point you need to install the certificate onto your machine.
To install the certificate:
- Double click the `pfx` file
- Select "Local Machine" for the store location
- Check the certificate path
- Enter your certificates password
- Select "Place all certificates in the following store"
- "Browse"
- "Trusted Root Certification Authorities"
If you don’t install the certificate you will get an error about the signature when attempting to install your appx.
In order to sign the appx
file generated earlier you will use the SignTool
.
This is the equivalent of the -Sign
option in the DesktopAppConverter
tool
https://docs.microsoft.com/en-us/windows/msix/package/sign-app-package-using-signtool
For example:
SignTool sign /fd SHA256 /a /f certificate.pfx /p <Your Password> <File path>.appx
You will now have a signed appx
application package that you can use for test installation or store release (depending on the certificate used).
The following is just some pseudo commands demonstrating how you could automate the above process into a batch file.
@ECHO OFF
SET BASEDIR=C:\path\to\project
SET AIR_OUTDIR=%BASEDIR%\out\air\build
SET UWP_OUTDIR=%BASEDIR%\out\uwp\build
ECHO ===========================================================
ECHO Converting to UWP application
MKDIR %UWP_BUILDDIR%
DesktopAppConverter.exe -Installer %AIR_BUILDDIR%\ ^
-AppExecutable AirApplication.exe ^
-InstallerArguments "/quiet" ^
-Destination %UWP_OUTDIR% ^
-PackageName "distriqt.airnativeextensions" ^
-PackagePublisherDisplayName "distriqt" ^
-Publisher "CN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" ^
-Version 1.0.0.0
ECHO ===========================================================
ECHO Updating Manifest
copy AppxManifest.xml %UWP_OUTDIR%\distriqt.airnativeextensions\PackageFiles\AppxManifest.xml
ECHO ===========================================================
ECHO Creating Appx
del distriqt.airnativeextensions.appx
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\makeappx.exe" pack ^
/d %UWP_OUTDIR%\distriqt.airnativeextensions\PackageFiles\ ^
/p distriqt.airnativeextensions.appx
ECHO ===========================================================
ECHO Signing Appx
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\signtool.exe" sign /fd SHA256 ^
/a /f distriqt_selfsigned.pfx /p "p4ssword" ^
distriqt.airnativeextensions.appx
Note: it is possible to automate the removal and install of the appx package for testing as well.
Have a look at the
Remove-AppxPackage
andAdd-AppxPackage
powershell commands.