mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[ui] display ToGo radio selection according to ISO content
* Also simplify EFI detection and reporting
This commit is contained in:
parent
bca23cc676
commit
3444a48fce
5 changed files with 58 additions and 35 deletions
|
@ -1324,7 +1324,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
pt = GETPARTTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
pt = GETPARTTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||||
bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||||
use_large_fat32 = (fs == FS_FAT32) && ((SelectedDrive.DiskSize > LARGE_FAT32_SIZE) || (force_large_fat32));
|
use_large_fat32 = (fs == FS_FAT32) && ((SelectedDrive.DiskSize > LARGE_FAT32_SIZE) || (force_large_fat32));
|
||||||
add_uefi_togo = (fs == FS_NTFS) && (dt == DT_ISO) && (IS_EFI(iso_report)) && (bt == BT_UEFI);
|
add_uefi_togo = (fs == FS_NTFS) && (dt == DT_ISO) && (iso_report.has_efi) && (bt == BT_UEFI);
|
||||||
|
|
||||||
PrintInfoDebug(0, MSG_225);
|
PrintInfoDebug(0, MSG_225);
|
||||||
hPhysicalDrive = GetPhysicalHandle(DriveIndex, TRUE, TRUE);
|
hPhysicalDrive = GetPhysicalHandle(DriveIndex, TRUE, TRUE);
|
||||||
|
@ -1629,7 +1629,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
if (IsChecked(IDC_BOOT)) {
|
if (IsChecked(IDC_BOOT)) {
|
||||||
if (bt == BT_UEFI) {
|
if (bt == BT_UEFI) {
|
||||||
// For once, no need to do anything - just check our sanity
|
// For once, no need to do anything - just check our sanity
|
||||||
if ( (dt != DT_ISO) || (!IS_EFI(iso_report)) || (fs > FS_NTFS) ) {
|
if ( (dt != DT_ISO) || (!iso_report.has_efi) || (fs > FS_NTFS) ) {
|
||||||
uprintf("Spock gone crazy error!\n");
|
uprintf("Spock gone crazy error!\n");
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_INSTALL_FAILURE;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_INSTALL_FAILURE;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -1706,7 +1706,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
uprintf("Warning: loader installation failed - KolibriOS will not boot!\n");
|
uprintf("Warning: loader installation failed - KolibriOS will not boot!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((bt == BT_UEFI) && (!iso_report.has_efi) && (iso_report.has_win7_efi)) {
|
if ((bt == BT_UEFI) && (!iso_report.has_efi)) {
|
||||||
PrintInfoDebug(0, MSG_232);
|
PrintInfoDebug(0, MSG_232);
|
||||||
wim_image[0] = drive_name[0];
|
wim_image[0] = drive_name[0];
|
||||||
efi_dst[0] = drive_name[0];
|
efi_dst[0] = drive_name[0];
|
||||||
|
|
18
src/iso.c
18
src/iso.c
|
@ -68,6 +68,8 @@ static const char* grldr_name = "grldr";
|
||||||
static const char* ldlinux_name = "ldlinux.sys";
|
static const char* ldlinux_name = "ldlinux.sys";
|
||||||
static const char* ldlinux_c32 = "ldlinux.c32";
|
static const char* ldlinux_c32 = "ldlinux.c32";
|
||||||
static const char* efi_dirname = "/efi/boot";
|
static const char* efi_dirname = "/efi/boot";
|
||||||
|
static const char* efi_bootname[] = { "bootia32.efi", "bootx64.efi", "bootia64.efi", "bootarm.efi" };
|
||||||
|
static const char* install_wim_path = "/sources/install.wim";
|
||||||
static const char* grub_dirname = "/boot/grub"; // NB: We don't support nonstandard config dir such as AROS' "/boot/pc/grub/"
|
static const char* grub_dirname = "/boot/grub"; // NB: We don't support nonstandard config dir such as AROS' "/boot/pc/grub/"
|
||||||
static const char* grub_cfg = "grub.cfg";
|
static const char* grub_cfg = "grub.cfg";
|
||||||
static const char* syslinux_cfg[] = { "isolinux.cfg", "syslinux.cfg", "extlinux.conf"};
|
static const char* syslinux_cfg[] = { "isolinux.cfg", "syslinux.cfg", "extlinux.conf"};
|
||||||
|
@ -157,7 +159,6 @@ static BOOL check_iso_props(const char* psz_dirname, int64_t i_file_length, cons
|
||||||
props->is_grub_cfg = TRUE;
|
props->is_grub_cfg = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (scan_only) {
|
if (scan_only) {
|
||||||
// Check for a syslinux v5.0+ file anywhere
|
// Check for a syslinux v5.0+ file anywhere
|
||||||
if (safe_stricmp(psz_basename, ldlinux_c32) == 0) {
|
if (safe_stricmp(psz_basename, ldlinux_c32) == 0) {
|
||||||
|
@ -176,7 +177,7 @@ static BOOL check_iso_props(const char* psz_dirname, int64_t i_file_length, cons
|
||||||
iso_report.has_kolibrios = TRUE;
|
iso_report.has_kolibrios = TRUE;
|
||||||
}
|
}
|
||||||
if (safe_stricmp(psz_basename, bootmgr_efi_name) == 0) {
|
if (safe_stricmp(psz_basename, bootmgr_efi_name) == 0) {
|
||||||
iso_report.has_win7_efi = TRUE;
|
iso_report.has_efi |= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,9 +185,16 @@ static BOOL check_iso_props(const char* psz_dirname, int64_t i_file_length, cons
|
||||||
if ((iso_report.reactos_path[0] == 0) && (safe_stricmp(psz_basename, reactos_name) == 0))
|
if ((iso_report.reactos_path[0] == 0) && (safe_stricmp(psz_basename, reactos_name) == 0))
|
||||||
safe_strcpy(iso_report.reactos_path, sizeof(iso_report.reactos_path), psz_fullpath);
|
safe_strcpy(iso_report.reactos_path, sizeof(iso_report.reactos_path), psz_fullpath);
|
||||||
|
|
||||||
// Check for the EFI boot directory
|
// Check for the EFI boot entries
|
||||||
if (safe_stricmp(psz_dirname, efi_dirname) == 0)
|
if (safe_stricmp(psz_dirname, efi_dirname) == 0) {
|
||||||
iso_report.has_efi = TRUE;
|
for (i=0; i<ARRAYSIZE(efi_bootname); i++)
|
||||||
|
if (safe_stricmp(psz_basename, efi_bootname[i]) == 0)
|
||||||
|
iso_report.has_efi |= (2<<i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for 'install.wim"
|
||||||
|
if (safe_stricmp(psz_fullpath, install_wim_path) == 0)
|
||||||
|
iso_report.has_install_wim = TRUE;
|
||||||
|
|
||||||
// Check for PE (XP) specific files in "/i386" or "/minint"
|
// Check for PE (XP) specific files in "/i386" or "/minint"
|
||||||
for (i=0; i<ARRAYSIZE(pe_dirname); i++)
|
for (i=0; i<ARRAYSIZE(pe_dirname); i++)
|
||||||
|
|
43
src/rufus.c
43
src/rufus.c
|
@ -145,6 +145,7 @@ static HICON hIconDisc, hIconDown, hIconUp, hIconLang;
|
||||||
static char szTimer[12] = "00:00:00";
|
static char szTimer[12] = "00:00:00";
|
||||||
static unsigned int timer;
|
static unsigned int timer;
|
||||||
static int64_t last_iso_blocking_status;
|
static int64_t last_iso_blocking_status;
|
||||||
|
static void ToggleToGo(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following is used to allocate slots within the progress bar
|
* The following is used to allocate slots within the progress bar
|
||||||
|
@ -468,7 +469,7 @@ static void SetFSFromISO(void)
|
||||||
|
|
||||||
// Syslinux and EFI have precedence over bootmgr (unless the user selected BIOS as target type)
|
// Syslinux and EFI have precedence over bootmgr (unless the user selected BIOS as target type)
|
||||||
if ((HAS_SYSLINUX(iso_report)) || (IS_REACTOS(iso_report)) || (iso_report.has_kolibrios) ||
|
if ((HAS_SYSLINUX(iso_report)) || (IS_REACTOS(iso_report)) || (iso_report.has_kolibrios) ||
|
||||||
((IS_EFI(iso_report)) && (bt == BT_UEFI) && (!iso_report.has_4GB_file))) {
|
((iso_report.has_efi) && (bt == BT_UEFI) && (!iso_report.has_4GB_file))) {
|
||||||
if (fs_mask & (1<<FS_FAT32)) {
|
if (fs_mask & (1<<FS_FAT32)) {
|
||||||
selected_fs = FS_FAT32;
|
selected_fs = FS_FAT32;
|
||||||
} else if ((fs_mask & (1<<FS_FAT16)) && (!iso_report.has_kolibrios)) {
|
} else if ((fs_mask & (1<<FS_FAT16)) && (!iso_report.has_kolibrios)) {
|
||||||
|
@ -509,6 +510,13 @@ static void SetMBRProps(void)
|
||||||
IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, needs_masquerading?1:0));
|
IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, needs_masquerading?1:0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void SetToGo(void)
|
||||||
|
{
|
||||||
|
int dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
||||||
|
if ( ((dt != DT_ISO) && (togo_mode)) || ((dt == DT_ISO) && (HAS_TOGO(iso_report)) && (!togo_mode)) )
|
||||||
|
ToggleToGo();
|
||||||
|
}
|
||||||
|
|
||||||
static void EnableAdvancedBootOptions(BOOL enable, BOOL remove_checkboxes)
|
static void EnableAdvancedBootOptions(BOOL enable, BOOL remove_checkboxes)
|
||||||
{
|
{
|
||||||
int bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
int bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||||
|
@ -546,6 +554,8 @@ static void EnableBootOptions(BOOL enable, BOOL remove_checkboxes)
|
||||||
EnableWindow(hBoot, actual_enable);
|
EnableWindow(hBoot, actual_enable);
|
||||||
EnableWindow(hBootType, actual_enable);
|
EnableWindow(hBootType, actual_enable);
|
||||||
EnableWindow(hSelectISO, actual_enable);
|
EnableWindow(hSelectISO, actual_enable);
|
||||||
|
EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL), actual_enable);
|
||||||
|
EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO), actual_enable);
|
||||||
EnableAdvancedBootOptions(actual_enable, remove_checkboxes);
|
EnableAdvancedBootOptions(actual_enable, remove_checkboxes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -570,7 +580,7 @@ static void SetTargetSystem(void)
|
||||||
|
|
||||||
if (SelectedDrive.PartitionType == PARTITION_STYLE_GPT) {
|
if (SelectedDrive.PartitionType == PARTITION_STYLE_GPT) {
|
||||||
ts = 2; // GPT/UEFI
|
ts = 2; // GPT/UEFI
|
||||||
} else if (SelectedDrive.has_protective_mbr || SelectedDrive.has_mbr_uefi_marker || (IS_EFI(iso_report) &&
|
} else if (SelectedDrive.has_protective_mbr || SelectedDrive.has_mbr_uefi_marker || ((iso_report.has_efi) &&
|
||||||
(!HAS_SYSLINUX(iso_report)) && (!iso_report.has_bootmgr) && (!IS_REACTOS(iso_report)) &&
|
(!HAS_SYSLINUX(iso_report)) && (!iso_report.has_bootmgr) && (!IS_REACTOS(iso_report)) &&
|
||||||
(!iso_report.has_kolibrios) && (!IS_GRUB(iso_report)) && (!IS_WINPE(iso_report.winpe))) ) {
|
(!iso_report.has_kolibrios) && (!IS_GRUB(iso_report)) && (!IS_WINPE(iso_report.winpe))) ) {
|
||||||
ts = 1; // MBR/UEFI
|
ts = 1; // MBR/UEFI
|
||||||
|
@ -783,6 +793,8 @@ static void EnableControls(BOOL bEnable)
|
||||||
EnableWindow(GetDlgItem(hMainDialog, IDC_LABEL), bEnable);
|
EnableWindow(GetDlgItem(hMainDialog, IDC_LABEL), bEnable);
|
||||||
EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), bEnable);
|
EnableWindow(GetDlgItem(hMainDialog, IDC_QUICKFORMAT), bEnable);
|
||||||
EnableWindow(GetDlgItem(hMainDialog, IDC_SET_ICON), bEnable);
|
EnableWindow(GetDlgItem(hMainDialog, IDC_SET_ICON), bEnable);
|
||||||
|
EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL), bEnable);
|
||||||
|
EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO), bEnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Callback for the log window */
|
/* Callback for the log window */
|
||||||
|
@ -907,7 +919,8 @@ static void DisplayISOProps(void)
|
||||||
uprintf(" Has Symlinks: %s", YesNo(iso_report.has_symlinks));
|
uprintf(" Has Symlinks: %s", YesNo(iso_report.has_symlinks));
|
||||||
uprintf(" Has a >4GB file: %s", YesNo(iso_report.has_4GB_file));
|
uprintf(" Has a >4GB file: %s", YesNo(iso_report.has_4GB_file));
|
||||||
uprintf(" Uses Bootmgr: %s", YesNo(iso_report.has_bootmgr));
|
uprintf(" Uses Bootmgr: %s", YesNo(iso_report.has_bootmgr));
|
||||||
uprintf(" Uses EFI: %s%s", YesNo(iso_report.has_efi || iso_report.has_win7_efi), (iso_report.has_win7_efi && (!iso_report.has_efi)) ? " (win7_x64)" : "");
|
// TODO: report x86, x64, Arm, Itanic?
|
||||||
|
uprintf(" Uses EFI: %s%s", YesNo(iso_report.has_efi), IS_WIN7_EFI(iso_report) ? " (win7_x64)" : "");
|
||||||
uprintf(" Uses Grub 2: %s", YesNo(iso_report.has_grub2));
|
uprintf(" Uses Grub 2: %s", YesNo(iso_report.has_grub2));
|
||||||
uprintf(" Uses Grub4DOS: %s", YesNo(iso_report.has_grub4dos));
|
uprintf(" Uses Grub4DOS: %s", YesNo(iso_report.has_grub4dos));
|
||||||
uprintf(" Uses isolinux: %s", isolinux_str);
|
uprintf(" Uses isolinux: %s", isolinux_str);
|
||||||
|
@ -919,6 +932,9 @@ static void DisplayISOProps(void)
|
||||||
uprintf(" Uses KolibriOS: %s", YesNo(iso_report.has_kolibrios));
|
uprintf(" Uses KolibriOS: %s", YesNo(iso_report.has_kolibrios));
|
||||||
uprintf(" Uses ReactOS: %s", YesNo(IS_REACTOS(iso_report)));
|
uprintf(" Uses ReactOS: %s", YesNo(IS_REACTOS(iso_report)));
|
||||||
uprintf(" Uses WinPE: %s%s", YesNo(IS_WINPE(iso_report.winpe)), (iso_report.uses_minint) ? " (with /minint)" : "");
|
uprintf(" Uses WinPE: %s%s", YesNo(IS_WINPE(iso_report.winpe)), (iso_report.uses_minint) ? " (with /minint)" : "");
|
||||||
|
|
||||||
|
if ( ((!togo_mode) && (HAS_TOGO(iso_report))) || ((togo_mode) && (!HAS_TOGO(iso_report))) )
|
||||||
|
ToggleToGo();
|
||||||
}
|
}
|
||||||
|
|
||||||
// The scanning process can be blocking for message processing => use a thread
|
// The scanning process can be blocking for message processing => use a thread
|
||||||
|
@ -979,6 +995,9 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
||||||
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hMainDialog, IDC_START), TRUE);
|
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hMainDialog, IDC_START), TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Need to invalidate as we may have changed the UI and may get artifacts if we don't
|
||||||
|
InvalidateRect(hMainDialog, NULL, TRUE);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
PrintInfo(0, MSG_210);
|
PrintInfo(0, MSG_210);
|
||||||
ExitThread(0);
|
ExitThread(0);
|
||||||
|
@ -1053,8 +1072,6 @@ static void ToggleAdvanced(void)
|
||||||
|
|
||||||
// Toggle the up/down icon
|
// Toggle the up/down icon
|
||||||
SendMessage(GetDlgItem(hMainDialog, IDC_ADVANCED), BCM_SETIMAGELIST, 0, (LPARAM)(advanced_mode?&bi_up:&bi_down));
|
SendMessage(GetDlgItem(hMainDialog, IDC_ADVANCED), BCM_SETIMAGELIST, 0, (LPARAM)(advanced_mode?&bi_up:&bi_down));
|
||||||
|
|
||||||
InvalidateRect(hMainDialog, NULL, TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Toggle DD Image mode
|
// Toggle DD Image mode
|
||||||
|
@ -1132,9 +1149,6 @@ static void ToggleToGo(void)
|
||||||
// Reset the radio button choice
|
// Reset the radio button choice
|
||||||
Button_SetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL), BST_CHECKED);
|
Button_SetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL), BST_CHECKED);
|
||||||
Button_SetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO), BST_UNCHECKED);
|
Button_SetCheck(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO), BST_UNCHECKED);
|
||||||
|
|
||||||
// Need to invalidate, else we may get artifacts
|
|
||||||
InvalidateRect(hMainDialog, NULL, TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL BootCheck(void)
|
static BOOL BootCheck(void)
|
||||||
|
@ -1173,12 +1187,12 @@ static BOOL BootCheck(void)
|
||||||
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
||||||
bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||||
if (bt == BT_UEFI) {
|
if (bt == BT_UEFI) {
|
||||||
if (!IS_EFI(iso_report)) {
|
if (!iso_report.has_efi) {
|
||||||
// Unsupported ISO
|
// Unsupported ISO
|
||||||
MessageBoxU(hMainDialog, lmprintf(MSG_091), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL);
|
MessageBoxU(hMainDialog, lmprintf(MSG_091), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if ((iso_report.has_win7_efi) && (!WimExtractCheck())) {
|
if (IS_WIN7_EFI(iso_report) && (!WimExtractCheck())) {
|
||||||
// Your platform cannot extract files from WIM archives => download 7-zip?
|
// Your platform cannot extract files from WIM archives => download 7-zip?
|
||||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_102), lmprintf(MSG_101), MB_YESNO|MB_ICONERROR|MB_IS_RTL) == IDYES)
|
if (MessageBoxU(hMainDialog, lmprintf(MSG_102), lmprintf(MSG_101), MB_YESNO|MB_ICONERROR|MB_IS_RTL) == IDYES)
|
||||||
ShellExecuteA(hMainDialog, "open", SEVENZIP_URL, NULL, NULL, SW_SHOWNORMAL);
|
ShellExecuteA(hMainDialog, "open", SEVENZIP_URL, NULL, NULL, SW_SHOWNORMAL);
|
||||||
|
@ -1721,6 +1735,8 @@ void SetBoot(int fs, int bt)
|
||||||
EnableWindow(hBoot, TRUE);
|
EnableWindow(hBoot, TRUE);
|
||||||
EnableWindow(hBootType, TRUE);
|
EnableWindow(hBootType, TRUE);
|
||||||
EnableWindow(hSelectISO, TRUE);
|
EnableWindow(hSelectISO, TRUE);
|
||||||
|
EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_INSTALL), TRUE);
|
||||||
|
EnableWindow(GetDlgItem(hMainDialog, IDC_WINDOWS_TO_GO), TRUE);
|
||||||
CheckDlgButton(hMainDialog, IDC_BOOT, uBootChecked);
|
CheckDlgButton(hMainDialog, IDC_BOOT, uBootChecked);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1943,9 +1959,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
ShowWindow(hLogDlg, log_displayed?SW_SHOW:SW_HIDE);
|
ShowWindow(hLogDlg, log_displayed?SW_SHOW:SW_HIDE);
|
||||||
break;
|
break;
|
||||||
#ifdef RUFUS_TEST
|
#ifdef RUFUS_TEST
|
||||||
case IDC_TEST:
|
|
||||||
ToggleToGo();
|
|
||||||
#if 0
|
|
||||||
if (format_thid != NULL) {
|
if (format_thid != NULL) {
|
||||||
return (INT_PTR)TRUE;
|
return (INT_PTR)TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1993,7 +2006,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
}
|
}
|
||||||
if (format_thid == NULL)
|
if (format_thid == NULL)
|
||||||
format_op_in_progress = FALSE;
|
format_op_in_progress = FALSE;
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case IDC_LANG:
|
case IDC_LANG:
|
||||||
|
@ -2037,6 +2049,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
ToggleImage(FALSE);
|
ToggleImage(FALSE);
|
||||||
EnableAdvancedBootOptions(FALSE, TRUE);
|
EnableAdvancedBootOptions(FALSE, TRUE);
|
||||||
SetBoot(fs, bt);
|
SetBoot(fs, bt);
|
||||||
|
SetToGo();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SetClusterSizes(fs);
|
SetClusterSizes(fs);
|
||||||
|
@ -2081,6 +2094,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
EnableAdvancedBootOptions(TRUE, TRUE);
|
EnableAdvancedBootOptions(TRUE, TRUE);
|
||||||
SetBoot(fs, bt);
|
SetBoot(fs, bt);
|
||||||
SetMBRProps();
|
SetMBRProps();
|
||||||
|
SetToGo();
|
||||||
break;
|
break;
|
||||||
case IDC_BOOT:
|
case IDC_BOOT:
|
||||||
EnableAdvancedBootOptions(TRUE, TRUE);
|
EnableAdvancedBootOptions(TRUE, TRUE);
|
||||||
|
@ -2093,6 +2107,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
selection_default = (int) ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
selection_default = (int) ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
||||||
EnableAdvancedBootOptions(TRUE, TRUE);
|
EnableAdvancedBootOptions(TRUE, TRUE);
|
||||||
ToggleImage(!IsChecked(IDC_BOOT) || (selection_default != DT_IMG));
|
ToggleImage(!IsChecked(IDC_BOOT) || (selection_default != DT_IMG));
|
||||||
|
SetToGo();
|
||||||
if ((selection_default == DT_ISO) || (selection_default == DT_IMG)) {
|
if ((selection_default == DT_ISO) || (selection_default == DT_IMG)) {
|
||||||
if ((image_path == NULL) || (iso_report.label[0] == 0)) {
|
if ((image_path == NULL) || (iso_report.label[0] == 0)) {
|
||||||
// Set focus to the Select ISO button
|
// Set focus to the Select ISO button
|
||||||
|
|
10
src/rufus.h
10
src/rufus.h
|
@ -229,8 +229,9 @@ typedef struct {
|
||||||
#define WINPE_MININT 0x2A
|
#define WINPE_MININT 0x2A
|
||||||
#define WINPE_I386 0x15
|
#define WINPE_I386 0x15
|
||||||
#define HAS_SYSLINUX(r) (r.sl_version != 0)
|
#define HAS_SYSLINUX(r) (r.sl_version != 0)
|
||||||
#define IS_WINPE(r) (((r&WINPE_MININT) == WINPE_MININT)||((r&WINPE_I386) == WINPE_I386))
|
#define HAS_TOGO(r) (r.has_bootmgr && r.has_efi && r.has_install_wim)
|
||||||
#define IS_EFI(r) ((r.has_efi) || (r.has_win7_efi))
|
#define IS_WINPE(r) (((r & WINPE_MININT) == WINPE_MININT)||(( r & WINPE_I386) == WINPE_I386))
|
||||||
|
#define IS_WIN7_EFI(r) (r.has_efi & 1)
|
||||||
#define IS_REACTOS(r) (r.reactos_path[0] != 0)
|
#define IS_REACTOS(r) (r.reactos_path[0] != 0)
|
||||||
#define IS_GRUB(r) ((r.has_grub2) || (r.has_grub4dos))
|
#define IS_GRUB(r) ((r.has_grub2) || (r.has_grub4dos))
|
||||||
|
|
||||||
|
@ -241,14 +242,13 @@ typedef struct {
|
||||||
char reactos_path[128]; /* path to the ISO's freeldr.sys or setupldr.sys */
|
char reactos_path[128]; /* path to the ISO's freeldr.sys or setupldr.sys */
|
||||||
uint64_t projected_size;
|
uint64_t projected_size;
|
||||||
uint64_t src_size;
|
uint64_t src_size;
|
||||||
// TODO: use a bitmask and #define tests for the following
|
|
||||||
uint8_t winpe;
|
uint8_t winpe;
|
||||||
|
uint8_t has_efi;
|
||||||
BOOL has_4GB_file;
|
BOOL has_4GB_file;
|
||||||
BOOL has_long_filename;
|
BOOL has_long_filename;
|
||||||
BOOL has_symlinks;
|
BOOL has_symlinks;
|
||||||
BOOL has_bootmgr;
|
BOOL has_bootmgr;
|
||||||
BOOL has_efi;
|
BOOL has_install_wim;
|
||||||
BOOL has_win7_efi;
|
|
||||||
BOOL has_autorun;
|
BOOL has_autorun;
|
||||||
BOOL has_old_c32[NB_OLD_C32];
|
BOOL has_old_c32[NB_OLD_C32];
|
||||||
BOOL has_old_vesamenu;
|
BOOL has_old_vesamenu;
|
||||||
|
|
16
src/rufus.rc
16
src/rufus.rc
|
@ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG DIALOGEX 12, 12, 242, 376
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "Rufus 2.0.0.571"
|
CAPTION "Rufus 2.0.0.572"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
||||||
|
@ -157,7 +157,7 @@ END
|
||||||
|
|
||||||
IDD_DIALOG_XP DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG_XP DIALOGEX 12, 12, 242, 376
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "Rufus 2.0.0.571"
|
CAPTION "Rufus 2.0.0.572"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
||||||
|
@ -283,7 +283,7 @@ END
|
||||||
IDD_DIALOG_RTL DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG_RTL DIALOGEX 12, 12, 242, 376
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
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
|
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
||||||
CAPTION "Rufus 2.0.0.571"
|
CAPTION "Rufus 2.0.0.572"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
||||||
|
@ -415,7 +415,7 @@ END
|
||||||
IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 242, 376
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
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
|
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
||||||
CAPTION "Rufus 2.0.0.571"
|
CAPTION "Rufus 2.0.0.572"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
||||||
|
@ -669,8 +669,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 2,0,0,571
|
FILEVERSION 2,0,0,572
|
||||||
PRODUCTVERSION 2,0,0,571
|
PRODUCTVERSION 2,0,0,572
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -687,13 +687,13 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "2.0.0.571"
|
VALUE "FileVersion", "2.0.0.572"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2015 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2015 Pete Batard (GPL v3)"
|
||||||
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
||||||
VALUE "OriginalFilename", "rufus.exe"
|
VALUE "OriginalFilename", "rufus.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "2.0.0.571"
|
VALUE "ProductVersion", "2.0.0.572"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
Loading…
Reference in a new issue