diff --git a/README.txt b/README.txt index 32027a9f..cdca407f 100644 --- a/README.txt +++ b/README.txt @@ -1,10 +1,13 @@ Rufus: The Reliable USB Formatting Utility Features: -- Formats USB memory sticks to FAT/FAT32/NTFS/exFAT -- Creates MS-DOS/FreeDOS bootable USB memory sticks, with no external files required -- Checks for bad blocks +- Formats USB flash drives to FAT/FAT32/NTFS/exFAT +- Creates DOS bootable USB drives, with no external files required +- Creates bootable USB drives from ISOs, such as Windows installation media +- Twice as fast as Microsoft's USB/DVD tool or UNetbootin, on ISO->USB (1) +- Bad blocks check - Modern UI, with UAC elevation for Windows Vista and later +- Very small footprint, no installation required - Fully Open Source (GPL v3) Compilation: @@ -15,10 +18,18 @@ Compilation: Additional information: Rufus provides extensive information abour what it is doing through the Windows - debug facility, which can be accessed with an application such as DebugView. + debug facility. This info can be accessed with an application such as DebugView. More info: http://rufus.akeo.ie Enhancements/Bugs https://github.com/pbatard/rufus/issues + + +(1) Tests carried out with a 16 GB USB 3.0 ADATA pen drive on a + Core 2 duo/4 GB RAM platform running Windows 7 x64. + ISO: en_windows_7_ultimate_with_sp1_x64_dvd_618240.iso + - Windows 7 USB/DVD Download Tool v1.0.30: 8 mins 10s + - UNetbootin v1.1.1.1: 6 mins 20s + - Rufus v1.1.0: 3 mins 25s diff --git a/configure b/configure index 54e3b2dd..a5e3f7c5 100644 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for rufus 1.0.8. +# Generated by GNU Autoconf 2.68 for rufus 1.1.0. # # Report bugs to . # @@ -559,8 +559,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='rufus' PACKAGE_TARNAME='rufus' -PACKAGE_VERSION='1.0.8' -PACKAGE_STRING='rufus 1.0.8' +PACKAGE_VERSION='1.1.0' +PACKAGE_STRING='rufus 1.1.0' PACKAGE_BUGREPORT='https://github.com/pbatard/rufus/issues' PACKAGE_URL='http://rufus.akeo.ie' @@ -1205,7 +1205,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures rufus 1.0.8 to adapt to many kinds of systems. +\`configure' configures rufus 1.1.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1271,7 +1271,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of rufus 1.0.8:";; + short | recursive ) echo "Configuration of rufus 1.1.0:";; esac cat <<\_ACEOF @@ -1287,7 +1287,7 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-freedos embed FreeDOS support (default=yes) - --with-syslinux embed SysLinux support (default=yes) + --with-syslinux embed Syslinux support (default=yes) Some influential environment variables: CC C compiler command @@ -1365,7 +1365,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -rufus configure 1.0.8 +rufus configure 1.1.0 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1420,7 +1420,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by rufus $as_me 1.0.8, which was +It was created by rufus $as_me 1.1.0, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2235,7 +2235,7 @@ fi # Define the identity of the package. PACKAGE='rufus' - VERSION='1.0.8' + VERSION='1.1.0' cat >>confdefs.h <<_ACEOF @@ -3447,26 +3447,6 @@ esac $as_echo "#define _GNU_SOURCE /**/" >>confdefs.h -## We don't actually use config.h for the time being -#AM_CONFIG_HEADER([config.h]) - -## The following creates config.guess and a bunch of polluting stuff -## => avoid it for now -#AC_CANONICAL_HOST -#AC_MSG_CHECKING([development environment]) -#case $host in -#*-mingw*) -# AC_MSG_RESULT([MinGW]) -# AM_CFLAGS="-Wshadow" -# ;; -#*) -# AC_MSG_ERROR([unsupported development environment]) -#esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: enabling Large File Support (for ISO images)" >&5 -$as_echo "enabling Large File Support (for ISO images)" >&6; } -AM_CFLAGS="-D_FILE_OFFSET_BITS=64 -D_OFF_T_DEFINED -D_OFF_T_ -D_off_t=off64_t -Doff_t=off64_t" - # Clang needs an explicit WIN32_WINNT defined else it produces warnings # in msapi_utf8.h - including winver.h only doesn't work AM_CFLAGS="${AM_CFLAGS} -DWINVER=0x501 -D_WIN32_IE=0x501 -D_WIN32_WINNT=0x501" @@ -3498,7 +3478,6 @@ if test "x$with_syslinux" != "xno" ; then EXESUFFIX="f" fi - # Debug symbols # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : @@ -3507,13 +3486,17 @@ else debug_enabled='yes' fi -if test "x$debug_enabled" = "xyes" ; then +if test "x$debug_enabled" != "xno" ; then CFLAGS="-g -O2" else CFLAGS="-O2" LDFLAGS="-s" fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: enabling Large File Support (ISO support)" >&5 +$as_echo "enabling Large File Support (ISO support)" >&6; } +AM_CFLAGS="$AM_CFLAGS -D_FILE_OFFSET_BITS=64 -D_OFF_T_DEFINED -D_OFF_T_ -D_off_t=off64_t -Doff_t=off64_t" + # check for -Wno-pointer-sign compiler support (GCC >= 4) saved_CFLAGS="${CFLAGS}" CFLAGS="$CFLAGS -Wno-pointer-sign" @@ -4122,7 +4105,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by rufus $as_me 1.0.8, which was +This file was extended by rufus $as_me 1.1.0, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -4176,7 +4159,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -rufus config.status 1.0.8 +rufus config.status 1.1.0 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -4757,3 +4740,10 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: +FreeDOS Support : $(test \"x$with_freedos\" != \"xno\" && echo enabled || echo disabled) +Syslinux Support : $(test \"x$with_syslinux\" != \"xno\" && echo enabled || echo disabled)" >&5 +$as_echo "$as_me: +FreeDOS Support : $(test \"x$with_freedos\" != \"xno\" && echo enabled || echo disabled) +Syslinux Support : $(test \"x$with_syslinux\" != \"xno\" && echo enabled || echo disabled)" >&6;} diff --git a/configure.ac b/configure.ac index 5f5c7e1f..e5da7d1d 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([rufus], [1.0.8], [https://github.com/pbatard/rufus/issues], [rufus], [http://rufus.akeo.ie]) +AC_INIT([rufus], [1.1.0], [https://github.com/pbatard/rufus/issues], [rufus], [http://rufus.akeo.ie]) AM_INIT_AUTOMAKE([-Wno-portability foreign no-dist no-dependencies]) AC_CONFIG_SRCDIR([src/rufus.c]) AC_CONFIG_MACRO_DIR([m4]) @@ -16,25 +16,6 @@ AC_CHECK_TOOL(WINDRES, windres, windres) AC_C_INLINE AC_DEFINE([_GNU_SOURCE], [], [Use GNU extensions]) -## We don't actually use config.h for the time being -#AM_CONFIG_HEADER([config.h]) - -## The following creates config.guess and a bunch of polluting stuff -## => avoid it for now -#AC_CANONICAL_HOST -#AC_MSG_CHECKING([development environment]) -#case $host in -#*-mingw*) -# AC_MSG_RESULT([MinGW]) -# AM_CFLAGS="-Wshadow" -# ;; -#*) -# AC_MSG_ERROR([unsupported development environment]) -#esac - -AC_MSG_RESULT([enabling Large File Support (for ISO images)]) -AM_CFLAGS="-D_FILE_OFFSET_BITS=64 -D_OFF_T_DEFINED -D_OFF_T_ -D_off_t=off64_t -Doff_t=off64_t" - # Clang needs an explicit WIN32_WINNT defined else it produces warnings # in msapi_utf8.h - including winver.h only doesn't work AM_CFLAGS="${AM_CFLAGS} -DWINVER=0x501 -D_WIN32_IE=0x501 -D_WIN32_WINNT=0x501" @@ -52,7 +33,7 @@ fi AC_ARG_WITH([syslinux], [AS_HELP_STRING([--with-syslinux], - [embed SysLinux support (default=yes)])], + [embed Syslinux support (default=yes)])], [], [with_freedos=yes]) if test "x$with_syslinux" != "xno" ; then @@ -60,18 +41,22 @@ if test "x$with_syslinux" != "xno" ; then EXESUFFIX="f" fi - # Debug symbols -AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug], [keep debug symbols for gdb (default=yes)]), +AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [keep debug symbols for gdb (default=yes)])], [debug_enabled=$enableval], [debug_enabled='yes']) -if test "x$debug_enabled" = "xyes" ; then +if test "x$debug_enabled" != "xno" ; then CFLAGS="-g -O2" else CFLAGS="-O2" LDFLAGS="-s" fi +AC_MSG_RESULT([enabling Large File Support (ISO support)]) +AM_CFLAGS="$AM_CFLAGS -D_FILE_OFFSET_BITS=64 -D_OFF_T_DEFINED -D_OFF_T_ -D_off_t=off64_t -Doff_t=off64_t" + # check for -Wno-pointer-sign compiler support (GCC >= 4) saved_CFLAGS="${CFLAGS}" CFLAGS="$CFLAGS -Wno-pointer-sign" @@ -96,3 +81,7 @@ AC_CONFIG_FILES([src/libcdio/iso9660/Makefile]) AC_CONFIG_FILES([src/libcdio/udf/Makefile]) AC_CONFIG_FILES([src/libcdio/driver/Makefile]) AC_OUTPUT + +AC_MSG_NOTICE([ +FreeDOS Support : $(test "x$with_freedos" != "xno" && echo enabled || echo disabled) +Syslinux Support : $(test "x$with_syslinux" != "xno" && echo enabled || echo disabled)]) diff --git a/src/rufus.c b/src/rufus.c index 1d841165..08348ee6 100644 --- a/src/rufus.c +++ b/src/rufus.c @@ -62,7 +62,7 @@ BOOL bWithFreeDOS, bWithSyslinux; static HANDLE format_thid = NULL; static HWND hDeviceTooltip = NULL, hFSTooltip = NULL, hProgress = NULL; -static HWND hDOS = NULL, hSelectISO = NULL, hISOToolTip = NULL; +static HWND hDOS = NULL, hSelectISO = NULL, hISOToolTip = NULL, hPassesToolTip = NULL; static HICON hIconDisc; static StrArray DriveID, DriveLabel; static char szTimer[12] = "00:00:00"; @@ -1061,6 +1061,7 @@ void InitDialog(HWND hDlg) IGNORE_RETVAL(ComboBox_AddStringU(hNBPasses, "3 Passes")); IGNORE_RETVAL(ComboBox_AddStringU(hNBPasses, "4 Passes")); IGNORE_RETVAL(ComboBox_SetCurSel(hNBPasses, 1)); + hPassesToolTip = CreateTooltip(hNBPasses, "Pattern: 0x55, 0xAA", -1); // Fill up the DOS type dropdown IGNORE_RETVAL(ComboBox_SetItemData(hDOSType, ComboBox_AddStringU(hDOSType, "MS-DOS"), DT_WINME)); IGNORE_RETVAL(ComboBox_SetCurSel(hDOSType, DT_WINME)); @@ -1094,7 +1095,7 @@ void InitDialog(HWND hDlg) static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { DRAWITEMSTRUCT* pDI; - int nDeviceIndex, fs, dt; + int nDeviceIndex, fs; DWORD DeviceNum; char str[MAX_PATH], tmp[128]; static UINT uDOSChecked = BST_CHECKED; @@ -1176,6 +1177,26 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA break; } break; + case IDC_NBPASSES: + switch (HIWORD(wParam)) { + case CBN_SELCHANGE: + DestroyTooltip(hPassesToolTip); + switch(ComboBox_GetCurSel(hNBPasses)) { + case 0: + hPassesToolTip = CreateTooltip(hNBPasses, "Pattern: 0x55", -1); + break; + case 1: + hPassesToolTip = CreateTooltip(hNBPasses, "Pattern: 0x55, 0xAA", -1); + break; + case 2: + hPassesToolTip = CreateTooltip(hNBPasses, "Pattern: 0x55, 0xAA, 0xFF", -1); + break; + case 3: + hPassesToolTip = CreateTooltip(hNBPasses, "Pattern: 0x55, 0xAA, 0xFF, 0x00", -1); + break; + } + } + break; case IDC_FILESYSTEM: if (HIWORD(wParam) != CBN_SELCHANGE) break; @@ -1201,7 +1222,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA } if (fs == FS_NTFS) { // Only allow ISO with NTFS for the time being - IGNORE_RETVAL(ComboBox_SetItemData(hDOSType, ComboBox_AddStringU(hDOSType, "ISO..."), DT_ISO)); + IGNORE_RETVAL(ComboBox_SetItemData(hDOSType, ComboBox_AddStringU(hDOSType, "ISO Image"), DT_ISO)); } IGNORE_RETVAL(ComboBox_SetCurSel(hDOSType, (bWithFreeDOS && (fs != FS_NTFS))?1:0)); if (!IsWindowEnabled(hDOS)) { @@ -1211,18 +1232,16 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA } // Fall through to enable/disable the ISO selection case IDC_DOSTYPE: - switch (HIWORD(wParam)) { - case CBN_SELCHANGE: - dt = (int)ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType)); - // Disable/Restore the DOS checkbox according to FS - if (dt == DT_ISO) { - ShowWindow(hSelectISO, SW_SHOW); - } else { - ShowWindow(hSelectISO, SW_HIDE); - } + if (HIWORD(wParam) != CBN_SELCHANGE) + break; + if (ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType)) != DT_ISO) { + ShowWindow(hSelectISO, SW_HIDE); break; } - break; + ShowWindow(hSelectISO, SW_SHOW); + // Fall through if no ISO is selected + if ((iso_path != NULL) || (LOWORD(wParam) == IDC_FILESYSTEM)) + break; case IDC_SELECT_ISO: DestroyTooltip(hISOToolTip); safe_free(iso_path); @@ -1256,7 +1275,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA if (ComboBox_GetItemData(hDOSType, ComboBox_GetCurSel(hDOSType)) == DT_ISO) { if (iso_path == NULL) { MessageBoxA(hMainDialog, "Please click on the disc button to select a bootable ISO,\n" - "or unselect the \"Create bootable disk...\" checkbox.", + "or uncheck the \"Create a bootable disk...\" checkbox.", "No ISO image selected...", MB_OK|MB_ICONERROR); break; } diff --git a/src/rufus.rc b/src/rufus.rc index e36a03f2..0e3b76a4 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -33,7 +33,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 206, 278 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW -CAPTION "Rufus v1.0.8.129" +CAPTION "Rufus v1.1.0.130" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,94,236,50,14 @@ -51,13 +51,13 @@ BEGIN EDITTEXT IDC_LABEL,7,131,190,13,ES_AUTOHSCROLL CONTROL "Check device for bad blocks:",IDC_BADBLOCKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,161,101,10 CONTROL "Quick Format",IDC_QUICKFORMAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,173,58,10 - CONTROL "Create a bootable disk with:",IDC_DOS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,185,101,10 + CONTROL "Create a bootable disk using:",IDC_DOS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,185,104,10 LTEXT "New volume label",IDC_STATIC,9,121,105,10 CONTROL "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,7,210,189,9 - COMBOBOX IDC_DOSTYPE,118,183,45,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_NBPASSES,118,159,45,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_DOSTYPE,119,183,49,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_NBPASSES,119,159,49,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Test",IDC_TEST,62,236,20,14,NOT WS_VISIBLE - PUSHBUTTON "...",IDC_SELECT_ISO,168,182,23,14,BS_ICON | NOT WS_VISIBLE + PUSHBUTTON "...",IDC_SELECT_ISO,171,182,22,14,BS_ICON | NOT WS_VISIBLE END IDD_ABOUTBOX DIALOGEX 0, 0, 287, 195 @@ -71,7 +71,7 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,231,175,50,14,WS_GROUP CONTROL "http://rufus.akeo.ie",IDC_ABOUT_RUFUS_URL, "SysLink",WS_TABSTOP,46,47,114,9 - LTEXT "Version 1.0.8 (Build 129)",IDC_STATIC,46,19,78,8 + LTEXT "Version 1.1.0 (Build 130)",IDC_STATIC,46,19,78,8 PUSHBUTTON "License...",IDC_ABOUT_LICENSE,46,175,50,14,WS_GROUP EDITTEXT IDC_ABOUT_COPYRIGHTS,46,107,235,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL LTEXT "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8 @@ -223,8 +223,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,8,129 - PRODUCTVERSION 1,0,8,129 + FILEVERSION 1,1,0,130 + PRODUCTVERSION 1,1,0,130 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -241,13 +241,13 @@ BEGIN BEGIN VALUE "CompanyName", "akeo.ie" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "1.0.8.129" + VALUE "FileVersion", "1.1.0.130" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "1.0.8.129" + VALUE "ProductVersion", "1.1.0.130" END END BLOCK "VarFileInfo"