diff --git a/src/net.c b/src/net.c index eacffe8b..50516f0b 100644 --- a/src/net.c +++ b/src/net.c @@ -825,8 +825,8 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) static_sprintf(icon_path, "%s%s.ico", temp_dir, APPLICATION_NAME); ExtractAppIcon(icon_path, TRUE); - PrintInfo(0, MSG_149); - +//#define FORCE_URL "https://github.com/pbatard/rufus/raw/master/res/loc/test/windows_to_go.iso" +#if !defined(FORCE_URL) #if defined(RUFUS_TEST) // In test mode, just use our local script static_strcpy(script_path, "D:\\Projects\\Fido\\Fido.ps1"); @@ -844,7 +844,12 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) } free(sig); uprintf("Signature is valid ✓"); + SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0); + SetTaskbarProgressState(TASKBAR_NORMAL); + SetTaskbarProgressValue(0, MAX_PROGRESS); + SendMessage(hProgress, PBM_SETPOS, 0, 0); } + PrintInfo(0, MSG_149); assert((fido_script != NULL) && (fido_len != 0)); @@ -881,7 +886,11 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) FormatStatus = RunCommand(cmdline, app_dir, TRUE); if ((FormatStatus == 0) && PeekNamedPipe(hPipe, NULL, dwPipeSize, NULL, &dwAvail, NULL) && (dwAvail != 0)) { url = malloc(dwAvail + 1); - if ((url != NULL) && ReadFile(hPipe, url, dwAvail, &dwSize, NULL) && (dwSize != 0)) { + if ((url != NULL) && ReadFile(hPipe, url, dwAvail, &dwSize, NULL) && (dwSize > 4)) { +#else + { { url = strdup(FORCE_URL); + dwSize = (DWORD)strlen(FORCE_URL); +#endif IMG_SAVE img_save = { 0 }; url[dwSize] = 0; for (i = dwSize - 1; i != 0; i--) { @@ -893,12 +902,10 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) p = strstr(iso_name, ".iso"); if (p != NULL) { p[4] = 0; - } else { - for (i = 0; i < strlen(iso_name); i++) { - if (iso_name[i] == '?') { - iso_name[i] = 0; - break; - } + } else for (i = 0; i < strlen(iso_name); i++) { + if (iso_name[i] == '?') { + iso_name[i] = 0; + break; } } @@ -909,13 +916,13 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) goto out; } // Download the ISO and report errors if any - // TODO: We may want to start a timer here too... SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0); SetTaskbarProgressState(TASKBAR_NORMAL); SetTaskbarProgressValue(0, MAX_PROGRESS); SendMessage(hProgress, PBM_SETPOS, 0, 0); FormatStatus = 0; format_op_in_progress = TRUE; + SendMessage(hMainDialog, UM_TIMER_START, 0, 0); if (DownloadToFileOrBuffer(url, img_save.ImagePath, NULL, hMainDialog) == 0) { if (SCODE_CODE(FormatStatus) == ERROR_CANCELLED) { uprintf("Download cancelled by user"); @@ -934,7 +941,9 @@ static DWORD WINAPI DownloadISOThread(LPVOID param) Notification(MSG_ERROR, NULL, NULL, lmprintf(MSG_194, iso_name), lmprintf(MSG_043, WinInetErrorString())); } } - // TODO: If download was successful we should select and scan the ISO + // Download was successful => Select and scan the ISO + image_path = safe_strdup(img_save.ImagePath); + PostMessage(hMainDialog, UM_SELECT_ISO, 0, 0); format_op_in_progress = FALSE; safe_free(img_save.ImagePath); } diff --git a/src/rufus.c b/src/rufus.c index e0b02a66..0581abdb 100755 --- a/src/rufus.c +++ b/src/rufus.c @@ -1710,10 +1710,7 @@ static void SaveVHD(void) if (format_thid != NULL) { uprintf("\r\nSave to VHD operation started"); PrintInfo(0, -1); - timer = 0; - static_sprintf(szTimer, "00:00:00"); - SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer); - SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer); + SendMessage(hMainDialog, UM_TIMER_START, 0, 0); } else { uprintf("Unable to start VHD save thread"); FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD); @@ -1776,10 +1773,7 @@ static void SaveISO(void) if (format_thid != NULL) { uprintf("\r\nSave to ISO operation started"); PrintInfo(0, -1); - timer = 0; - static_sprintf(szTimer, "00:00:00"); - SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer); - SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer); + SendMessage(hMainDialog, UM_TIMER_START, 0, 0); } else { uprintf("Unable to start ISO save thread"); FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD); @@ -2254,10 +2248,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA format_thid = CreateThread(NULL, 0, SumThread, (LPVOID)thread_affinity, 0, NULL); if (format_thid != NULL) { PrintInfo(0, -1); - timer = 0; - static_sprintf(szTimer, "00:00:00"); - SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer); - SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer); + SendMessage(hMainDialog, UM_TIMER_START, 0, 0); } else { uprintf("Unable to start checksum thread"); FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD); @@ -2284,6 +2275,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA CreateTooltip(GetDlgItem(hMainDialog, IDS_CSM_HELP_TXT), lmprintf((tt == TT_UEFI) ? MSG_152 : MSG_151), 30000); break; case UM_ENABLE_CONTROLS: + KillTimer(hMainDialog, TID_APP_TIMER); if (!IS_ERROR(FormatStatus)) PrintInfo(0, MSG_210); else if (SCODE_CODE(FormatStatus)) @@ -2292,6 +2284,19 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA PrintInfo(0, MSG_212); EnableControls(TRUE); break; + case UM_TIMER_START: + PrintInfo(0, -1); + timer = 0; + static_sprintf(szTimer, "00:00:00"); + SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer); + SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer); + break; + case UM_SELECT_ISO: + select_index = 0; + iso_provided = TRUE; + SetWindowTextU(GetDlgItem(hDlg, IDC_SELECT), uppercase_select[0]); + SendMessage(hDlg, WM_COMMAND, IDC_SELECT, 0); + break; case UM_MEDIA_CHANGE: wParam = DBT_CUSTOMEVENT; // Fall through @@ -2611,11 +2616,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA PostMessage(hMainDialog, UM_FORMAT_COMPLETED, (WPARAM)FALSE, 0); } else { uprintf("\r\nFormat operation started"); - PrintInfo(0, -1); - timer = 0; - static_sprintf(szTimer, "00:00:00"); - SendMessageA(hStatus, SB_SETTEXTA, SBT_OWNERDRAW | SB_SECTION_RIGHT, (LPARAM)szTimer); - SetTimer(hMainDialog, TID_APP_TIMER, 1000, ClockTimer); + SendMessage(hMainDialog, UM_TIMER_START, 0, 0); // Set focus to the Cancel button SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hMainDialog, IDCANCEL), TRUE); } diff --git a/src/rufus.h b/src/rufus.h index ef6af9ba..1f2c1a0e 100644 --- a/src/rufus.h +++ b/src/rufus.h @@ -189,6 +189,8 @@ enum user_message_type { UM_UPDATE_CSM_TOOLTIP, UM_RESIZE_BUTTONS, UM_ENABLE_CONTROLS, + UM_SELECT_ISO, + UM_TIMER_START, UM_FORMAT_START, // Start of the WM IDs for the language menu items UM_LANGUAGE_MENU = WM_APP + 0x100 diff --git a/src/rufus.rc b/src/rufus.rc index c054073f..e60f42a0 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 232, 326 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Rufus 3.5.1449" +CAPTION "Rufus 3.5.1450" FONT 9, "Segoe UI Symbol", 400, 0, 0x0 BEGIN LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP @@ -394,8 +394,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,5,1449,0 - PRODUCTVERSION 3,5,1449,0 + FILEVERSION 3,5,1450,0 + PRODUCTVERSION 3,5,1450,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -413,13 +413,13 @@ BEGIN VALUE "Comments", "https://akeo.ie" VALUE "CompanyName", "Akeo Consulting" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "3.5.1449" + VALUE "FileVersion", "3.5.1450" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2019 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "https://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus-3.5.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.5.1449" + VALUE "ProductVersion", "3.5.1450" END END BLOCK "VarFileInfo"