diff options
-rw-r--r-- | src/Setup/Setup.c | 7 | ||||
-rw-r--r-- | src/Setup/Setup.h | 1 | ||||
-rw-r--r-- | src/Setup/Wizard.c | 2 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/Setup/Setup.c b/src/Setup/Setup.c index ea315b56..4737724c 100644 --- a/src/Setup/Setup.c +++ b/src/Setup/Setup.c @@ -60,6 +60,7 @@ BOOL bDowngrade = FALSE; BOOL SystemEncryptionUpdate = FALSE;
BOOL PortableMode = FALSE;
BOOL bRepairMode = FALSE;
+BOOL bReinstallMode = FALSE;
BOOL bChangeMode = FALSE;
BOOL bDevm = FALSE;
BOOL bPossiblyFirstTimeInstall = FALSE;
@@ -245,8 +246,9 @@ void DetermineUpgradeDowngradeStatus (BOOL bCloseDriverHandle, LONG *driverVersi bResult = DeviceIoControl (hDriver, TC_IOCTL_LEGACY_GET_DRIVER_VERSION, NULL, 0, &driverVersion, sizeof (driverVersion), &dwResult, NULL);
- bUpgrade = (bResult && driverVersion < VERSION_NUM);
+ bUpgrade = (bResult && driverVersion <= VERSION_NUM);
bDowngrade = (bResult && driverVersion > VERSION_NUM);
+ bReinstallMode = (bResult && driverVersion == VERSION_NUM);
PortableMode = DeviceIoControl (hDriver, TC_IOCTL_GET_PORTABLE_MODE_STATUS, NULL, 0, NULL, 0, &dwResult, NULL);
@@ -1073,7 +1075,8 @@ BOOL UpgradeBootLoader (HWND hwndDlg) try
{
BootEncryption bootEnc (hwndDlg);
- if (bootEnc.GetInstalledBootLoaderVersion() < VERSION_NUM)
+ uint64 bootLoaderVersion = bootEnc.GetInstalledBootLoaderVersion();
+ if ((bootLoaderVersion < VERSION_NUM) || (bReinstallMode && (bootLoaderVersion == VERSION_NUM)))
{
StatusMessage (hwndDlg, "INSTALLER_UPDATING_BOOT_LOADER");
diff --git a/src/Setup/Setup.h b/src/Setup/Setup.h index a524ce40..7a4d64f4 100644 --- a/src/Setup/Setup.h +++ b/src/Setup/Setup.h @@ -154,6 +154,7 @@ extern BOOL Rollback; extern BOOL bUpgrade;
extern BOOL bPossiblyFirstTimeInstall;
extern BOOL bRepairMode;
+extern BOOL bReinstallMode;
extern BOOL bSystemRestore;
extern BOOL bDisableSwapFiles;
extern BOOL bForAllUsers;
diff --git a/src/Setup/Wizard.c b/src/Setup/Wizard.c index afb3be39..5695e906 100644 --- a/src/Setup/Wizard.c +++ b/src/Setup/Wizard.c @@ -271,7 +271,7 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa DetermineUpgradeDowngradeStatus (TRUE, &driverVersion);
- if (bRepairMode)
+ if (bRepairMode || bReinstallMode)
{
SetWindowTextW (GetDlgItem (hwndDlg, IDC_WIZARD_MODE_INSTALL), GetString ("REPAIR_REINSTALL"));
bExtractOnly = FALSE;
|