mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[misc] warn about UDF formatting times and 64k MS-DOS
* Closes #149 * Closes #180
This commit is contained in:
parent
7d2519675c
commit
59496e53c0
7 changed files with 89 additions and 14 deletions
|
@ -6,7 +6,13 @@ the same changes.
|
|||
Remember to also update the version number for your translation ('v x.y.z')
|
||||
once you have matched all the changes that occurred for the en-US translation.
|
||||
|
||||
|
||||
o Version 1.0.2 (2013.10.30)
|
||||
- *NEW* MSG_110 "MS-DOS cannot boot from a drive using a 64 kilobyte Cluster size..."
|
||||
- *NEW* MSG_111 "Incompatible Cluster size"
|
||||
- *NEW* MSG_112 "Formatting a large UDF volumes can take a lot of time..."
|
||||
- *NEW* MSG_113 "Large UDF volume"
|
||||
- *NEW* MSG_220 "Formatting (%s) - estimated duration %d:%02d..."
|
||||
- [ANOTHER MESSAGE TO FOLLOW]
|
||||
o Version 1.0.1 (2013.10.28)
|
||||
- MSG_061 "Please insert a media in drive." -> "Please insert a removable media in drive."
|
||||
- MSG_071 "Unable to create formatting thread." -> "Unable to start thread."
|
||||
|
|
|
@ -51,7 +51,7 @@ l "zz-ZZ" "LangName_EN (LangName_ZZ)" 0x1234, 0xabcd
|
|||
# See http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx or
|
||||
# http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-LCID%5D.pdf
|
||||
# for the LCID (0x####) codes you should use
|
||||
v 1.0.1
|
||||
v 1.0.2
|
||||
|
||||
# Main dialog
|
||||
g IDD_DIALOG
|
||||
|
@ -255,7 +255,7 @@ t MSG_096 "Only FAT/FAT32 is supported for this type of ISO. Please select FAT/F
|
|||
t MSG_097 "Only 'bootmgr' or 'WinPE' based ISO images can currently be used with NTFS."
|
||||
t MSG_098 "FAT/FAT32 can only be used for isolinux based ISO images or when the Target Type is UEFI."
|
||||
t MSG_099 "Filesystem limitation"
|
||||
t MSG_100 "This iso image contains a file larger than 4GB file, which is more than the "
|
||||
t MSG_100 "This ISO image contains a file larger than 4GB file, which is more than the "
|
||||
"maximum size allowed for a FAT or FAT32 file system."
|
||||
t MSG_101 "Missing WIM support"
|
||||
t MSG_102 "Your platform cannot extract files from WIM archives. WIM extraction "
|
||||
|
@ -275,6 +275,15 @@ t MSG_106 "Please select folder"
|
|||
t MSG_107 "All files"
|
||||
t MSG_108 "Rufus log"
|
||||
t MSG_109 "0x%02X (Disk %d)"
|
||||
# "Cluster size" below should be the same as the label for IDS_CLUSTERSIZE_TXT
|
||||
# "kilobytes" should be the same as in MSG_027
|
||||
t MSG_110 "MS-DOS cannot boot from a drive using a 64 kilobytes Cluster size.\n"
|
||||
"Please change the Cluster size or use FreeDOS."
|
||||
t MSG_111 "Incompatible Cluster size"
|
||||
# "%d:%02d" below is a duration (mins:secs)
|
||||
t MSG_112 "Formatting a large UDF volumes can take a lot of time. At USB 2.0 speeds, the estimated formatting "
|
||||
"duration is %d:%02d, during which the progress bar will appear frozen. Please be patient!"
|
||||
t MSG_113 "Large UDF volume"
|
||||
|
||||
# Tootips
|
||||
# Partition Scheme and Target Type
|
||||
|
@ -352,6 +361,10 @@ t MSG_216 "Saved %s"
|
|||
t MSG_217 "Formatting: %0.1f%% completed"
|
||||
t MSG_218 "Creating file system: Task %d/%d completed"
|
||||
t MSG_219 "NTFS Fixup: %d%% completed"
|
||||
# Parameter: the file system and an estimated duration in mins and secs.
|
||||
# eg. "Formatting (UDF) - Estimated duration 3:21..."
|
||||
# NB: if "estimated duration" is too long, just use "estimated" or an abbreviation
|
||||
t MSG_220 "Formatting (%s) - estimated duration %d:%02d..."
|
||||
t MSG_221 "Setting Label (This may take while)..."
|
||||
# Parameter: the file system. eg. "Formatting (NTFS)..."
|
||||
t MSG_222 "Formatting (%s)..."
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
################################################################################
|
||||
l "en-US" "English (English)" 0x0409, 0x0809, 0x0c09, 0x1009, 0x1409, 0x1809, 0x1c09, 0x2009, 0x2409, 0x2809, 0x2c09, 0x3009, 0x3409, 0x3809, 0x3c09, 0x4009, 0x4409, 0x4809
|
||||
v 1.0.1
|
||||
v 1.0.2
|
||||
g IDD_MESSAGES
|
||||
t MSG_001 "Other instance detected"
|
||||
t MSG_002 "Another Rufus application is running.\n"
|
||||
|
@ -132,7 +132,7 @@ t MSG_096 "Only FAT/FAT32 is supported for this type of ISO. Please select FAT/F
|
|||
t MSG_097 "Only 'bootmgr' or 'WinPE' based ISO images can currently be used with NTFS."
|
||||
t MSG_098 "FAT/FAT32 can only be used for isolinux based ISO images or when the Target Type is UEFI."
|
||||
t MSG_099 "Filesystem limitation"
|
||||
t MSG_100 "This iso image contains a file larger than 4GB file, which is more than the "
|
||||
t MSG_100 "This ISO image contains a file larger than 4GB file, which is more than the "
|
||||
"maximum size allowed for a FAT or FAT32 file system."
|
||||
t MSG_101 "Missing WIM support"
|
||||
t MSG_102 "Your platform cannot extract files from WIM archives. WIM extraction "
|
||||
|
@ -152,6 +152,12 @@ t MSG_106 "Please select folder"
|
|||
t MSG_107 "All files"
|
||||
t MSG_108 "Rufus log"
|
||||
t MSG_109 "0x%02X (Disk %d)"
|
||||
t MSG_110 "MS-DOS cannot boot from a drive using a 64 kilobyte Cluster size.\n"
|
||||
"Please change the Cluster size or use FreeDOS."
|
||||
t MSG_111 "Incompatible Cluster size"
|
||||
t MSG_112 "Formatting a large UDF volumes can take a lot of time. At USB 2.0 speeds, the estimated formatting "
|
||||
"duration is %d:%02d, during which the progress bar will appear frozen. Please be patient!"
|
||||
t MSG_113 "Large UDF volume"
|
||||
|
||||
# Tootips
|
||||
# Partition Scheme and Target Type
|
||||
|
@ -229,8 +235,9 @@ t MSG_216 "Saved %s"
|
|||
t MSG_217 "Formatting: %0.1f%% completed"
|
||||
t MSG_218 "Creating file system: Task %d/%d completed"
|
||||
t MSG_219 "NTFS Fixup: %d%% completed"
|
||||
# Parameter: the file system and an estimated duration in mins and secs
|
||||
t MSG_220 "Formatting (%s) - estimated duration %d:%02d..."
|
||||
t MSG_221 "Setting Label (This may take while)..."
|
||||
# Parameter: the file system. eg. "Formatting (NTFS)..."
|
||||
t MSG_222 "Formatting (%s)..."
|
||||
t MSG_223 "NTFS Fixup (Checkdisk)..."
|
||||
t MSG_224 "Clearing MBR/PBR/GPT structures..."
|
||||
|
@ -358,7 +365,7 @@ t MSG_007 "撤消"
|
|||
|
||||
################################################################################
|
||||
l "fr-FR" "French (Français)" 0x040c, 0x080c, 0x0c0c, 0x100c, 0x140c, 0x180c, 0x1c0c, 0x200c, 0x240c, 0x280c, 0x2c0c, 0x300c, 0x340c, 0x380c, 0xe40c
|
||||
v 1.0.1
|
||||
v 1.0.2
|
||||
b "en-US"
|
||||
|
||||
g IDD_DIALOG
|
||||
|
@ -584,6 +591,12 @@ t MSG_106 "Sélection de répertoire"
|
|||
t MSG_107 "Tous les fichiers"
|
||||
t MSG_108 "Log Rufus"
|
||||
t MSG_109 "0x%02X (disque %d)"
|
||||
t MSG_110 "MS-DOS ne peut pas être utilisé sur un disque avec une Taille de clusters de 64 kilo-octets.\n"
|
||||
"Veuillez changer la Taille de clusters ou utilisez FreeDOS."
|
||||
t MSG_111 "Taille de clusters incompatible"
|
||||
t MSG_112 "Le formattage d'un volume UDF de grande taille peut prendre beaucoup de temps. Aux vitesses USB 2.0, "
|
||||
"la durée de formattage estimée est %d:%02d, pendant laquelle la barre de progrès semblera gelée. Veuillez être patient !"
|
||||
t MSG_113 "Volume UDF de grand taille"
|
||||
|
||||
# Tootips
|
||||
t MSG_150 "Ce choix est le plus sûr. Mais si vous possédez un ordinateur à base de UEFI et voulez installer "
|
||||
|
@ -656,6 +669,7 @@ t MSG_216 "%s sauvegardé"
|
|||
t MSG_217 "Formatage: %0.1f%% complet"
|
||||
t MSG_218 "Création du système de fichiers: Tâche %d/%d complète"
|
||||
t MSG_219 "Finalisation NTFS: %d%% complète"
|
||||
t MSG_220 "Formatage (%s) - durée estimée %d:%02d..."
|
||||
t MSG_221 "Ecriture du label (peut prendre du temps)..."
|
||||
t MSG_222 "Formatage (%s)..."
|
||||
t MSG_223 "Finalisation NTFS (Checkdisk)..."
|
||||
|
|
11
src/format.c
11
src/format.c
|
@ -53,6 +53,7 @@ badblocks_report report;
|
|||
static float format_percent = 0.0f;
|
||||
static int task_number = 0;
|
||||
extern const int nb_steps[FS_MAX];
|
||||
extern uint32_t dur_mins, dur_secs;
|
||||
static int fs_index = 0;
|
||||
BOOL force_large_fat32 = FALSE;
|
||||
static BOOL WritePBR(HANDLE hLogicalDrive);
|
||||
|
@ -626,9 +627,15 @@ static BOOL FormatDrive(DWORD DriveIndex)
|
|||
WCHAR wLabel[64];
|
||||
ULONG ulClusterSize;
|
||||
size_t i;
|
||||
int fs;
|
||||
|
||||
GetWindowTextU(hFileSystem, FSType, ARRAYSIZE(FSType));
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_222, FSType));
|
||||
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
||||
if ((fs == FS_UDF) && !((dur_mins == 0) && (dur_secs == 0))) {
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_220, FSType, dur_mins, dur_secs));
|
||||
} else {
|
||||
PrintStatus(0, TRUE, lmprintf(MSG_222, FSType));
|
||||
}
|
||||
VolumeName = GetLogicalName(DriveIndex, FALSE, TRUE);
|
||||
wVolumeName = utf8_to_wchar(VolumeName);
|
||||
if (wVolumeName == NULL) {
|
||||
|
@ -1298,7 +1305,7 @@ DWORD WINAPI FormatThread(LPVOID param)
|
|||
}
|
||||
hLogicalVolume = INVALID_HANDLE_VALUE;
|
||||
|
||||
// TODO: (v1.4) Our start button should become cancel instead of close
|
||||
// TODO: (v1.5) Our start button should become cancel instead of close
|
||||
|
||||
// Especially after destructive badblocks test, you must zero the MBR/GPT completely
|
||||
// before repartitioning. Else, all kind of bad things happen.
|
||||
|
|
33
src/rufus.c
33
src/rufus.c
|
@ -112,6 +112,7 @@ char szFolderPath[MAX_PATH], app_dir[MAX_PATH];
|
|||
char* iso_path = NULL;
|
||||
float fScale = 1.0f;
|
||||
int default_fs;
|
||||
uint32_t dur_mins, dur_secs;
|
||||
HWND hDeviceList, hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog = NULL;
|
||||
HWND hISOProgressDlg = NULL, hLogDlg = NULL, hISOProgressBar, hISOFileName, hDiskID;
|
||||
BOOL use_own_c32[NB_OLD_C32] = {FALSE, FALSE}, detect_fakes = TRUE, mbr_selected_by_user = FALSE;
|
||||
|
@ -1184,10 +1185,12 @@ static BOOL BootCheck(void)
|
|||
dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
||||
if (dt == DT_ISO) {
|
||||
if (iso_path == NULL) {
|
||||
// Please click on the disc button to select a bootable ISO
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_087), lmprintf(MSG_086), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
}
|
||||
if ((size_check) && (iso_report.projected_size > (uint64_t)SelectedDrive.DiskSize)) {
|
||||
// This ISO image is too big for the selected target
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_089), lmprintf(MSG_088), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -1195,31 +1198,39 @@ static BOOL BootCheck(void)
|
|||
bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||
if (bt == BT_UEFI) {
|
||||
if (!IS_EFI(iso_report)) {
|
||||
// Unsupported ISO
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_091), lmprintf(MSG_090), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
} else if (fs > FS_FAT32) {
|
||||
// When using UEFI Target Type, only FAT/FAT32 is supported.
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_093), lmprintf(MSG_092), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
} else if (iso_report.has_4GB_file) {
|
||||
// This ISO image contains a file larger than 4 GB and cannot be used to create an EFI bootable USB
|
||||
// Who the heck decided that using FAT32 for UEFI boot was a great idea?!?
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_095), lmprintf(MSG_094), MB_OK|MB_ICONINFORMATION);
|
||||
return FALSE;
|
||||
}
|
||||
} else if ((fs == FS_NTFS) && (!iso_report.has_bootmgr) && (!IS_WINPE(iso_report.winpe))) {
|
||||
if (iso_report.has_isolinux) {
|
||||
// Only FAT/FAT32 is supported for this type of ISO
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_096), lmprintf(MSG_092), MB_OK|MB_ICONERROR);
|
||||
} else {
|
||||
// Only 'bootmgr' or 'WinPE' based ISO images can currently be used with NTFS
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_097), lmprintf(MSG_090), MB_OK|MB_ICONERROR);
|
||||
}
|
||||
return FALSE;
|
||||
} else if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (!iso_report.has_isolinux)) {
|
||||
// FAT/FAT32 can only be used for isolinux based ISO images or when the Target Type is UEFI
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_098), lmprintf(MSG_090), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
} else if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (iso_report.has_4GB_file)) {
|
||||
// This ISO image contains a file larger than 4GB file (FAT32)
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_100), lmprintf(MSG_099), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
}
|
||||
if ((bt == BT_UEFI) && (iso_report.has_win7_efi) && (!WimExtractCheck())) {
|
||||
// Your platform cannot extract files from WIM archives => download 7-zip?
|
||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_102), lmprintf(MSG_101), MB_YESNO|MB_ICONERROR) == IDYES)
|
||||
ShellExecuteA(hMainDialog, "open", SEVENZIP_URL, NULL, NULL, SW_SHOWNORMAL);
|
||||
return FALSE;
|
||||
|
@ -1232,6 +1243,7 @@ static BOOL BootCheck(void)
|
|||
fclose(fd);
|
||||
} else {
|
||||
PrintStatus(0, FALSE, lmprintf(MSG_206, ldlinux_name));
|
||||
// Syslinux v5.0 or later requires a '%s' file to be installed
|
||||
r = MessageBoxU(hMainDialog, lmprintf(MSG_104, ldlinux_name, ldlinux_name),
|
||||
lmprintf(MSG_103, ldlinux_name), MB_YESNOCANCEL|MB_ICONWARNING);
|
||||
if (r == IDCANCEL)
|
||||
|
@ -1242,6 +1254,12 @@ static BOOL BootCheck(void)
|
|||
DownloadFile(LDLINUX_C32_URL, ldlinux_name, hISOProgressDlg);
|
||||
}
|
||||
}
|
||||
} else if (dt == DT_WINME) {
|
||||
if ((size_check) && (ComboBox_GetItemData(hClusterSize, ComboBox_GetCurSel(hClusterSize)) >= 65536)) {
|
||||
// MS-DOS cannot boot from a drive using a 64 kilobytes Cluster size
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_110), lmprintf(MSG_111), MB_OK|MB_ICONERROR);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1789,6 +1807,21 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
|||
format_op_in_progress = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
// Display a warning about UDF formatting times
|
||||
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
||||
if (fs == FS_UDF) {
|
||||
dur_secs = (uint32_t)(((double)SelectedDrive.DiskSize)/1073741824.0f/UDF_FORMAT_SPEED);
|
||||
if (dur_secs > UDF_FORMAT_WARN) {
|
||||
dur_mins = dur_secs/60;
|
||||
dur_secs -= dur_mins*60;
|
||||
MessageBoxU(hMainDialog, lmprintf(MSG_112, dur_mins, dur_secs), lmprintf(MSG_113), MB_OK|MB_ICONASTERISK);
|
||||
} else {
|
||||
dur_secs = 0;
|
||||
dur_mins = 0;
|
||||
}
|
||||
}
|
||||
|
||||
GetWindowTextU(hDeviceList, tmp, ARRAYSIZE(tmp));
|
||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_003, tmp),
|
||||
APPLICATION_NAME, MB_OKCANCEL|MB_ICONWARNING) == IDCANCEL) {
|
||||
|
|
|
@ -53,6 +53,8 @@
|
|||
#define FS_DEFAULT FS_FAT32
|
||||
#define BADBLOCK_PATTERNS {0xaa, 0x55, 0xff, 0x00}
|
||||
#define LARGE_FAT32_SIZE (32*1073741824LL) // Size at which we need to use fat32format
|
||||
#define UDF_FORMAT_SPEED 3.1f // Speed estimate at which we expect UDF drives to be formatted (GB/s)
|
||||
#define UDF_FORMAT_WARN 20 // Duration (in seconds) above which we warn about long UDF formatting times
|
||||
#define MAX_FAT32_SIZE 2.0f // Threshold above which we disable FAT32 formatting (in TB)
|
||||
#define WHITE RGB(255,255,255)
|
||||
#define SEPARATOR_GREY RGB(223,223,223)
|
||||
|
|
10
src/rufus.rc
10
src/rufus.rc
|
@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
|||
IDD_DIALOG DIALOGEX 12, 12, 206, 329
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_APPWINDOW
|
||||
CAPTION "Rufus v1.4.0.301"
|
||||
CAPTION "Rufus v1.4.0.302"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
|
||||
|
@ -285,8 +285,8 @@ END
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,4,0,301
|
||||
PRODUCTVERSION 1,4,0,301
|
||||
FILEVERSION 1,4,0,302
|
||||
PRODUCTVERSION 1,4,0,302
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -303,13 +303,13 @@ BEGIN
|
|||
BEGIN
|
||||
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
||||
VALUE "FileDescription", "Rufus"
|
||||
VALUE "FileVersion", "1.4.0.301"
|
||||
VALUE "FileVersion", "1.4.0.302"
|
||||
VALUE "InternalName", "Rufus"
|
||||
VALUE "LegalCopyright", "© 2011-2013 Pete Batard (GPL v3)"
|
||||
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
||||
VALUE "OriginalFilename", "rufus.exe"
|
||||
VALUE "ProductName", "Rufus"
|
||||
VALUE "ProductVersion", "1.4.0.301"
|
||||
VALUE "ProductVersion", "1.4.0.302"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
|
Loading…
Reference in a new issue