VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Setup/Setup.c
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2021-09-05 01:11:04 +0200
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2021-09-05 01:13:23 +0200
commitddf9811b21ade89be55c9c357a5740ee3a41e9a9 (patch)
tree4d96b5f16c89208e704e45d01d652e75b751ace0 /src/Setup/Setup.c
parent8533ced1a4e6eb0b23ce6f05ca01d079f87b5efd (diff)
downloadVeraCrypt-ddf9811b21ade89be55c9c357a5740ee3a41e9a9.tar.gz
VeraCrypt-ddf9811b21ade89be55c9c357a5740ee3a41e9a9.zip
Windows: Block installation with exe installer if VeraCrypt was already installed using MSI package
Diffstat (limited to 'src/Setup/Setup.c')
-rw-r--r--src/Setup/Setup.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/Setup/Setup.c b/src/Setup/Setup.c
index 382617ab..cbe1e85e 100644
--- a/src/Setup/Setup.c
+++ b/src/Setup/Setup.c
@@ -738,6 +738,24 @@ void DetermineUpgradeDowngradeStatus (BOOL bCloseDriverHandle, LONG *driverVersi
*driverVersionPtr = driverVersion;
}
+BOOL isMsiInstalled ()
+{
+ BOOL bRet = FALSE;
+ HKEY hKey;
+ if (ERROR_SUCCESS == RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\VeraCrypt_MSI", 0, KEY_READ | KEY_WOW64_64KEY, &hKey))
+ {
+ DWORD dwType = 0;
+ if ( (ERROR_SUCCESS == RegQueryValueExW(hKey, L"ProductGuid", NULL, &dwType, NULL, NULL))
+ && (REG_SZ == dwType))
+ {
+ bRet = TRUE;
+ }
+ RegCloseKey(hKey);
+ }
+
+ return bRet;
+}
+
static BOOL IsFileInUse (const wstring &filePath)
{
@@ -2224,6 +2242,14 @@ void DoInstall (void *arg)
ClearLogWindow (hwndDlg);
+ if (isMsiInstalled())
+ {
+ MessageBoxW (hwndDlg, GetString ("CANT_INSTALL_WITH_EXE_OVER_MSI"), lpszTitle, MB_ICONHAND);
+ Error ("INSTALL_FAILED", hwndDlg);
+ PostMessage (MainDlg, TC_APPMSG_INSTALL_FAILURE, 0, 0);
+ return;
+ }
+
if (mkfulldir (InstallationPath, TRUE) != 0)
{
if (mkfulldir (InstallationPath, FALSE) != 0)