<MinimumRequiredVersion>5.01</MinimumRequiredVersion>\r
<Profile>true</Profile>\r
</Link>\r
+ <Manifest>\r
+ <AdditionalManifestFiles>res\WinMerge.exe.manifest</AdditionalManifestFiles>\r
+ </Manifest>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\r
<Midl>\r
<EnableCOMDATFolding>true</EnableCOMDATFolding>\r
<Profile>true</Profile>\r
</Link>\r
+ <Manifest>\r
+ <AdditionalManifestFiles>res\WinMerge.exe.manifest</AdditionalManifestFiles>\r
+ </Manifest>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">\r
<Midl>\r
<EnableCOMDATFolding>true</EnableCOMDATFolding>\r
<Profile>true</Profile>\r
</Link>\r
+ <Manifest>\r
+ <AdditionalManifestFiles>res\WinMerge.exe.manifest</AdditionalManifestFiles>\r
+ </Manifest>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
<Midl>\r
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
<MinimumRequiredVersion>5.01</MinimumRequiredVersion>\r
</Link>\r
+ <Manifest>\r
+ <AdditionalManifestFiles>res\WinMerge.exe.manifest</AdditionalManifestFiles>\r
+ </Manifest>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Test|Win32'">\r
<Midl>\r
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
<MinimumRequiredVersion>5.01</MinimumRequiredVersion>\r
</Link>\r
+ <Manifest>\r
+ <AdditionalManifestFiles>res\WinMerge.exe.manifest</AdditionalManifestFiles>\r
+ </Manifest>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
<Midl>\r
<Profile>false</Profile>\r
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
</Link>\r
+ <Manifest>\r
+ <AdditionalManifestFiles>res\WinMerge.exe.manifest</AdditionalManifestFiles>\r
+ </Manifest>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">\r
<Midl>\r
<Profile>false</Profile>\r
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
</Link>\r
+ <Manifest>\r
+ <AdditionalManifestFiles>res\WinMerge.exe.manifest</AdditionalManifestFiles>\r
+ </Manifest>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Test|x64'">\r
<Midl>\r
<Profile>false</Profile>\r
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
</Link>\r
+ <Manifest>\r
+ <AdditionalManifestFiles>res\WinMerge.exe.manifest</AdditionalManifestFiles>\r
+ </Manifest>\r
</ItemDefinitionGroup>\r
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Test|ARM64'">\r
<Midl>\r
<Profile>false</Profile>\r
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
</Link>\r
+ <Manifest>\r
+ <AdditionalManifestFiles>res\WinMerge.exe.manifest</AdditionalManifestFiles>\r
+ </Manifest>\r
</ItemDefinitionGroup>\r
<ItemGroup>\r
<ClCompile Include="..\Externals\gtest\src\gtest-all.cc">\r
#include "Constants.h"
#include "Environment.h"
#include "paths.h"
+#include "Win_VersionHelper.h"
#ifdef _DEBUG
#define new DEBUG_NEW
}
}
-PropShell::PropShell(COptionsMgr *optionsMgr)
-: OptionsPanel(optionsMgr, PropShell::IDD)
-, m_bContextAdded(false)
-, m_bContextAdvanced(false)
-{
-}
-
static bool RegisterWinMergeContextMenu(bool unregister)
{
String cmd;
return true;
}
+PropShell::PropShell(COptionsMgr *optionsMgr)
+: OptionsPanel(optionsMgr, PropShell::IDD)
+, m_bContextAdded(false)
+, m_bContextAdvanced(false)
+{
+}
+
BOOL PropShell::OnInitDialog()
{
OptionsPanel::OnInitDialog();
bool registered = IsShellExtensionRegistered(false);
bool registeredPerUser = IsShellExtensionRegistered(true);
bool registerdWinMergeContextMenu = IsWinMergeContextMenuRegistered();
+ bool win11 = IsWin11_OrGreater();
EnableDlgItem(IDC_EXPLORER_CONTEXT, registered || registeredPerUser || registerdWinMergeContextMenu);
EnableDlgItem(IDC_REGISTER_SHELLEXTENSION, !registered);
EnableDlgItem(IDC_UNREGISTER_SHELLEXTENSION, registered);
EnableDlgItem(IDC_REGISTER_SHELLEXTENSION_PERUSER, !registeredPerUser);
EnableDlgItem(IDC_UNREGISTER_SHELLEXTENSION_PERUSER, registeredPerUser);
- EnableDlgItem(IDC_REGISTER_WINMERGECONTEXTMENU, !registerdWinMergeContextMenu);
- EnableDlgItem(IDC_UNREGISTER_WINMERGECONTEXTMENU, registerdWinMergeContextMenu);
+ EnableDlgItem(IDC_REGISTER_WINMERGECONTEXTMENU, !registerdWinMergeContextMenu && win11);
+ EnableDlgItem(IDC_UNREGISTER_WINMERGECONTEXTMENU, registerdWinMergeContextMenu && win11);
EnableDlgItem(IDC_EXPLORER_ADVANCED,
(registered || registeredPerUser || registerdWinMergeContextMenu) && IsDlgButtonChecked(IDC_EXPLORER_CONTEXT));
}
#include <windows.h>
inline bool
-IsWinVer_OrGreater(WORD wVersion, WORD wServicePack = 0)
+IsWinVer_OrGreater(WORD wVersion, WORD wBuildNumber = 0)
{
DWORDLONG dwlConditionMask = 0;
VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL );
VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, VER_GREATER_EQUAL );
- VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL );
+ VER_SET_CONDITION( dwlConditionMask, VER_BUILDNUMBER, VER_GREATER_EQUAL );
- OSVERSIONINFOEXW osvi;
- ::ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+ OSVERSIONINFOEXW osvi{ sizeof(OSVERSIONINFOEX) };
osvi.dwMajorVersion = HIBYTE(wVersion);
osvi.dwMinorVersion = LOBYTE(wVersion);
- osvi.wServicePackMajor = wServicePack;
+ osvi.dwBuildNumber = wBuildNumber;
- return !!VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask);
+ return !!VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, dwlConditionMask);
}
+inline bool
+IsWin11_OrGreater()
+{
+ return IsWinVer_OrGreater( 0x0a00, 0 );
+}
inline bool
IsWin7_OrGreater()
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
- processorArchitecture="X86"
+ processorArchitecture="*"
name="Microsoft.Winweb.WinMerge"
type="win32"
/>
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
- processorArchitecture="X86"
+ processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-</assembly>
\ No newline at end of file
+
+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+ <application>
+ <!-- Windows Vista -->
+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
+ <!-- Windows 7 -->
+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+ <!-- Windows 8 -->
+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
+ <!-- Windows 8.1 -->
+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
+ <!-- Windows 10 -->
+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
+ </application>
+ </compatibility>
+</assembly>
# This file is part from WinMerge <https://winmerge.org/>
# Released under the "GNU General Public License"
-#
+#
# Translators:
# * Ronald Schaap <ronald at schaap.demon.nl>
# * Michel Coene
# Thomas De Rocker, 2021
-#
+#
msgid ""
msgstr ""
"Project-Id-Version: WinMerge\n"