Notepad++, a widely recognized open-source XML editing tool, has consistently encountered certain challenges related to its Context Menu, especially when it comes to packaging the application for MSIX on Windows 10 and Windows 11. This software stands out for its capability to be initiated directly from the Windows File Explorer, using the File Type Associations (FTA) mechanism, allowing users to right-click and launch Notepad++ from any file on their system.

Previously, the primary challenge was that Notepad++ employed a unique file type association (the special ‘*’), which wasn’t supported in the original MSIX schema set. This limitation was subsequently addressed with an update in the schema, but the solution was only effective for systems operating on Windows 11. For Windows 10, the workaround was to switch from the shell extension method to a Shell Integration verb, a method that was also applicable for Windows 11.

However, the release of Notepad++ version 8.5.7 introduced another layer of complexity. In this update, the developer chose to employ lesser-known and unconventional techniques for managing the Shell Extension registration. This move perplexed many, as the methods used were relatively obscure and were not well-supported by existing packaging tools such as the Microsoft MSIX Packaging Tool.

One of these new methods was a rarely seen third method of Shell Extension registration. It utilized the Shell key, but uniquely defined the COM CLSID GUID under a special registry value called the ExplorerCommandHandler. This approach was not only unfamiliar to many developers but was also overlooked by the MSIX Packaging Tool and other packaging software.

Moreover, Notepad++ 8.5.7 presented a “sparse” msix file, which was used in an atypical manner. Typically, such files are used in large games to reduce initial download sizes by downloading game levels as players progress. In the case of Notepad++, this msix file essentially contained the AppXManifest file with virtually no binary components. The purpose of this file was to register the ContextMenu, replicating what many had done in their repackaging processes.

The introduction of these unconventional methods has raised challenges for repackaging. Current packages would include the additional msix file but wouldn’t recognize it. Furthermore, since the registration of the Shell Extension has shifted locations in the registry, many tools are unaware of its presence and fail to incorporate it.

In response to these challenges, some repackaging tools are evolving. For instance, TMEditX is in the process of introducing updates to detect and rectify this overlooked registration. In the interim, the prevailing recommendation for those grappling with the complexities of the new version is to revert to the tried-and-tested Shell Integration verb method to alleviate issues.

Blog Banner Tim Mangan