mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[misc] pocketful of enhancement and fixes - part 1
* Add a cheat mode for VMWare disk detection * Add a cheat mode to delete the rufus_files directory * Don't attempt a grub2 download in case we couldn't read the version * Don't use a shared message buffer between info and status and also use a more logical handling of low pri/high pri and timeout * Also fix unwanted selection of info text on restore from minimize * Also fix the localization generation and add more messages
This commit is contained in:
		
							parent
							
								
									c56a1c87de
								
							
						
					
					
						commit
						2e817ae944
					
				
					 11 changed files with 124 additions and 58 deletions
				
			
		|  | @ -360,9 +360,12 @@ t MSG_186 "Rufus does not install or run background services, therefore update c | |||
| t MSG_187 "Invalid image for selected boot option" | ||||
| t MSG_188 "The current image doesn't match the boot option selected. Please use a different image or choose a different boot option." | ||||
| t MSG_189 "This ISO image is not compatible with the selected filesystem" | ||||
| t MSG_190 "No image selected" | ||||
| t MSG_191 "Write pass" | ||||
| t MSG_192 "Read pass" | ||||
| t MSG_193 "Downloaded %s" | ||||
| t MSG_194 "Could not download %s" | ||||
| # eg. "Using embedded version of Grub2 file(s)" | ||||
| t MSG_195 "Using embedded version of %s file(s)" | ||||
| 
 | ||||
| # Status messages - these messages will appear on the status bar | ||||
| t MSG_201 "Cancelling - Please wait..." | ||||
|  | @ -435,7 +438,7 @@ t MSG_249 "Failed to delete application registry keys" | |||
| t MSG_250 "%s enabled" | ||||
| t MSG_251 "%s disabled" | ||||
| t MSG_252 "Size checks" | ||||
| t MSG_253 "Fixed disks detection" | ||||
| t MSG_253 "Hard disk detection" | ||||
| t MSG_254 "Force large FAT32 formatting" | ||||
| t MSG_255 "NoDriveTypeAutorun will be deleted on exit" | ||||
| t MSG_256 "Fake drive detection" | ||||
|  | @ -448,6 +451,8 @@ t MSG_261 "Writing image: %0.1f%% completed" | |||
| t MSG_262 "ISO Support" | ||||
| # Cheat mode to force legacy size units, where 1 KB is 1024 bytes and NOT that fake 1000 bytes abomination! | ||||
| t MSG_263 "Use PROPER size units" | ||||
| t MSG_264 "Deleting directory '%s'" | ||||
| t MSG_265 "VMWare disk detection" | ||||
| ################################################################################ | ||||
| ############################# TRANSLATOR END COPY ############################## | ||||
| ################################################################################ | ||||
|  |  | |||
|  | @ -755,7 +755,7 @@ out: | |||
| 		} | ||||
| 		if (iso_report.has_grub2) { | ||||
| 			// In case we have a GRUB2 based iso, we extract boot/grub/i386-pc/normal.mod to parse its version
 | ||||
| 			strcpy(iso_report.grub2_version, "unknown"); | ||||
| 			iso_report.grub2_version[0] = 0; | ||||
| 			if ((GetTempPathU(sizeof(path), path) != 0) && (GetTempFileNameU(path, APPLICATION_NAME, 0, path) != 0)) { | ||||
| 				size = (size_t)ExtractISOFile(src_iso, "boot/grub/i386-pc/normal.mod", path, FILE_ATTRIBUTE_NORMAL); | ||||
| 				buf = (char*)calloc(size, 1); | ||||
|  | @ -770,7 +770,10 @@ out: | |||
| 				free(buf); | ||||
| 				_unlink(path); | ||||
| 			} | ||||
| 			uprintf("Detected Grub version: %s", iso_report.grub2_version); | ||||
| 			if (iso_report.grub2_version[0] != 0) | ||||
| 				uprintf("Detected Grub version: %s", iso_report.grub2_version); | ||||
| 			else | ||||
| 				uprintf("Could not detect Grub2 version"); | ||||
| 		} | ||||
| 		StrArrayDestroy(&config_path); | ||||
| 		StrArrayDestroy(&isolinux_path); | ||||
|  |  | |||
|  | @ -396,39 +396,51 @@ char* lmprintf(int msg_id, ...) | |||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Display a localized message on the status bar as well as its English counterpart in the | ||||
|  * log (if debug is set). If duration is non zero, ensures that message is displayed for at | ||||
|  * least duration ms, regardless of any other incoming message | ||||
|  * The following calls help display a localized message on the info field or status bar as well as its | ||||
|  * _English_ counterpart in the log (if debug is set). | ||||
|  * If duration is non zero, that message is displayed for at least duration ms, regardless of | ||||
|  * any other incoming message. After that time, the display reverts to the last non-timeout message. | ||||
|  */ | ||||
| // TODO: handle a timeout message overriding a timeout message
 | ||||
| #define MSG_LEN      256 | ||||
| #define MSG_STATUS   0 | ||||
| #define MSG_INFO     1 | ||||
| #define MSG_LOW_PRI  0 | ||||
| #define MSG_HIGH_PRI 1 | ||||
| char szMessage[2][2][MSG_LEN] = { 0 }; | ||||
| char* szStatusMessage = szMessage[MSG_STATUS][MSG_HIGH_PRI]; | ||||
| static BOOL bStatusTimerArmed = FALSE; | ||||
| char szStatusMessage[256] = { 0 }; | ||||
| static void CALLBACK PrintStatusTimeout(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) | ||||
| 
 | ||||
| static __inline OutputMessage(BOOL info, char* msg) | ||||
| { | ||||
| 	bStatusTimerArmed = FALSE; | ||||
| 	// potentially display lower priority message that was overridden
 | ||||
| 	SendMessageLU(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTW, SBT_OWNERDRAW, szStatusMessage); | ||||
| 	KillTimer(hMainDialog, TID_MESSAGE); | ||||
| 	if (info) | ||||
| 		SetWindowTextU(hInfo, msg); | ||||
| 	else | ||||
| 		SendMessageLU(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTW, SBT_OWNERDRAW, msg); | ||||
| } | ||||
| 
 | ||||
| static void CALLBACK PrintInfoTimeout(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) | ||||
| static void CALLBACK PrintMessageTimeout(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) | ||||
| { | ||||
| 	bStatusTimerArmed = FALSE; | ||||
| 	SetWindowTextU(hInfo, szStatusMessage); | ||||
| 	KillTimer(hMainDialog, TID_MESSAGE); | ||||
| 	// We're going to print high priority message, so restore our pointer
 | ||||
| 	if (idEvent != TID_MESSAGE_INFO) | ||||
| 		szStatusMessage = szMessage[MSG_STATUS][MSG_HIGH_PRI]; | ||||
| 	OutputMessage((idEvent == TID_MESSAGE_INFO), szMessage[(idEvent == TID_MESSAGE_INFO)?MSG_INFO:MSG_STATUS][MSG_HIGH_PRI]); | ||||
| 	KillTimer(hMainDialog, idEvent); | ||||
| } | ||||
| 
 | ||||
| void PrintStatusInfo(BOOL info, BOOL debug, unsigned int duration, int msg_id, ...) | ||||
| { | ||||
| 	char *format = NULL, buf[sizeof(szStatusMessage)]; | ||||
| 	char *format = NULL, buf[MSG_LEN]; | ||||
| 	char *msg_hi = szMessage[info?MSG_INFO:MSG_STATUS][MSG_HIGH_PRI]; | ||||
| 	char *msg_lo = szMessage[info?MSG_INFO:MSG_STATUS][MSG_LOW_PRI]; | ||||
| 	char *msg_cur = (duration > 0)?msg_lo:msg_hi; | ||||
| 	va_list args; | ||||
| 
 | ||||
| 	if (msg_id < 0) { | ||||
| 		// A negative msg_id clears the text area
 | ||||
| 		szStatusMessage[0] = 0; | ||||
| 		if (info) | ||||
| 			SetWindowTextU(hInfo, szStatusMessage); | ||||
| 		else | ||||
| 			SendMessageLU(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTW, SBT_OWNERDRAW, szStatusMessage); | ||||
| 		// A negative msg_id clears the message
 | ||||
| 		msg_hi[0] = 0; | ||||
| 		OutputMessage(info, msg_hi); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -437,29 +449,32 @@ void PrintStatusInfo(BOOL info, BOOL debug, unsigned int duration, int msg_id, . | |||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	// We need to keep track of where szStatusMessage should point to so that ellipses work
 | ||||
| 	if (!info) | ||||
| 		szStatusMessage = szMessage[MSG_STATUS][(duration > 0)?MSG_LOW_PRI:MSG_HIGH_PRI]; | ||||
| 
 | ||||
| 	format = msg_table[msg_id - MSG_000]; | ||||
| 	if (format == NULL) { | ||||
| 		safe_sprintf(szStatusMessage, sizeof(szStatusMessage), "MSG_%03d UNTRANSLATED", msg_id - MSG_000); | ||||
| 		safe_sprintf(msg_hi, MSG_LEN, "MSG_%03d UNTRANSLATED", msg_id - MSG_000); | ||||
| 		uprintf(msg_hi); | ||||
| 		OutputMessage(info, msg_hi); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	va_start(args, msg_id); | ||||
| 	safe_vsnprintf(szStatusMessage, sizeof(szStatusMessage), format, args); | ||||
| 	safe_vsnprintf(msg_cur, MSG_LEN, format, args); | ||||
| 	va_end(args); | ||||
| 	szStatusMessage[sizeof(szStatusMessage)-1] = '\0'; | ||||
| 	msg_cur[MSG_LEN-1] = '\0'; | ||||
| 
 | ||||
| 	if ((duration != 0) || (!bStatusTimerArmed)) { | ||||
| 		if (info) | ||||
| 			SetWindowTextU(hInfo, szStatusMessage); | ||||
| 		else | ||||
| 			SendMessageLU(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTW, SBT_OWNERDRAW, szStatusMessage); | ||||
| 	} | ||||
| 	if ((duration != 0) || (!bStatusTimerArmed)) | ||||
| 		OutputMessage(info, msg_cur); | ||||
| 
 | ||||
| 	if (duration != 0) { | ||||
| 		SetTimer(hMainDialog, TID_MESSAGE, duration, (info)?PrintInfoTimeout:PrintStatusTimeout); | ||||
| 		SetTimer(hMainDialog, (info)?TID_MESSAGE_INFO:TID_MESSAGE_STATUS, duration, PrintMessageTimeout); | ||||
| 		bStatusTimerArmed = TRUE; | ||||
| 	} | ||||
| 
 | ||||
| 	// Because we want the log messages in English, we go through the VA business once more, but this time with default_msg_table
 | ||||
| 	if (debug) { | ||||
| 		format = default_msg_table[msg_id - MSG_000]; | ||||
| 		if (format == NULL) { | ||||
|  | @ -467,8 +482,9 @@ void PrintStatusInfo(BOOL info, BOOL debug, unsigned int duration, int msg_id, . | |||
| 			return; | ||||
| 		} | ||||
| 		va_start(args, msg_id); | ||||
| 		safe_vsnprintf(buf, sizeof(szStatusMessage)-1, format, args); | ||||
| 		safe_vsnprintf(buf, MSG_LEN, format, args); | ||||
| 		va_end(args); | ||||
| 		buf[MSG_LEN-1] = '\0'; | ||||
| 		uprintf(buf); | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -360,6 +360,8 @@ const loc_control_id control_id[] = { | |||
| 	LOC_CTRL(MSG_261), | ||||
| 	LOC_CTRL(MSG_262), | ||||
| 	LOC_CTRL(MSG_263), | ||||
| 	LOC_CTRL(MSG_264), | ||||
| 	LOC_CTRL(MSG_265), | ||||
| 	LOC_CTRL(MSG_MAX), | ||||
| 	LOC_CTRL(IDOK), | ||||
| 	LOC_CTRL(IDCANCEL), | ||||
|  |  | |||
|  | @ -39,7 +39,9 @@ cat > cmd.sed <<\_EOF | |||
| const loc_control_id control_id[] = {\ | ||||
| 	// The dialog IDs must come first | ||||
| 
 | ||||
| # Add the control entries - must be in IDD_, IDC_, IDS_ or MSG_ | ||||
| # Add the control entries - must be in IDD_, IDC_, IDS_ or MSG_ (and not contain _XP or _RTL suffix) | ||||
| s/^.* IDD_.*_RTL .*// | ||||
| s/^.* IDD_.*_XP .*// | ||||
| s/^#define \([I|M][D|S][D|C|S|G]_[^ ]*\) .*/\	LOC_CTRL(\1),/ | ||||
| 
 | ||||
| # Add standard IDs from windows.h and close table | ||||
|  | @ -71,6 +73,8 @@ cat > cmd.sed <<\_EOF | |||
| loc_dlg_list loc_dlg[] = { | ||||
| 
 | ||||
| # Add the dialog entries - must start with IDD_ | ||||
| s/^.* IDD_.*_RTL .*// | ||||
| s/^.* IDD_.*_XP .*// | ||||
| s/^#define \(IDD_[^ ]*\) .*/\	LOC_DLG(\1),/ | ||||
| 
 | ||||
| # Close the table | ||||
|  |  | |||
|  | @ -499,6 +499,21 @@ static __inline int SHCreateDirectoryExU(HWND hwnd, const char* pszPath, SECURIT | |||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static __inline int SHDeleteDirectoryExU(HWND hwnd, const char* pszPath, FILEOP_FLAGS fFlags) | ||||
| { | ||||
| 	int ret; | ||||
| 	// String needs to be double NULL terminated, so we just use the length of the UTF-8 string
 | ||||
| 	// which is always expected to be larger than our UTF-16 one, and add 2 chars for good measure.
 | ||||
| 	size_t wpszPath_len = strlen(pszPath) + 2; | ||||
| 	wchar_t* wpszPath = (wchar_t*)calloc(wpszPath_len, sizeof(wchar_t)); | ||||
| 	utf8_to_wchar_no_alloc(pszPath, wpszPath, wpszPath_len); | ||||
| 	// FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMATION,
 | ||||
| 	SHFILEOPSTRUCTW shfo = { hwnd, FO_DELETE, wpszPath, NULL, fFlags, FALSE, NULL, NULL }; | ||||
| 	ret = SHFileOperationW(&shfo); | ||||
| 	wfree(pszPath); | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static __inline BOOL ShellExecuteExU(SHELLEXECUTEINFOA* lpExecInfo) | ||||
| { | ||||
| 	BOOL ret = FALSE; | ||||
|  |  | |||
|  | @ -396,7 +396,9 @@ | |||
| #define MSG_261                         3261 | ||||
| #define MSG_262                         3262 | ||||
| #define MSG_263                         3263 | ||||
| #define MSG_MAX                         3264 | ||||
| #define MSG_264                         3264 | ||||
| #define MSG_265                         3265 | ||||
| #define MSG_MAX                         3266 | ||||
| 
 | ||||
| // Next default values for new objects
 | ||||
| // 
 | ||||
|  |  | |||
							
								
								
									
										30
									
								
								src/rufus.c
									
										
									
									
									
								
							
							
						
						
									
										30
									
								
								src/rufus.c
									
										
									
									
									
								
							|  | @ -128,7 +128,7 @@ HWND hLogDlg = NULL, hProgress = NULL, hInfo, hDiskID; | |||
| BOOL use_own_c32[NB_OLD_C32] = {FALSE, FALSE}, detect_fakes = TRUE, mbr_selected_by_user = FALSE; | ||||
| BOOL iso_op_in_progress = FALSE, format_op_in_progress = FALSE, right_to_left_mode = FALSE; | ||||
| BOOL enable_HDDs = FALSE, advanced_mode = TRUE, force_update = FALSE, use_fake_units = TRUE; | ||||
| BOOL allow_dual_uefi_bios = FALSE; | ||||
| BOOL allow_dual_uefi_bios = FALSE, enable_vmdk = FALSE; | ||||
| int dialog_showing = 0; | ||||
| uint16_t rufus_version[4], embedded_sl_version[2]; | ||||
| char embedded_sl_version_str[2][12] = { "?.??", "?.??" }; | ||||
|  | @ -137,7 +137,7 @@ char embedded_grub_version[] = GRUB4DOS_VERSION; | |||
| char embedded_grub2_version[] = GRUB2_PACKAGE_VERSION; | ||||
| RUFUS_UPDATE update = { {0,0,0,0}, {0,0}, NULL, NULL}; | ||||
| StrArray DriveID, DriveLabel; | ||||
| extern char szStatusMessage[256]; | ||||
| extern char* szStatusMessage; | ||||
| 
 | ||||
| static HANDLE format_thid = NULL; | ||||
| static HWND hBoot = NULL, hSelectISO = NULL; | ||||
|  | @ -953,6 +953,7 @@ DWORD WINAPI ISOScanThread(LPVOID param) | |||
| 		PrintInfo(0, MSG_081); | ||||
| 		MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL); | ||||
| 		safe_free(image_path); | ||||
| 		PrintStatus(0, MSG_086); | ||||
| 		SetMBRProps(); | ||||
| 	} else { | ||||
| 		// Enable bootable and set Target System and FS accordingly
 | ||||
|  | @ -1137,7 +1138,8 @@ static BOOL BootCheck(void) | |||
| 			return FALSE; | ||||
| 		} | ||||
| 
 | ||||
| 		if ((iso_report.has_grub2) && (safe_strcmp(iso_report.grub2_version, embedded_grub2_version) != 0)) { | ||||
| 		if ((iso_report.has_grub2) && (iso_report.grub2_version[0] != 0) && | ||||
| 			(strcmp(iso_report.grub2_version, embedded_grub2_version) != 0)) { | ||||
| 			// We may have to download a different Grub2 version if we can find one
 | ||||
| 			IGNORE_RETVAL(_chdirU(app_dir)); | ||||
| 			IGNORE_RETVAL(_mkdir(FILES_DIR)); | ||||
|  | @ -1173,9 +1175,11 @@ static BOOL BootCheck(void) | |||
| 					PromptOnError = FALSE; | ||||
| 					grub2_len = (long)DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hMainDialog); | ||||
| 					PromptOnError = TRUE; | ||||
| 					if (grub2_len <= 0) | ||||
| 					if (grub2_len <= 0) { | ||||
| 						PrintInfo(0, MSG_195, "Grub2"); | ||||
| 						uprintf("%s was not found - will use embedded version\n", tmp); | ||||
| 					else { | ||||
| 					} else { | ||||
| 						PrintInfo(0, MSG_193, tmp); | ||||
| 						fd = fopen(&tmp[sizeof(FILES_URL)], "rb"); | ||||
| 						grub2_buf = malloc(grub2_len); | ||||
| 						if ((fd == NULL) || (grub2_buf == NULL) || (fread(grub2_buf, 1, (size_t)grub2_len, fd) != (size_t)grub2_len)) { | ||||
|  | @ -2045,7 +2049,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA | |||
| 					image_path = FileDialog(FALSE, NULL, &iso_ext, 0); | ||||
| 				if (image_path == NULL) { | ||||
| 					CreateTooltip(hSelectISO, lmprintf(MSG_173), -1); | ||||
| 					PrintStatus(0, MSG_190); | ||||
| 					PrintStatus(0, MSG_086); | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
|  | @ -2583,6 +2587,20 @@ relaunch: | |||
| 			GetUSBDevices(0); | ||||
| 			continue; | ||||
| 		} | ||||
| 		// Alt-W => Enable VMWare disk detection
 | ||||
| 		if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'W')) { | ||||
| 			enable_vmdk = !enable_vmdk; | ||||
| 			PrintStatus2000(lmprintf(MSG_265), !enable_vmdk); | ||||
| 			GetUSBDevices(0); | ||||
| 			continue; | ||||
| 		} | ||||
| 		// Alt-X => Delete the 'rufus_files' subdirectory
 | ||||
| 		if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'X')) { | ||||
| 			static_sprintf(tmp_path, "%s\\%s", app_dir, FILES_DIR); | ||||
| 			PrintStatus(2000, MSG_264, tmp_path); | ||||
| 			SHDeleteDirectoryExU(NULL, tmp_path, FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMATION); | ||||
| 			continue; | ||||
| 		} | ||||
| 		TranslateMessage(&msg); | ||||
| 		DispatchMessage(&msg); | ||||
| 	} | ||||
|  |  | |||
|  | @ -146,7 +146,8 @@ typedef struct { | |||
| 
 | ||||
| /* Timers used throughout the program */ | ||||
| enum timer_type { | ||||
| 	TID_MESSAGE = 0x1000, | ||||
| 	TID_MESSAGE_INFO = 0x1000, | ||||
| 	TID_MESSAGE_STATUS, | ||||
| 	TID_BADBLOCKS_UPDATE, | ||||
| 	TID_APP_TIMER, | ||||
| 	TID_BLOCKING_TIMER, | ||||
|  |  | |||
							
								
								
									
										24
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										24
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL | |||
| 
 | ||||
| IDD_DIALOG DIALOGEX 12, 12, 242, 354 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| CAPTION "Rufus 2.0.0.566" | ||||
| CAPTION "Rufus 2.0.0.567" | ||||
| FONT 8, "Segoe UI", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     DEFPUSHBUTTON   "Start",IDC_START,127,314,50,14 | ||||
|  | @ -64,7 +64,7 @@ BEGIN | |||
|     CONTROL         "Use Rufus MBR with BIOS ID",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,112,10 | ||||
|     COMBOBOX        IDC_DISK_ID,128,246,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     CONTROL         "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,273,225,9 | ||||
|     EDITTEXT        IDC_INFO,8,291,225,11,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE | ||||
|     EDITTEXT        IDC_INFO,8,291,225,11,ES_CENTER | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_STATICEDGE | ||||
|     PUSHBUTTON      "About...",IDC_ABOUT,8,314,50,14 | ||||
|     PUSHBUTTON      "Log",IDC_LOG,63,314,21,14 | ||||
|     PUSHBUTTON      "T",IDC_TEST,90,314,12,14,NOT WS_VISIBLE | ||||
|  | @ -155,7 +155,7 @@ END | |||
| 
 | ||||
| IDD_DIALOG_XP DIALOGEX 12, 12, 242, 354 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| CAPTION "Rufus 2.0.0.566" | ||||
| CAPTION "Rufus 2.0.0.567" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     DEFPUSHBUTTON   "Start",IDC_START,127,314,50,14 | ||||
|  | @ -187,7 +187,7 @@ BEGIN | |||
|     CONTROL         "Use Rufus MBR with BIOS ID",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,112,10 | ||||
|     COMBOBOX        IDC_DISK_ID,128,246,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     CONTROL         "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,273,225,9 | ||||
|     EDITTEXT        IDC_INFO,8,291,225,11,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE | ||||
|     EDITTEXT        IDC_INFO,8,291,225,11,ES_CENTER | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_STATICEDGE | ||||
|     PUSHBUTTON      "About...",IDC_ABOUT,8,314,50,14 | ||||
|     PUSHBUTTON      "Log",IDC_LOG,63,314,21,14 | ||||
|     PUSHBUTTON      "T",IDC_TEST,90,314,12,14,NOT WS_VISIBLE | ||||
|  | @ -279,7 +279,7 @@ END | |||
| IDD_DIALOG_RTL DIALOGEX 12, 12, 242, 354 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "Rufus 2.0.0.566" | ||||
| CAPTION "Rufus 2.0.0.567" | ||||
| FONT 8, "Segoe UI", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     DEFPUSHBUTTON   "Start",IDC_START,127,314,50,14 | ||||
|  | @ -311,7 +311,7 @@ BEGIN | |||
|     CONTROL         "Use Rufus MBR with BIOS ID",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,112,10 | ||||
|     COMBOBOX        IDC_DISK_ID,128,246,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     CONTROL         "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,273,225,9 | ||||
|     EDITTEXT        IDC_INFO,8,291,225,11,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE | ||||
|     EDITTEXT        IDC_INFO,8,291,225,11,ES_CENTER | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_STATICEDGE | ||||
|     PUSHBUTTON      "About...",IDC_ABOUT,8,314,50,14 | ||||
|     PUSHBUTTON      "Log",IDC_LOG,63,314,21,14 | ||||
|     PUSHBUTTON      "T",IDC_TEST,90,314,12,14,NOT WS_VISIBLE | ||||
|  | @ -409,7 +409,7 @@ END | |||
| IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 242, 354 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL | ||||
| CAPTION "Rufus 2.0.0.566" | ||||
| CAPTION "Rufus 2.0.0.567" | ||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||
| BEGIN | ||||
|     DEFPUSHBUTTON   "Start",IDC_START,127,314,50,14 | ||||
|  | @ -441,7 +441,7 @@ BEGIN | |||
|     CONTROL         "Use Rufus MBR with BIOS ID",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,112,10 | ||||
|     COMBOBOX        IDC_DISK_ID,128,246,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | ||||
|     CONTROL         "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,273,225,9 | ||||
|     EDITTEXT        IDC_INFO,8,291,225,11,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE | ||||
|     EDITTEXT        IDC_INFO,8,291,225,11,ES_CENTER | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_STATICEDGE | ||||
|     PUSHBUTTON      "About...",IDC_ABOUT,8,314,50,14 | ||||
|     PUSHBUTTON      "Log",IDC_LOG,63,314,21,14 | ||||
|     PUSHBUTTON      "T",IDC_TEST,90,314,12,14,NOT WS_VISIBLE | ||||
|  | @ -661,8 +661,8 @@ END | |||
| // | ||||
| 
 | ||||
| VS_VERSION_INFO VERSIONINFO | ||||
|  FILEVERSION 2,0,0,566 | ||||
|  PRODUCTVERSION 2,0,0,566 | ||||
|  FILEVERSION 2,0,0,567 | ||||
|  PRODUCTVERSION 2,0,0,567 | ||||
|  FILEFLAGSMASK 0x3fL | ||||
| #ifdef _DEBUG | ||||
|  FILEFLAGS 0x1L | ||||
|  | @ -679,13 +679,13 @@ BEGIN | |||
|         BEGIN | ||||
|             VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" | ||||
|             VALUE "FileDescription", "Rufus" | ||||
|             VALUE "FileVersion", "2.0.0.566" | ||||
|             VALUE "FileVersion", "2.0.0.567" | ||||
|             VALUE "InternalName", "Rufus" | ||||
|             VALUE "LegalCopyright", "© 2011-2015 Pete Batard (GPL v3)" | ||||
|             VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" | ||||
|             VALUE "OriginalFilename", "rufus.exe" | ||||
|             VALUE "ProductName", "Rufus" | ||||
|             VALUE "ProductVersion", "2.0.0.566" | ||||
|             VALUE "ProductVersion", "2.0.0.567" | ||||
|         END | ||||
|     END | ||||
|     BLOCK "VarFileInfo" | ||||
|  |  | |||
|  | @ -41,7 +41,7 @@ | |||
| #include "usb.h" | ||||
| 
 | ||||
| extern StrArray DriveID, DriveLabel; | ||||
| extern BOOL enable_HDDs, use_fake_units; | ||||
| extern BOOL enable_HDDs, use_fake_units, enable_vmdk; | ||||
| 
 | ||||
| /*
 | ||||
|  * Get the VID, PID and current device speed | ||||
|  | @ -112,10 +112,10 @@ static __inline BOOL IsVHD(const char* buffer) | |||
| 		"Arsenal_________Virtual_", | ||||
| 		"KernSafeVirtual_________", | ||||
| 		"Msft____Virtual_Disk____", | ||||
| //		"VMware__VMware_Virtual_S"	// Would list primary disks on VMWare instances, so we avoid it
 | ||||
| 		"VMware__VMware_Virtual_S"	// Enabled through a cheat mode, as this lists primary disks on VMWare instances
 | ||||
| 	}; | ||||
| 
 | ||||
| 	for (i = 0; i < ARRAYSIZE(vhd_name); i++) | ||||
| 	for (i = 0; i < (int)(ARRAYSIZE(vhd_name)-(enable_vmdk?0:1)); i++) | ||||
| 		if (safe_strstr(buffer, vhd_name[i]) != NULL) | ||||
| 			return TRUE; | ||||
| 	return FALSE; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue