1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2008-2016 - TortoiseGit
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 #define REG_MSYSGIT_INSTALL L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Git_is1\\InstallLocation"
24 #define REG_MSYSGIT_INSTALL_LOCAL REG_MSYSGIT_INSTALL
26 #define REG_MSYSGIT_INSTALL_LOCAL L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Git_is1\\InstallLocation"
27 #define REG_MSYSGIT_INSTALL L"SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Git_is1\\InstallLocation"
30 static bool FindGitForWindows(CString
& sMsysGitPath
)
32 CRegString msyslocalinstalldir
= CRegString(REG_MSYSGIT_INSTALL_LOCAL
, L
"", FALSE
, HKEY_CURRENT_USER
);
33 sMsysGitPath
= msyslocalinstalldir
;
34 sMsysGitPath
.TrimRight(L
'\\');
36 if (sMsysGitPath
.IsEmpty())
38 CRegString msysinstalldir
= CRegString(REG_MSYSGIT_INSTALL_LOCAL
, L
"", FALSE
, HKEY_LOCAL_MACHINE
);
39 sMsysGitPath
= msysinstalldir
;
40 sMsysGitPath
.TrimRight(L
'\\');
43 if (sMsysGitPath
.IsEmpty())
45 CRegString msysinstalldir
= CRegString(REG_MSYSGIT_INSTALL
, L
"", FALSE
, HKEY_LOCAL_MACHINE
);
46 sMsysGitPath
= msysinstalldir
;
47 sMsysGitPath
.TrimRight(L
'\\');
49 if (!sMsysGitPath
.IsEmpty())
51 if (PathFileExists(sMsysGitPath
+ L
"\\bin\\git.exe"))
52 sMsysGitPath
+= L
"\\bin";
53 else if (PathFileExists(sMsysGitPath
+ L
"\\cmd\\git.exe")) // only needed for older Git for Windows 2.x packages
54 sMsysGitPath
+= L
"\\cmd";
57 CTraceToOutputDebugString::Instance()(_T(__FUNCTION__
) L
": Git for Windows installation found, but git.exe not exists in %s\n", (LPCTSTR
)sMsysGitPath
);
61 CTraceToOutputDebugString::Instance()(_T(__FUNCTION__
) L
": Found no git.exe\n");
62 return !sMsysGitPath
.IsEmpty();