SOLVED

ShellExtension Context Menu issue with "additional settings"

MVP

When a programmer implements a shell extension context menu, they may want to have additional registry based settings for the extension to use.  A logical place to store those settings is with the COM CLISD. 

 

Notepad++ is one such program. Even if we change the FTA from the wildcard to a regular extension type, such as .xyx, the shell extension fails to work when deployed as an MSIX package, because of this missing information. 

 

This post documents how this issue manifests itself on this application.  Ultimately, I think that this shell extension, and probably many more, need access to the application hive to function properly.

 

Attachment 1 (REg.PNG)  is a screenshot of the original registration by the installer.  I have circled the additional registry information that the dll requires.

 

Attachment 2 (manifest.PNG) is a screenshot of the relevant portion of the package manifest, after changing the filetype to avoid potential issues with needing to use desktop5.

 

Attachment 3 is the registry entries added to the system after installing this package.  As there is no ability to bring along the additional settings, the extension fails to work outside of the container.  Although interestingly, if you try a right-click from a file-open dialog inside the application (that is running inside the container) the shell extension does work as long as the entries are kept in the application registry hive in the container.

 
 

 

 

1 Reply
best response confirmed by TIMOTHY MANGAN (MVP)
Solution

@TIMOTHY MANGAN Thank you for your question. Are you still looking for an answer to this question?

 

Notepad++ uses the legacy IContextMenu interface to do that, but your manifest was using windows.fileExplorerContextMenus which is for the IExplorerCommand interface. We only added support for IContextMenu interface in a later version. In the manifest you should use windows.fileExplorerClassicContextMenuHandler

1 best response

Accepted Solutions
best response confirmed by TIMOTHY MANGAN (MVP)
Solution

@TIMOTHY MANGAN Thank you for your question. Are you still looking for an answer to this question?

 

Notepad++ uses the legacy IContextMenu interface to do that, but your manifest was using windows.fileExplorerContextMenus which is for the IExplorerCommand interface. We only added support for IContextMenu interface in a later version. In the manifest you should use windows.fileExplorerClassicContextMenuHandler

View solution in original post