Forum Discussion
Notepad++ 8.5.7 and "ExplorerCommandHandler" used to register the Context Menu
Hi Tim
Thanks and sorry for the late reply.
The "old" context menu does work but the icon is missing.
On the sequenzer the icon is shown and the parameter has has been added to the registry.
On a test client if i look outside of the Notepad++ virtual environment the icon parameter has not been published.
If i look inside of the Notepad++ virtual environment the icon parameter is available but the path has not been resolved.
I think the path should look like in the command key.
Any idea why this is happening?
kind regards
The approach to fix the problem by turning the shell extension into a traditional shell entry is something done in the native registry while in monitoring mode, so paths should look "normal".
But I did take a look this morning at the solutions that I added for this issues in my software. The fixes are based on supporting the ignored registration as shell extensions by manipulating the AppXManifest file. This support was added for MSIX in TMEditX 6.5, and has been coded in an unlreleased version of TMEdit for App-V at this time (it will be in v 3.7 of TMEdit when released).
FOR MSIX:
For MSIX Packaing, the solution for the problem that I added focuses on supporting the skipped shell extension context menu handler. This, of course, only works on Windows 11.
Rather than turn the ignored shell extension into a Shell key, I modified the AppXManifest to support the shell extension. The adjusted AppXManifest file is attached in the image. It is the desktop4:Extension element near the bottom. Both desktop4 and desktop5 schemas needed to be added at the top of the file as well. Again, this is a solution for MSIX on Windows 11 as the extensions don't work on Windows 10.
- Peer-AtleNov 29, 2023Brass Contributor
Notepad++ 8.6
Also added to AppxManifest.xml:
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
IgnorableNamespaces=com
Testet om Win10 22H2 (19045.3693) --> OK - Roger_WernliNov 23, 2023Copper Contributor
With the traditional shell entry the icon still doesn't appear in the context menu when published with App-v.
So finally I solved it by disabling the context menu entry option during installation of the new Notepad++ version. Afterwards I copied the NppShell_06.dll from a previous version into the program directory of the new version and also used the shellex and CLSID entry of the previous version.
The "Edit with Notepad++" command and the icon appears now in the context menu when published with App-V.
Not really a nice solution I know, but it works so far.
kind regards
- Daniel_NeuhausJan 09, 2024Copper Contributor
Hello Roger, TIMOTHY_MANGAN
This does the trick... - I tested it due to an update to Version 8.6.1The Registry Class has to be isolated in the AppV-package
In the AppxManifest.xml assure to not have that
<appv:Extension Category="AppV.COM"> <appv:COM> <appv:x64> <appv:Class> <appv:ClassId>{B298D29A-A6ED-11DE-BA8C-A68E55D89593}</appv:ClassId> <appv:Name>notepad++</appv:Name> <appv:InprocServer> <appv:Library>[{ProgramFilesX64}]\Notepad++\contextMenu\NppShell.dll</appv:Library> <appv:ThreadingModel>Apartment</appv:ThreadingModel> </appv:InprocServer> </appv:Class> </appv:x64> </appv:COM> </appv:Extension>
Then you register the component by deployment (machine) script
$myPackAppVPackageDir - this is a variable inside my deployment Script that resolves to its current location
regsvr32 /s "[$myPackAppVPackageDir]\Root\VFS\ProgramFilesX64\Notepad++\contextMenu\NppShell.dll"
and
for uninstall:
regsvr32 /u /s "[$myPackAppVPackageDir]\Root\VFS\ProgramFilesX64\Notepad++\contextMenu\NppShell.dll"Kind Regards
daniel