WinMerge is an Open Source differencing and merging tool for Windows.

logo

WinMerge Source Code

Build status CI sourceforge.net downloads Github Releases All Translation status

WinMerge is an open source differencing and merging tool for Windows. WinMerge can compare files and folders, presenting differences in a visual format that is easy to understand and manipulate.

Requirements

Visual Studio 2017

  • Community, Professional or Enterprise Edition
  • VC++ 2017 v141 toolset
  • Windows XP support for C++
  • MFC and ATL support
  • Windows 10 SDK

Visual Studio 2019

  • Community, Professional or Enterprise Edition
  • MSVC v142 Buildtools
  • C++ MFC for v142 Buildtools
  • Windows 10 SDK

Folder Structure

Source code for the WinMerge program, its plugins, filters, setup program, and various utilities are all kept in the subfolders listed below.

The changelog file is in Docs/Users/ChangeLog.md and it documents both user-visible and significant changes.

Subfolders include:

  • Docs
    Both user and developer documentation, in different subfolders.
    Can be browsed by opening index.html in the Docs folder.

  • Src
    Source code to the WinMerge program itself.

  • Plugins
    Source code and binaries for WinMerge runtime plugin dlls & scripts.

  • Filters
    WinMerge file filters which are shipped with the distribution.

  • ArchiveSupport
    Source code for the Merge7z dlls, which connect WinMerge with 7-Zip.
    Also this folder is required to compile WinMergeU.exe.
    There is also a standalone installer for Merge7z dlls.

  • Externals
    This folder contains several libraries whose sources come from outside WinMerge project.
    They are stored here for convenience for building and possibly needed small changes for WinMerge.
    Libraries include an XML parser and a regular expression parser.

  • Installer
    Installer for WinMerge.

  • Tools
    Various utilities used by WinMerge developers; see readme files in each.

  • ShellExtension
    Windows Shell (Explorer) integration.
    Adds menuitems to Explorer context menu for comparing files and folders.

  • Testing
    A suite of test diff files and a script to run them and report the results.
    This folder also has a Google Test subfolder containing unit tests made with Google Test Framework.

  • Build
    This folder gets created by the compiler when WinMerge is compiled.
    It contains compiled executables, libraries, the user manual, etc.

  • BuildTmp
    This folder gets created by the compiler when WinMerge is compiled.
    It contains temporary files created during the compilation and can be safely deleted.

Comments
  • Slovenian traslations for WinMerge 2.16.6

    Slovenian traslations for WinMerge 2.16.6

  • Winmerge Crash when comparing 2 files from Windows Explorer context menu

    Winmerge Crash when comparing 2 files from Windows Explorer context menu

    I have been having this issue for months where I try to open 2 files for compare using Winmerge from the context menu of Windows Explorer.

    I just installed WinMerge-2.16.14-x64 and I am still having the issue, so I thought I'd report this.

    I start by selecting the two files I want to compare in Windows Explorer, and then right click and choose WinMerge. WinMerge will open momentarily and then it crashes.

    An event capturing the crash is logged in Event Viewer under Windows Application Logs:

    Faulting application name: WinMergeU.exe, version: 2.16.14.0, time stamp: 0x60fd100b Faulting module name: WinMergeU.exe, version: 2.16.14.0, time stamp: 0x60fd100b Exception code: 0xc0000005 Fault offset: 0x000000000014b2b9 Faulting process id: 0x1308 Faulting application start time: 0x01d78ed77e5b6260 Faulting application path: C:\Program Files\WinMerge\WinMergeU.exe Faulting module path: C:\Program Files\WinMerge\WinMergeU.exe Report Id: 01ed8ce7-b8cc-4f10-aadc-50125a883327 Faulting package full name: Faulting package-relative application ID:

    If I open WinMerge but only with one file selected, the program does not crash and I am able to manually select my second file. So I do have a workaround, but there is something wrong going on for sure.

    I use this application on many other computers without issue, so the only difference here is that the machine I'm having issues with is a Windows Virtual Desktop in Azure.

    I am running Windows 10: Edition: Windows 10 Enterprise for Virtual Desktops Version: 20H2 OSBuild: 19042.1165

    Not sure if this is something you can look into.

    Thanks.

  • Give this project a better name

    Give this project a better name

    Reacting to Joe D's issue 74 at BitBucket.org, and to get this important discussion into this repository as well ...

    Joe D said ...

    I used WinMerge 2011 for a while until I discovered this project which adds a lot of functionality. I want my team to start using it, but the problem is I don't know what to call it.

    For now I'm calling it WinMerge Takashi, but I don't think that is very clean. Please add a little branding to differentiate from the other projects out there. Put the name into the title bar and the "About WinMerge..." screen so people can identify the software.

    I also found your website which calls it "WinMerge Japanese version."

    Some thoughts: WinMerge JP WinMerge TK WinMerge 3

    Here is my reply ...

    Two Comments ...

    1. I agree with Joe D that a name other than simply WinMerge would be a good idea (especially because of the title bar visibility issue). Locally I've used WinMergeJP and more recently WinMergeV2. Neither seems completely satisfactory; I've never really liked the concept of "v2" because the original WinMerge was itself on version 2.14.0 when this project was forked. WinMerge3 shouldn't be considered, because the "official" follow-on project to the original WinMerge is already called WinMerge3 (its here on BitBucket.org and here officially), even though it appears to be dead before it got off the ground (its most recent update was in early 2011).

      Google seems to know of this project as WinMerge-v2. All of the other WinMerge follow-on projects seem to be contemplating what they should call themselves; I've not seen any resolve this problem. Maybe we should just settle on WinMergeV2 ... ?

    2. I think it is important to move away from using Thingamahoochie Software as the base registry key - this project no longer belongs to them. And there are various registry settings that are new to this project. And I like to have my old, well modified, copy of the original WinMerge 2.13.20 simultaneously installed (if only for various comparisons); the registry overlap is not too awkward yet, but it could get bad at any time.

      I would be eager and willing to contribute the necessary code for changing to whatever new registry key name that @sdottaka would select, including code to appropriately migrate existing Thingamahoochie registry entries.

  • Diff Pane issues

    Diff Pane issues

    1. While I cannot type directly into the diff pane, I can cut (Ctrl-X, Shift-Del), paste (Ctrl-V, Shift-Ins), backspace and delete, perhaps more.
    2. The windows in the pane allow scrolling outside of the currently compared area of the files with no direct way to get back to that region. The easiest way I have found is to go to the next/previous difference and then go back, but this doesn't work when only one exists.
    3. The remainder of the file is still in the diff pane, but it is hidden by, I'm guessing, making the text white. Because editing can essentially be done in the diff pane, it allows the user to make changes to other parts of the file, however they cannot easily tell they have made a change because those sections are not visible.

    Please change the Diff Pane windows to prevent all types of editing, and to prevent scrolling outside of the compared area.

    Thank you.

  • Updated Slovenian translation Winmerge v.2.16.13

    Updated Slovenian translation Winmerge v.2.16.13

    Updated Slovenian translation of Winmerge-2.16.13 per date 04.07.2021

    Note: I’m late because I was on vacation, without the Internet.

    Translated 4.7.2021.zip

    Best Regards, Jadran

  • Subfolder context menu -> Compare destroys existing results

    Subfolder context menu -> Compare destroys existing results

    I just used WinMerge for the first time today, comparing two big-ish folders including sub-folders.

    At some point I right-clicked one of the sub-folders and clicked Compare (I might want to do this to, for example, change view settings which would only make sense for that particular sub-folder). WinMerge then compared them in the same tab, making it impossible to go back to the original comparison. I couldn't find a Back button or an Up button, so I must assume the results of the previous comparison were lost (perhaps not even in memory anymore), and I had to run the whole diff again.

    So either there's a missing "Back" button, or the "Compare" context menu option should open in a new tab rather than the same one.

  • [issue] winmergeu and Windows Explorer integration does not behave as expected

    [issue] winmergeu and Windows Explorer integration does not behave as expected

    Calling winmergeu "path_to_file_1" "path_to_file_2" WinMege opens, but closes immediately after window appears. This is happening with the Windows Explorer integration using WinMerge shortcut.

    When calling with parameter "/u" (winmergeu /u "path_to_file_1" "path_to_file_2") WinMege behaves as expected (window stays open). Is there a way to edit registry so opening WinMerge through the shortcut would add the parameter on the call ?

    Param. docu. /u Prevents WinMerge from adding either path (left or right) to the Most Recently Used (MRU) list. External applications should not add paths to the MRU list in the Select Files or Folders dialog.

  • Performance using Unpacker

    Performance using Unpacker

    In order to compare video files, I've written an unpacker plugin using MediaInfo (https://mediaarea.net/en/MediaInfo) to generate an summary of properties and attributes. The plugin works and provides text to be compared.

    Unfortunately, before Winmerge compares and displays the text, it copies the source files to its temporary directory. This happens after the call to MediaInfo, which takes only a few hundred milliseconds to process the source files, generating a few hundred characters for comparison. For video files, that can be several gigabytes in size, the subsequent copy takes many seconds - over a minute for large file - and effectively makes the plugin unusable.

    I can't think of any reason why the source files need to be copied before being overwritten with the generated text. Would it be possible to avoid the copy?

  • The translation file can't be opened

    The translation file can't be opened

    Poedit 3 reports the file as being corrupted or in a unknown format, the english .pot file is reported as "this isn't a valid .pot file" - this problem hardly happens with other .po/.pot files i have here.

  • Error on try to show differences between two different gif

    Error on try to show differences between two different gif

    1. v2.16.12. Version https://github.com/WinMerge/winmerge/releases/tag/v2.16.12

    2. File: winmerge-2.16.12-exe.zip (x86, win32, portable exe).

    3. Two folders with different .gif - images.

    4. Try to compare this, and see: image

    5. Try to open the differences, and see: image

    Then, I did try to do this in WinMerge v2.12.4.0 And I see the following thing: image And when this as binary, then comparison is good: image

  • Sync (Super Slow)

    Sync (Super Slow)

    I have been a long time user of WinMerge and I thought version 2.14.0 was very good. Never had an issue with it. Ever since upgrading to the latest, I noticed this one issue and it could be my removable USB drive. But when syncing files (even small size), it takes forever for it to complete the sync, like 3 minutes on a file that is only 5 kb. If I manually sync those files through Windows Explorer, than the process is instantaneous. This never has happened in version 2.14.0.

    Windows 7 was bad but now I have upgraded to Windows 10, the delay is worst. I have thought it was the virus protection and many other things but again, if I manually sync through Windows Explorer, then everything is instantaneous.

    I was going to stick with version 2.14.0 but I like some of the new features in the latest versions. I am using the 64 bit.

    Any thoughts on this?

  • Alt/Shift key highlighting issue not resetting start point from move.

    Alt/Shift key highlighting issue not resetting start point from move.

    If you press and hold the alt key, and then use the up/down arrow key, you automatically jump to the next file or folder that has a merge conflict, this is well understood.

    However, if, say, you have multiple issues on one side, such as the following:

    image

    And you wish to delete them all, well, you can first jump to the next one with alt+down arrow:

    image

    Then if you hold shift, to start highlighting, and down arrow some more, you get the following:

    image

    Which... is not intended. If you instead select the first conflict, and then hold shift and down arrow to select the following, a more appropriate selection is highlighted.

    image

    I apologize if this issue is already tracked, but I just updated from minor version .8 to .20 to attempt to fix it, and it is still existent.

    Windows 10/x64/2.16.20.0

  • Backup files: Misleading error message when file cannot be written

    Backup files: Misleading error message when file cannot be written

    At least by default, when comparing files and modifying one, WinMerge will attempt to create a backup file before saving modifications. This operation may fail depending on the user's permissions. Unfortunately, when that happens, the error message misleads the users into thinking the modified file cannot be written, when in reality, it is permissions for the backup which are lacking.

    Backups are controlled in the Backup files section of Options: image I configured my WinMerge to avoid polluting all directories with backups, but my user didn't have the permission to create files in the global backup folder which I set, and WinMerge did not support UAC in that operation.

  • Compare windows scrolling is broken

    Compare windows scrolling is broken

    Whenever I scroll 2 files side by side, the content of both files gets scrambled and very hard to read. Only the lines which I click on or select get to display the right text, the rest of the window shows fragments of random parts. It never happened to me in WinMerge, but it did happen on other computers, i.e. on excel scrolling.

    • Windows 11 with latest WinMerge.
  • Attempting to open files with the lit extension fails.

    Attempting to open files with the lit extension fails.

    Lit extension files result in System cannot open file error. Turning off plugins results in same error, but then it offers to open as text and then it opens.

  • In windows 11 i have error 78 sidebyside with the winmerge manifest

    In windows 11 i have error 78 sidebyside with the winmerge manifest

    In windows 11 i have error 78 sideby side with the manifest

    here the error in event observer

    La création du contexte d’activation a échoué pour « C:\Program Files (x86)\WinMerge\WinMergeU.exe ». 
    Erreur dans le fichier de manifeste ou de stratégie «  » à la ligne . 
    Une version de composant nécessaire à l’application est en conflit avec une autre version de composant déjà active. 
    Les composants en conflit sont : Composant 1 : C:\Windows\WinSxS\manifests\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22000.120_none_e541a94fcce8ed6d.manifest. Composant 2 : 
    C:\Windows\WinSxS\manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22000.120_none_9d947278b86cc467.manifest.
    
    [-](https://github.com/WinMerge/winmerge/discussions/new#) <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    [-](https://github.com/WinMerge/winmerge/discussions/new#) <System>
      <Provider Name="SideBySide" /> 
      <EventID Qualifiers="49409">78</EventID> 
      <Version>0</Version> 
      <Level>2</Level> 
      <Task>0</Task> 
      <Opcode>0</Opcode> 
      <Keywords>0x80000000000000</Keywords> 
      <TimeCreated SystemTime="2022-04-28T07:06:56.7878821Z" /> 
      <EventRecordID>3429</EventRecordID> 
      <Correlation /> 
      <Execution ProcessID="1036" ThreadID="0" /> 
      <Channel>Application</Channel> 
      <Computer>skarla2</Computer> 
      <Security /> 
      </System>
    [-](https://github.com/WinMerge/winmerge/discussions/new#) <EventData>
      <Data>C:\Windows\WinSxS\manifests\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22000.120_none_e541a94fcce8ed6d.manifest</Data> 
      <Data>C:\Windows\WinSxS\manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22000.120_none_9d947278b86cc467.manifest</Data> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data>C:\Program Files (x86)\WinMerge\WinMergeU.exe</Data> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      <Data /> 
      </EventData>
      </Event>
    
Orbit, the Open Runtime Binary Instrumentation Tool, is a standalone C/C++ profiler for Windows and Linux
Orbit, the Open Runtime Binary Instrumentation Tool, is a standalone C/C++ profiler for Windows and Linux

Orbit, the Open Runtime Binary Instrumentation Tool, is a standalone C/C++ profiler for Windows and Linux. Its main purpose is to help developers visualize the execution flow of a complex application.

May 20, 2022
AlleyWind is an advanced Win32-based and open-sourced utility that helps you to manage system's windows
AlleyWind is an advanced Win32-based and open-sourced utility that helps you to manage system's windows

AlleyWind AlleyWind is an advanced Win32-based and open-sourced utility that helps you to manage system's windows. AlleyWind could: Displays a graphic

May 8, 2022
Windows user-land hooks manipulation tool.
Windows user-land hooks manipulation tool.

MineSweeper Windows user-land hooks manipulation tool. Highlights Supports any x64/x86 Windows DLL (actually, any x64/x86 Windows PE for that matter)

Apr 12, 2022
A windows tool for changing the start button logo
A windows tool for changing the start button logo

WinLogo About This project is used to modify the start button logo of windows 10 computers. The logos are precompiled into the binary, but the UI supp

Apr 16, 2022
A tool for use with clang to analyze #includes in C and C++ source files

Include What You Use For more in-depth documentation, see docs. Instructions for Users "Include what you use" means this: for every symbol (type, func

May 20, 2022
PANDA open source project

PANDA (Protocol And Network Datapath Acceleration) Protocol and Network Datapath Acceleration, or PANDA, is a software programming model, framework, s

Mar 19, 2022
cavi is an open-source library that aims to provide performant utilities for closed hierarchies (i.e. all class types of the hierarchy are known at compile time).

cavi cavi is an open-source library that aims to provide performant utilities for closed hierarchies (i.e. all class types of the hierarchy are known

Mar 9, 2022
An open source re-implementation of LEGO Rock Raiders 🪨⛏

OpenLRR An open source re-implementation of LEGO Rock Raiders (PC). This is created by slowly implementing and replacing game functionality, while rel

May 8, 2022
Open Source iOS 15 Jailbreak Project

Fugu Fugu is the first open source jailbreak tool based on the checkm8 exploit. UPDATE: Fugu will now install Sileo, SSH and Substitute automatically!

May 17, 2022
A C library for parsing/normalizing street addresses around the world. Powered by statistical NLP and open geo data.
A C library for parsing/normalizing street addresses around the world. Powered by statistical NLP and open geo data.

libpostal: international street address NLP libpostal is a C library for parsing/normalizing street addresses around the world using statistical NLP a

May 18, 2022
the checkra1n set of tools targeting bare metal, Linux and Windows

Universal toolchain Low-effort cross-compiling for the masses. What's Universal toolchain? It's a collection of sysroots and shell scripts in such a w

Apr 8, 2022
This project aims to facilitate debugging a kernel driver in windows by adding support for a code change on the fly without reboot/unload, and more!
This project aims to facilitate debugging a kernel driver in windows by adding support for a code change on the fly without reboot/unload, and more!

BSOD Survivor Tired of always telling yourself when you got a BSOD that what if I could just return to the caller function which caused the BSOD, and

May 1, 2022
An asynchronous directory file change watcher module for Windows, macOS and Linux wrapped for V

A V module for asynchronously watching for file changes in a directory. The module is essentially a wrapper for septag/dmon. It works for Windows, macOS and Linux.

May 9, 2022
Find patterns of vulnerabilities on Windows in order to find 0-day and write exploits of 1-days. We use Microsoft security updates in order to find the patterns.
Find patterns of vulnerabilities on Windows in order to find 0-day and write exploits of 1-days. We use Microsoft security updates in order to find the patterns.

Back 2 the Future Find patterns of vulnerabilities on Windows in order to find 0-day and write exploits of 1-days. We use Microsoft security updates i

Apr 21, 2022
Windows kernel hacking framework, driver template, hypervisor and API written on C++

Windows kernel hacking framework, driver template, hypervisor and API written on C++

May 18, 2022
simple and efficient screen recording utility for Windows

wcap Simple and efficient screen recording utility for Windows. Get latest binary here: wcap.exe press Ctrl + PrintScreen to start recording monitor (

May 10, 2022
GSmartControl - Hard disk drive and SSD health inspection tool

GSmartControl Hard disk drive and SSD health inspection tool GSmartControl is a graphical user interface for smartctl (from smartmontools package), wh

May 20, 2022
A tool that analyzes headers and generates introspection code

A tool that analyzes headers and generates introspection code

Nov 7, 2021
Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW.
Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW.

FNode Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW (raylib library). It contains a c

May 5, 2022