diff --git a/src/modules/previewpane/README.md b/src/modules/previewpane/README.md index 86beebb93d..b787fd9c5c 100644 --- a/src/modules/previewpane/README.md +++ b/src/modules/previewpane/README.md @@ -83,7 +83,7 @@ FileExplorerPreviewSettings( ## Installation -### MSI +### MSI (Recommended) To add a new Previewer update the `Product.wxs` file in `PowerToysSetup` similar to existing Previewer to register the Preview Handler. More details about registration of Preview Handlers can be [found here.](https://docs.microsoft.com/en-us/windows/win32/shell/how-to-register-a-preview-handler) @@ -123,6 +123,38 @@ To add a new Previewer update the `Product.wxs` file in `PowerToysSetup` similar ``` +### Directly registering/unregistering DLL's +**[Important] This method of registering Preview Handler DLL's is not recommended. It could lead to registry corruption.** +#### Registering Preview Handler +1. Restart Visual studio as administrator. +2. Sign `XYZPreviewHandler` and it's dependencies. To sign an assembly in VS, follow steps given [here](https://docs.microsoft.com/en-us/dotnet/standard/assembly/sign-strong-name#create-and-sign-an-assembly-with-a-strong-name-by-using-visual-studio). +3. Build `XYZPreviewHandler` project. +4. Open developer command prompt from `Tools > Command Line > Developer Command Prompt`. +5. Run following command for each nuget and project dependency to add them to Global Assembly Cache(GAC). +``` +gacutil -i +``` +6. Run following commands to register preview handler. +``` +cd C:\Windows\Microsoft.NET\Framework64\4.0.x.x +gacutil -i +RegAsm.exe /codebase +``` +7. Restart Windows Explorer process. + +#### Unregistering Preview Handler +1. Run following commands in elevated developer command prompt to unregister preview handler. +``` +cd C:\Windows\Microsoft.NET\Framework64\4.0.x.x +RegAsm.exe /unregister +gacutil -u XYZPreviewHandler +``` + +## Debugging +Since in-process preview handlers run under a surrogate hosting process (prevhost.exe by default), to debug a preview handler, you need to attach the debugger to the host process. +1. Click on a file with registered extension to start host process. +2. Attach debugger in Visual studio from `Debug->Attach to Process` and select `prevhost.exe` with type `Managed(version), x64`. + ## Managing Preview Handlers After successful integration, your preview handler should appear in the PowerToys settings UI under the `File Explorer Preview` Tab. In here you should be able to enable and disable your preview handler.