Menu

Tree [8cefa5] master /  History

HTTPS access


File Date Author Commit
 .github 2025-05-30 serg serg [ee5023] chore: cleanup release
 classic 2025-05-30 serg serg [de0cec] chore: lean up debug output; update build
 diff-ext-setup 2025-05-31 serg serg [8cefa5] feat: use dialog-layout library
 installer 2025-05-30 serg5z serg5z [9445e6] feat: add ci/cd pipeline
 manifests 2025-05-30 serg serg [4f506e] chore: return unvirtualizedResources capability...
 modern 2025-05-30 serg serg [de0cec] chore: lean up debug output; update build
 packaging 2025-05-21 serg serg [dba321] feat: add support for CPack; use separate appx ...
 shared 2025-05-30 serg serg [de0cec] chore: lean up debug output; update build
 .gitignore 2025-05-20 serg serg [65cd3c] Full project rewrite
 .gitlab-ci.yml 2025-05-30 serg5z serg5z [9445e6] feat: add ci/cd pipeline
 CMakeLists.txt 2025-05-31 serg serg [8cefa5] feat: use dialog-layout library
 LICENSE 2025-05-29 serg serg [106465] chore: update copyright in license files
 LICENSE_RU 2025-05-29 serg serg [106465] chore: update copyright in license files
 PRIVACY.md 2025-05-21 serg serg [dba321] feat: add support for CPack; use separate appx ...
 README.md 2025-05-21 serg serg [dbebce] chore: add README; add arch name to the msix pa...
 TODO.txt 2025-05-20 serg serg [65cd3c] Full project rewrite

Read Me

🧩 diff-ext – File Comparison Context Menu Extension

diff-ext is a Windows context menu extension that enables quick file comparisons via a configurable diff tool. It includes both classic and modern extensions and packages into an MSIX installer.


✅ Prerequisites

  • Windows 10/11, version ≥ 22621 (for modern shell support)
  • Visual Studio 2022 with:

  • Desktop development with C++

  • CMake tools for Windows
  • CMake ≥ 3.15
  • Windows SDK (for makeappx.exe)
  • PowerShell

📁 Project Structure

/
├── classic/             # Classic shell extension (IContextMenu)
├── modern/              # Modern ExplorerCommand extension
├── shared/              # Shared logic (MRU handling etc.)
├── diff-ext-setup/      # GUI setup tool
├── packaging/           # MSIX manifest and icons
├── CMakeLists.txt       # Main CMake config
└── build.ps1            # Optional multi-arch build script

⚙️ Build Instructions

Step 1: Configure

Open Developer PowerShell for VS 2022, then:

mkdir build-x64
cd build-x64
cmake .. -A x64 -DCMAKE_BUILD_TYPE=Release

Replace x64 with x86 or ARM64 if needed.

Step 2: Build

cmake --build . --config Release

Binaries will appear in:

build-x64/bin/

💠 GUI Setup

Run the configuration tool to set your preferred diff tool and MRU list capacity:

build-x64\bin\diff-ext-setup.exe

You can set:

  • External diff tool executable path
  • MRU list size (up to 64 entries)

📆 MSIX Packaging

MSIX generation runs as part of the build process:

<build-dir>\msix\diff-ext_x64.msix

To package manually:

makeappx.exe pack /d msix_build /p msix/diff-ext_x64.msix /overwrite

🔐 Code Signing (Optional)

To sign the MSIX package:

signtool sign /fd SHA256 /a /f path\to\YourCertificate.pfx /p yourPassword /tr http://timestamp.digicert.com /td SHA256 diff-ext_x64.msix

🧪 Testing & Registration

Classic DLLs must be registered manually (for test installs):

regsvr32 build-x64\bin\diff-ext-classic.dll

For modern shell extensions, install the MSIX package by double-clicking it.


🛉 Uninstall

To clean up:

reg delete "HKCR\*\shellex\ContextMenuHandlers\YourHandler" /f

Or uninstall the MSIX from Apps & Features.


📄 License

BSD license.


🧵 Credits

Created by Sergey Zorin