Packaging Series: How to build an MSIX package for Notepad++
Notepad++ is the most popular free source code editor. Since MSIX is the future of packaging, let’s see how we can repackage Notepad++ to MSIX by using Advanced Installer.
In order to repackage Notepad++, we need to download the EXE from here, have a clean virtual machine and the latest version of Advanced Installer installed.
Step-by-step packaging instructions :
- Install Advanced Installer, if you don’t have it installed
- Open Advanced Repackager
- Click Capture Setup
- Browse and select the Notepad++ executable
- Press Start Local from the toolbar
- Select the location where the project is saved
- Install Notepad++ with default options, but deselect the Plugins Admin and Auto-Updater in the “Choose Components” step
- Back to the Repackager GUI, enable the MSIX/APPX Package option in the top left corner
- Click Open in Advanced Installer
Once you’re in Advanced Installer, navigate to Builds page, select your Build_MSIX_APPX, and chose the highest Minumum Version. Also, don’t forget to enable digital signing(mandatory for MSIX packages)in the Digital Signature page.
If there are no more additional changes you want to perform on the package, you can now build it and install it.
On first glance, everything seems to work ok.
But if you captured the installation as a default one, you should have context menus.
So what happened here? If you look into the Project, you see that the context menu registry is there? So why isn’t it working?
According to Microsoft documentation, you have the option to add file type associations in your MSIX, which can have a context menu, but here we have some issues:.
Even if the registry is captured and present in the Registry.dat file from inside your MSIX, that registry is not be merged with the one in your system as it happened in APPV. For the file type association and context menu to appear, you have to add it in the AppManifest.xml file. This is done automatically by Advanced Installer.
However, Notepad++ is not placing a specific file type association, and the context menu is done for all file types, that is why the registry is placed in HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shellex\ContextMenuHandlers\ANotepad++64.
If you want to add a context menu for a single file type association, this must point to an executable, not a DLL. If we look to the Notepad++ context menu, this points to “C:\Program Files (x86)\Notepad++\NppShell_06.dll”. However, even if we declare a file type association for .txt extensions in the Manifest, and add the context menu to point to the above dll, after installation, your context menu does not appear.
While the repackaging process using Advanced Installer is smooth, easy, and without any changes to the capture, there are still some missing features at the moment in MSIX, in this case regarding the context menus. MSIX is still in its early days; we are confident future versions will better support such scenarios.