From 13bfb2db5952703de6759393fc96b8a0539da7a1 Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Sun, 6 Sep 2015 18:58:41 +0200 Subject: Windows: Installer and Traveler Disk Setup both always copy 32-bit and 64-bit executable binaries. --- src/Mount/Mount.c | 37 ++++++++++++++++++++++++++++++++++--- src/Setup/Setup.c | 30 ++++++++++++++++++++++++++++++ src/Setup/Setup.h | 6 ++++++ 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/src/Mount/Mount.c b/src/Mount/Mount.c index 8afc1094..cf157ad9 100644 --- a/src/Mount/Mount.c +++ b/src/Mount/Mount.c @@ -3932,8 +3932,11 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt", dstDir); CreateDirectory (dstPath, NULL); - // Main app - StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt.exe", appDir); + // Main app 32-bit + if (Is64BitOs ()) + StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt-x86.exe", appDir); + else + StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt.exe", appDir); StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt\\VeraCrypt.exe", dstDir); if (!TCCopyFile (srcPath, dstPath)) { @@ -3941,16 +3944,44 @@ BOOL CALLBACK TravelerDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa goto stop; } + // Main app 64-bit + if (Is64BitOs ()) + StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt.exe", appDir); + else + StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt-x64.exe", appDir); + StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt\\VeraCrypt-x64.exe", dstDir); + if (!TCCopyFile (srcPath, dstPath)) + { + handleWin32Error (hwndDlg, SRC_POS); + goto stop; + } + // Wizard if (copyWizard) { - StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt Format.exe", appDir); + // Wizard 32-bit + if (Is64BitOs ()) + StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt Format-x86.exe", appDir); + else + StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt Format.exe", appDir); StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt\\VeraCrypt Format.exe", dstDir); if (!TCCopyFile (srcPath, dstPath)) { handleWin32Error (hwndDlg, SRC_POS); goto stop; } + + // Wizard 64-bit + if (Is64BitOs ()) + StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt Format.exe", appDir); + else + StringCbPrintfA (srcPath, sizeof(srcPath), "%s\\VeraCrypt Format-x64.exe", appDir); + StringCbPrintfA (dstPath, sizeof(dstPath), "%s\\VeraCrypt\\VeraCrypt Format-x64.exe", dstDir); + if (!TCCopyFile (srcPath, dstPath)) + { + handleWin32Error (hwndDlg, SRC_POS); + goto stop; + } } // Driver diff --git a/src/Setup/Setup.c b/src/Setup/Setup.c index 98b94b08..bd7a6ee4 100644 --- a/src/Setup/Setup.c +++ b/src/Setup/Setup.c @@ -641,6 +641,18 @@ BOOL DoFilesInstall (HWND hwndDlg, char *szDestDir) continue; // Destination = target } + // skip files that don't apply to the current architecture + if ( (Is64BitOs () && (strcmp (szFiles[i], "AVeraCrypt-x64.exe") == 0)) + || (Is64BitOs () && (strcmp (szFiles[i], "AVeraCryptExpander-x64.exe") == 0)) + || (Is64BitOs () && (strcmp (szFiles[i], "AVeraCrypt Format-x64.exe") == 0)) + || (!Is64BitOs () && (strcmp (szFiles[i], "AVeraCrypt-x86.exe") == 0)) + || (!Is64BitOs () && (strcmp (szFiles[i], "AVeraCryptExpander-x86.exe") == 0)) + || (!Is64BitOs () && (strcmp (szFiles[i], "AVeraCrypt Format-x86.exe") == 0)) + ) + { + continue; + } + if (*szFiles[i] == 'A') StringCbCopyA (szDir, sizeof(szDir), szDestDir); else if (*szFiles[i] == 'D') @@ -699,18 +711,36 @@ BOOL DoFilesInstall (HWND hwndDlg, char *szDestDir) StringCbCopyNA (curFileName, sizeof(curFileName), "VeraCrypt-x64.exe", sizeof ("VeraCrypt-x64.exe")); } + if (Is64BitOs () + && strcmp (szFiles[i], "AVeraCrypt-x86.exe") == 0) + { + StringCbCopyNA (curFileName, sizeof(curFileName), "VeraCrypt.exe", sizeof ("VeraCrypt.exe")); + } + if (Is64BitOs () && strcmp (szFiles[i], "AVeraCryptExpander.exe") == 0) { StringCbCopyNA (curFileName, sizeof(curFileName), "VeraCryptExpander-x64.exe", sizeof ("VeraCryptExpander-x64.exe")); } + if (Is64BitOs () + && strcmp (szFiles[i], "AVeraCryptExpander-x86.exe") == 0) + { + StringCbCopyNA (curFileName, sizeof(curFileName), "VeraCryptExpander.exe", sizeof ("VeraCryptExpander.exe")); + } + if (Is64BitOs () && strcmp (szFiles[i], "AVeraCrypt Format.exe") == 0) { StringCbCopyNA (curFileName, sizeof(curFileName), "VeraCrypt Format-x64.exe", sizeof ("VeraCrypt Format-x64.exe")); } + if (Is64BitOs () + && strcmp (szFiles[i], "AVeraCrypt Format-x86.exe") == 0) + { + StringCbCopyNA (curFileName, sizeof(curFileName), "VeraCrypt Format.exe", sizeof ("VeraCrypt Format.exe")); + } + if (!bDevm) { bResult = FALSE; diff --git a/src/Setup/Setup.h b/src/Setup/Setup.h index c7ccc293..99a60615 100644 --- a/src/Setup/Setup.h +++ b/src/Setup/Setup.h @@ -28,6 +28,12 @@ static char *szFiles[]= "AVeraCrypt.exe", "AVeraCryptExpander.exe", "AVeraCrypt Format.exe", + "AVeraCrypt-x86.exe", + "AVeraCryptExpander-x86.exe", + "AVeraCrypt Format-x86.exe", + "AVeraCrypt-x64.exe", + "AVeraCryptExpander-x64.exe", + "AVeraCrypt Format-x64.exe", "Averacrypt.sys", "Averacrypt-x64.sys", "Dveracrypt.sys", -- cgit v1.2.3