{"id":18983608,"url":"https://github.com/notepad-plus-plus/nppshell","last_synced_at":"2025-04-16T07:57:34.102Z","repository":{"id":149367280,"uuid":"618081357","full_name":"notepad-plus-plus/nppShell","owner":"notepad-plus-plus","description":"Provide Explorer context menu entry \"Edit with Notepad++\"","archived":false,"fork":false,"pushed_at":"2024-09-21T16:21:11.000Z","size":115,"stargazers_count":28,"open_issues_count":5,"forks_count":17,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-29T05:22:09.514Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/notepad-plus-plus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-03-23T18:00:26.000Z","updated_at":"2025-02-06T18:05:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"90a543a5-520c-42fc-99b0-21459fa0e0c9","html_url":"https://github.com/notepad-plus-plus/nppShell","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notepad-plus-plus%2FnppShell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notepad-plus-plus%2FnppShell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notepad-plus-plus%2FnppShell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notepad-plus-plus%2FnppShell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/notepad-plus-plus","download_url":"https://codeload.github.com/notepad-plus-plus/nppShell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249216037,"owners_count":21231530,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T16:17:45.627Z","updated_at":"2025-04-16T07:57:34.081Z","avatar_url":"https://github.com/notepad-plus-plus.png","language":"C++","readme":"# Windows 11 Modern UI Context Menu integration\n\nThe purpose of this project is to allow Notepad++ to integrate into the new Windows 11 right-click context menu.\nDoing this requires two new things.\n\n* A dll library with some COM objects that the shell can communicate with.\n* A Sparse Package containing the metadata for the COM server.\n\nTo build this, the following steps needs to be taken:\n\n1. Build a Release dll file three times (Win32, x64 and ARM64) resulting in three dll files (NppShell.x86.dll, NppShell.x64.dll and NppShell.arm64.dll)\n2. Generate a Sparse Package (NppShell.msix)\n3. Sign both of these with signtool.exe\n4. Make sure they are included in the installer, so they are deployed next to the notepad++.exe program.\n5. The installer should, upon installation, install the package.\n6. The installer should, upon uninstallation, uninstall the package.\n\n## Prerequisites\n\nTo be able to build this project, the following is needed:\n\n* [Visual Studio 2022](https://visualstudio.microsoft.com/vs)\n* [Windows 11 SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk)\n\n## Build a Release dll file (NppShell.dll)\nJust open the NppShell.sln Visual Studio solution, select Release as the build type, and do a Rebuild of the solution.\n\n## Generate a Sparse Package (NppShell.msix)\nTo generate a Sparse Package, you need to have the makeappx.exe tool in your PATH, the easiest way to do this is to run the `Developer Command Prompt for VS 2022` command prompt, since it sets up the path.\nOnce inside the NppShell folder, run the following command to generate the Sparse Package:\n```\nmakeappx pack /d .\\Packaging /p .\\NppShell.msix /nv\n```\nThis takes the content of the Packaging directory, and packages them up into the msix file.\n\n## Sign both of these with signtool.exe\nNow we have both the `NppShell.dll` and `NppShell.msix` files, we need to sign them with a valid certificate.\nTo do this, once again run the `Developer Command Prompt for VS 2022` command prompt and change to the NppShell folder.\nThe following command expects the following:\n* The pfx certificate is called MyCert.pfx\n* The password for the pfx certificate is: `Test1234`\n\nMake the needed changes to match the real certificate.\n```\nSignTool.exe sign /fd SHA256 /tr http://timestamp.digicert.com /td sha256 /a /f .\\MyCert.pfx /p Test1234 /d \"Notepad++\" /du https://notepad-plus-plus.org/ NppShell.msix\nSignTool.exe sign /fd SHA256 /tr http://timestamp.digicert.com /td sha256 /a /f .\\MyCert.pfx /p Test1234 /d \"Notepad++\" /du https://notepad-plus-plus.org/ (ARCH)\\Release\\NppShell.dll\n```\nNow both files has been signed, and can be used.\n\n## Make sure they are included in the installer, so they are deployed next to the notepad++.exe program.\nThe installer needs to deploy the two files into the same directory as notepad++.exe .\nThey need to be there, since the DLL is looking for notepad++.exe in the same directory as it is located itself.\n\n## The installer should, upon installation, install the package.\nWhen the installer is running, after all the files has been copied into the program files directory, the follow command should be be run to run the register function to register the package:\n```\nregsvr32.exe /s .\\contextmenu\\NppShell.dll\n```\n\nRemember to wait for the regsvr32 process to exit before continuing.\n\n## The installer should, upon uninstallation, uninstall the package.\nWhen the uninstaller is running, it should run this command to unregister the package:\n```\nregsvr32.exe /s /u .\\contextmenu\\NppShell.dll\n```\n\nHere we need to wait for regsvr32 to finish, since if it isn't finished, the dll file will be locked by explorer.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotepad-plus-plus%2Fnppshell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotepad-plus-plus%2Fnppshell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotepad-plus-plus%2Fnppshell/lists"}