Commit Graph

275 Commits

Author SHA1 Message Date
Pete Batard a34cb1194e [ui] initial work for the display of a persistence option
* This doesn't mean we'll get persistence support any time soon, but any UI work
  on this needs to be carried out *MONTHS* in advance because of the translators.
2018-07-06 00:40:52 +01:00
Pete Batard 7c142fadbc [net] improve handling of invalid signatures
* Also make bPromptOnError an actual parameter to the download function calls
* Also prefer the use of assert() to custom assertion messages
2018-06-30 22:45:15 +01:00
Pete Batard 2d262df8f3 [bb] bad blocks check improvement
* Use a default block size of 128 KB (can speed up read operations)
* Reorganise patterns to suit different types of NAND cells (SLC, MLC and TLC)
* Only run fake drive test on first pass
* Also update rufus-next to 3.2
2018-06-28 16:25:13 +01:00
Mattiwatti dbc92e3adc [core] add support for Windows XP x64 and Server 2003 x64 ISOs
* Closes #1167
2018-06-25 15:51:19 +01:00
Pete Batard 5ab67c03d6 [core] improve write retry handling
* Add a proper delay before retrying a write operation and increase retry count to 4
* Add retries when clearing boot records or when zeroing a drive
* Also improve log output from USB device reset
2018-06-13 19:23:24 +01:00
Pete Batard b274388f95 [iso] fix file extraction for GRUB/Grub4DOS based ISOs
* We were switching the global boot type variable to something other than BT_IMAGE,
  which prevented ISO extraction whenever a GRUB secondary boot record was written.
* Closes #1145
2018-06-04 12:12:24 +01:00
Pete Batard dd1bf3b998 [core] fix unable to format as FAT32 for RTL languages
* This is a "stealth" update for the 3.0 release
* The issue was that we are picking the UTF16 file system name from
  the dropdown, and where we use the "(Default)" suffixed version,
  it now has an RLE at the beginning which we must skip.
* This prevented RTL languages from being able to format a drive as FAT32...
2018-05-29 12:57:26 +01:00
Pete Batard cdacc6f342 [ui] fix whole screen refresh and progress bar issues
* Whole screen was being refreshed when calling InvalidateRect() in ResizeMoveCtrl()
* Progress bar bounding rectangle could be erased at 0.0%
* No progress was displayed when writing ISOHybrid images in DD mode
* Also fix an issue when write error would not display the error string
2018-05-08 20:28:23 +01:00
Pete Batard 7221dee4d1 [core] disable file indexing by default
* File indexing is too much of an annoyance on removable drives anyway
  and this should help with perf and access issues
* Alt-Q cheat mode is now changed to re-enable file indexing
* Also fix a rogue 'else' in the code
2018-04-19 16:02:07 +01:00
Pete Batard 7fef3c6434 [ui] use our own custom bar with text
* Needed because native Windows produces obnoxious tearing on redrawing.
* Also rename global partition scheme variable back to 'pt'
* Also fix major and minor version numbers in the .rc
2018-04-16 17:05:23 +02:00
Pete Batard 1dbbe69a4b [ui] improve partition scheme default selection
* Also rename our variable to PartitionStyle/ps for clarity
2018-03-26 19:06:55 +01:00
Pete Batard a44518355f [ui] UI redesign
* Better guide the user through the flow of operations
* Also follow a concept design by Fahad Al-Riyami
* Closes #117
2018-03-22 23:14:21 +00:00
Pete Batard 903ac993f2 [misc] remove no longer needed XP workarounds 2017-11-13 14:30:25 +00:00
Pete Batard c5f4e5a2ee [misc] drop Clang support and move VS2017 project files to .vs 2017-11-11 15:41:04 +00:00
Will Thompson 88631806da [cmp] propagate decompression errors from bled
* If, for example, you have a truncated gz-compressed file and try to
  write it to disk, bled_uncompress_with_handles() will return an error.
  Previously, this was not reported back to the user.
* Closes #1040
2017-10-13 10:48:37 +01:00
Pete Batard fe3004d17f [misc] use UTF-8 compatible _unlinkU() when deleting files 2017-08-30 11:24:47 +01:00
Pete Batard 90dc847e24 [misc] add static_strcat & static_strcpy and use static_ calls wherever possible
* Also set Rufus next to 2.17 and fix a warning
2017-08-10 19:43:52 +01:00
Pete Batard 5d371088cb [iso] add EFI boot support from 'efi.img' FAT images
* Required to support Debian Live 9.1 in ISO mode
* Note that this only works if the efi.img boot files do not require
  additional content besides the one extracted from the ISO.
2017-08-09 16:27:11 +01:00
Pete Batard eb5087d504 [togo] fix a typo in index selection and add support for nonofficial ISOs
* Closes #991
2017-08-02 18:59:45 +01:00
Pete Batard a528bb3d83 [ui] report process(es) that are preventing access on error
* Also revert loc file changes that were introduced in f53b22a077
2017-07-11 17:50:38 +01:00
Pete Batard 390c134b7a [togo] be more verbose about the files being applied 2017-06-20 14:10:22 +01:00
Pete Batard 867177c5cd [misc] expand lock cheat mode to also apply to write sharing
* Also improve log messages
2017-05-03 14:48:24 +01:00
Pete Batard 23390bf911 [core] relax the FILE_SHARE_WRITE rules during enumeration
* Should allow enumeration of drives, that other process have open
  with RW access, back again (looking at you, Paragon!!!)
2017-05-02 00:56:07 +01:00
Pete Batard 3b4b742772 [wintogo] add an error popup if we can't select the version 2017-05-02 00:38:40 +01:00
Pete Batard 7b86943266 [ui] don't report an error on chkdsk failure 2017-05-01 16:40:14 +01:00
Pete Batard 30137de7cb [iso] improve handling of image size
* Don't use the projected size where the actual image size should be used
* Also fix an issue with the projected size computation
2017-05-01 16:22:34 +01:00
Pete Batard d1927ac1ef [core] handle search improvements
* Fix memory leaks due to not releasing the heap
* Also speed up lookups by not reopening the same process twice in a row
* Also make the usb_debug variable global so we can use uuprintf everywhere
2017-04-29 17:14:16 +01:00
Pete Batard aec2736245 [togo] improve Windows To Go support for Windows 10 Creators Update
* Enable the use of GPT on REMOVABLE drives, if the host is Windows 10 CU
* Don't display the message about REMOVABLE boot, if the target is Windows 10 CU
2017-04-19 11:30:24 +01:00
Pete Batard caa9b06426 [core] work around Windows 10 CU potentially selecting the UEFI:NTFS partition for formatting
* Should only happen with Windows 10 Creator Update (1703)
* Closes #931
* Also silence the flow of bcdboot benign errors on WinToGo creation (unless USB Debug is enabled)
* Also ensure WaitForLogical() will not actually spends 15 seconds max before giving up
2017-04-11 22:15:05 +01:00
Pete Batard 477ff95f93 [core] display device paths in GetHandle()
* Also reorder bLockDrive and bWriteAccess parameters
2017-04-08 21:58:10 +01:00
Pete Batard edcfd43ed5 [misc] fix multiple VS Code Analysis warnings 2017-03-10 19:07:48 +01:00
Pete Batard 2f81e4f177 [core] avoid the use of FILE_SHARE_WRITE
* Not having FILE_SHARE_WRITE on a disk or volume handle helps
  prevent spurious accesses from the OS or other apps while we
  are repartitioning/refomatting.
2017-02-16 14:13:30 +00:00
Pete Batard c72aa7be0a [core] don't clean up partition data before writing a disk image
* This workaround seems to be needed for the upcoming Windows 10 rs2_release (see #883)
* Also some minor fixes
* Closes #883
2017-02-14 12:44:25 +00:00
Pete Batard 5170706695 [misc] fix coverity warnings 2017-01-04 18:07:58 +00:00
Pete Batard d7e977e1f1 [core] enable FAT32 for Windows install when dual UEFI+BIOS is enabled 2017-01-03 16:56:30 +00:00
Pete Batard d783573178 [syslinux] enable NTFS selection for Syslinux 6.x or later
* Tested with latest Arch, Debian and Ubuntu
2016-12-15 16:28:00 +00:00
Pete Batard f4ebe1b6c2 [togo] prompt user to select a version before formatting 2016-12-15 12:04:19 +00:00
Pete Batard 104b33a7ba [core] remove 'MBR for BIOS' option for pure UEFI images
* Closes #832
* Also refactor image property macros
2016-12-14 23:27:41 +00:00
Pete Batard 7d302d340f [togo] enable selection of Windows version
* Closes #847
* Also set rufus-next to 2.12
2016-12-13 14:26:27 +00:00
Pete Batard 5113be0a39 [iso] add dumping of ISOs from optical media (Alt-O) 2016-12-06 11:47:19 +00:00
Pete Batard aa4baab194 [core] add a workaround for >1TB HDDs that mistakenly report short writes
* It appears that 1.5TB and 2TB HDDs, accessed trough some Seagate ow WD USB ↔ SATA
  controllers, can report that 0 bytes were written on WriteFile(), even though all
  the data was effectively written. 1TB HDDs, accessed through the same controller,
  do not report this issue. So add a workaround for that.
* Also see #787
2016-09-06 18:31:30 +01:00
Pete Batard 8ca644de5a [core] fix sanitizing of exFAT labels
* Closes #818
2016-08-31 13:01:39 +01:00
Pete Batard 08566fa127 [core] add half workaround for an XP issue
* This is not a complete workaround, but it will do for
  until we drop support for XP altogether.
* Closes #810
2016-08-31 12:21:10 +01:00
Pete Batard 5d3be6ca51 [misc] add a cheat mode to disable file indexing after format
* New cheat mode is Alt-Q, and gets preserved between sessions
* Only for file systems that support it (NTFS, UDF and ReFS)
2016-08-27 18:06:06 +01:00
Pete Batard d9a928f5bc [core] fix handling of BFD drives
* A BFD (Big Floppy Disk) is a disk that isn't actually partitioned,
  but where the first data sector starts at sector 0
* Closes #814
2016-08-21 14:06:15 +02:00
Pete Batard e7578bc12d [syslinux] support ISOs that use boot.bin instead of isolinux.bin
* Such as WebConverger (webc-35.1.iso)
* Also fix non installation of Syslinux if Alt-E (dual UEFI/BIOS) is set
* Also update README and AppVeyor script
2016-08-07 18:41:47 +02:00
Pete Batard 9dd06e93bc [ui] improve Windows format prompt autoclose
* Closes #794
* Also reorder some messages (so that RUFUS_TEST comes first)
* Also update issue template
2016-07-09 16:20:58 +01:00
Pete Batard 91eec034b1 [core] try not to clear MBR/GPT sectors higher than the lowest partition
* This ensures that a drive can be reformatted without error after writing
  an image such as super_grub2_disk_x86_64_efi_2.02s4.iso
2016-07-07 18:13:01 +01:00
Pete Batard ed1b3fd72e [iso] reload label after formatting
* The Windows APIs may further modify the label compared to our proposed
  version (e.g. remove trailing spaces), and we need an exact label for
  the Syslinux/GRUB config file update.
* This issue was reported against Springdale Linux, where the isolinux.cfg
  label was patched using 'SPRINGDALE\x20' instead of 'SPRINGDALE'
* Closes #784
* Also ensure that we don't replace NULL buffers in msapi_utf8.h and add
  GetVolumeInformationU()
2016-06-26 22:24:16 +02:00
Pete Batard e76f60a3e8 [misc] use the more univerasal _mm_alloc() instead of _aligned_malloc()
* Also ensure that our buffers are aligned
* Also remove the use of static buffers in ms-sys
2016-06-10 12:42:43 +01:00
Pete Batard f1f620411c [syslinux] use SetFilePointerEx and other improvements 2016-06-06 19:39:53 +01:00
Pete Batard 39d6b90447 [misc] fixes for Clang/C2 compilation support 2016-06-04 17:13:50 +01:00
Pete Batard 790aacd49a [core] add SHA-256 validation DB for downloadable content
* Downloadable content will now be indicating, in the log, whether it can be trusted with ✓ (validated) or ✗ (caution)
* Of course this validation only applies for files we know of, i.e. the downloadable content that existed at the time the DB was
  created. So, if Syslinux 8.x gets released tomorrow and we put it on our server, you'll get an ✗ regardless of its integrity.
* Closes #758
2016-05-25 12:20:20 +01:00
Pete Batard 81673ade26 [core] clean up the RUFUS_DRIVE_INFO struct
* Remove the duplication of DISK_GEOMETRY to keep only the variables we actually use
* Also set rufus-next to 2.10
2016-05-23 12:19:43 +01:00
Pete Batard 258a4f7ca0 [core] work around a Windows bug that may render a disk inaccessible on cleanup
* The root of the issue is that Windows IOCTL_DISK_CREATE_DISK does not properly
  zero all of the MBR/GPT/PBR structure with PARTITION_STYLE_RAW (which is what
  diskpart uses to clean a disk), and leaves plenty of partition artefacts behind.
* This means that, when an image with complex partitioning has been applied, such
  as Chromium/ChromeOS, you may end up with a drive that can not be repartitioned
  or reformatted in Windows (and this is completely independent of whether Rufus
  was used to perform these operations - For instance you will get the same issue
  if you use Win32DiskImager and diskpart + clean).
* The only option left for users then is to reset/repartition their drives in Linux
  or some other OS, as Windows' VDS becomes incapacitated to handle the drive, as
  the problem persists independently of reset/re-plug/Windows platform being used.
* To work around this, we ensure that we zero the MBR/GPT/PBR sectors BEFORE calling
  IOCTL_DISK_CREATE_DISK.
* Also move zeroing of the drive before partition reset.
* Closes #759
2016-05-21 16:34:34 +01:00
Pete Batard b82462bb7d [ui] improve progress bar refresh
* Closes #699
2016-03-10 16:13:16 +00:00
Pete Batard 1cc7fca4c5 [ui] disable BIOS boot when MBR for UEFI is selected in dual UEFI/BIOS mode
* Closes #708
2016-03-07 16:15:18 +00:00
Pete Batard 71520baf31 [core] factorize the img/zero disk writing code
* Also fix a WDK warning
2016-03-04 16:34:50 +00:00
Pete Batard b9caf8b605 [core] fix computation of FAT size for Large FAT32
* Ridgecropt's GetFATSizeSectors() computation was incorrect
  and resulted in data sectors being "wasted" (unaddressable)
* See: http://www.syslinux.org/archives/2016-February/024850.html
* Also revert the minfatsize check of Syslinux, since it no longer fails.
2016-02-26 13:26:34 +00:00
Pete Batard 250d46e401 [core] use GetTickCount64() always where possible
* Damn you XP!!!
* Also some more code cleanup
2016-02-24 16:10:54 +00:00
Pete Batard c3f47ada06 [misc] add missing.h header
* Also clean up code
2016-02-20 22:52:32 +00:00
Pete Batard f88faf1a4f [usb] enable listing of non USB card readers
* Also fix the VID:PID population of USB card readers
* Also improve enumeration debugging
* Also add an unofficial cheat mode to list non USB *REMOVABLE* drives
* Closes #693
2016-02-16 20:43:30 +00:00
Pete Batard f2a539a48c [core] add and use WriteFileWithRetry() where possible 2016-01-14 17:43:02 +00:00
Pete Batard b77561bb9b [ms-sys] update ms-sys to current
* NB: This includes an updated Syslinux MBR
2016-01-07 15:49:58 +00:00
Pete Batard 549bf731a6 [ui] fix UEFI/BIOS mode never being disabled once enabled
* Closes #635
* Also fix minor logic issue and trailing whitespaces
2015-11-05 22:54:38 +00:00
Pete Batard b66401b355 [core] add a cheat mode to zero the USB device
* Alt-Z to zap!
* Also set rufus-next to 2.6
2015-11-04 13:58:19 +00:00
Pete Batard e1f8b276c8 [loc] fix various RTL issues
* MSG_002 doesn't display in RTL
* Update Policy dialog loses RTL setting after the first paragraph
* Some text displayed in native Windows message boxes is not using RTL
 (even as the Message Box itself will display the rest of the UI elements as RTL)
* Detect if the relevant language pack is installed and use MessageBoxEx to
  display native message box buttons using the selected language.
* All theses issues are part of #621
* Also remove trailing whitespaces
2015-10-18 21:37:58 +01:00
Pete Batard af53d11718 [misc] add a cheat mode to not lock the physical drive during partitioning and formatting
* In some circumstances, this *might* help with the infamous #312 issue, though
  I will still recommend to figure out which application is keeping a lock instead
  of trying to cheat...
2015-10-01 22:22:20 +01:00
Pete Batard a9b681976a [ui] enable some settings and cheat modes to be persisted
* Currently, the user settings that are persisted are:
  - Advanced mode (UI)
  - Timestamps preservation (Alt-T)
  - Proper unit Display (Alt-U)
  - USB debug (Alt.)
  - Fake drives detection (Alt-B)
  - Dual UEFI+BIOS for Windows images (Alt-E)
  - Force Large FAT32 formatting (Alt-L)
  - VMWare Disk Detection (Alt-W)
* Settings that are *NOT* persisted include:
  - UDB HDD listing (too dangerous!)
  - NTFS compression (Alt-N)
  - ISO/Joliet/Rock-Ridge (too confusing if not reset)
  - Disabling of size limits (Alt-S)
* Closes #436
2015-09-17 00:20:22 +01:00
Pete Batard ff9eae4e6d [vhd] fix broken save to VHD cheat mode
* vhd_save wasn't static, which of course created all kind of issues
  when the VHD save thread tried to use it while it was being freed...
* Closes #591
2015-09-04 14:15:22 +01:00
Pete Batard 5024e7f65e [internal] refactor iso_report -> img_report
* Also set rufus-next to 2.4
2015-09-02 23:20:00 +01:00
Pete Batard d1eccbd107 [togo] fix bcdboot errors
* Closes #558
2015-08-23 17:03:35 +01:00
Pete Batard 5004374277 [misc] update to VS2015 and fix VS code analysis issues
* Also update Bled to latest, as well as build scripts
* Note: Considering that Visual Studio 2015 is both freely and legally
  available for anyone who wants to use it to compile Rufus, starting
  with this commit, I will NOT be supporting any other version of Visual
  Studio but 2015.
2015-08-10 23:30:23 +01:00
Pete Batard 3ccae1d2e2 disable MS-DOS creation for Windows 10 or later
* Microsoft removed the diskcopy.dll that contained the MS-DOS floppy image
  Not a big loss, since we have FreeDOS... ;)
* Closes #545
* Also apply a long overdue refactoring for boot and target types
* Also update the README to add an icon
2015-07-01 21:26:41 +01:00
Pete Batard c95910e268 [misc] add MD5 and SHA-1 computation for current image
* Uses the Alt-M cheat mode for now
* Closes #475
2015-06-29 23:43:49 +01:00
Pete Batard 477674016e [core] make sure the system disk is never listed
* When using VHD or VMDK drives, it was possible for the system disk to be listed.
* Closes #541
2015-06-27 22:12:30 +01:00
Pete Batard cc6234296d [togo] don't apply the 'set internal disks offline' policy
* This creates issue due to dism incompatibilities between Windows versions
  and some users are puzzled why they don't see their internal disks.
* Also make the bcdboot call more robust by using the system one if the USB one fails
* Also fix small issues in RunCommand() and MountVolume()
2015-06-24 20:00:20 +01:00
Pete Batard 4f0e8a24a8 [vhd] add cheat mode to save the current device to VHD
* Alt-V = Save to VHD
2015-06-07 22:51:54 +01:00
Pete Batard eee9458984 v2.1 (build 649)
* Reduce log verbosity on format tasks
* Also update "lost translators" list
2015-03-23 22:18:29 +00:00
Pete Batard 7f621b9648 [core] enable the installation of a bare UEFI:NTFS in advanced mode
* Closes #468
* Also prevent drives with UEFI:NTFS from being listed as multi-partitions
* Also add a label for the UEFI:NTFS FAT partition
* Also fix internal chver script
2015-03-18 21:34:28 +00:00
Pete Batard 66edd53b2c [core] add x86_32 boot for UEFI:NTFS
* NB: This increases the compressed executable size by 25K :(
* Also set rufus-next to 2.1
2015-03-16 20:34:04 +00:00
Pete Batard 528add160f [core] fix creation of Windows 10 Preview x32 UFDs
* Rufus was detecting the ISO as needing the Windows 7 EFI workaround
  despite the presence of bootia32.efi
* Closes #462
2015-03-11 21:45:06 +00:00
Pete Batard 000f60c535 [core] improve support for multipart install.wim
* Closes #450
2015-02-26 23:47:20 +00:00
Pete Batard 785150dcb2 [core] fix "Requesting Disk Access" issue with Syslinux/NTFS
* See http://reboot.pro/topic/17902-rufus-v130-has-been-released/?p=190958
* Also fix non continuation of format operation after Syslinux has been downloaded
* Also fix missing Syslinux installation for ReactOS
2015-02-26 00:15:13 +00:00
Pete Batard d22933636c [core] fix precedence of Syslinux over Grub
* Closes #449
* Also fix Coverity builds
2015-02-25 01:45:47 +00:00
Pete Batard 1dc55596d5 [grub] update Grub4DOS to 0.4.6a
* Also fix Grub4DOS and Grub2.0 versioning issues
* Also ensures that operation gets canceled on missing download
* Also fix German translation and remove trailing whitespaces in .loc file
* Also fix inverted display status for VMWare disk detection
2015-02-16 22:29:23 +00:00
Pete Batard e4e9e87768 [misc] handle multipart install.swm Windows images
* Closes #437
2015-02-09 19:34:41 +00:00
Pete Batard 1c322aba56 [misc] drop the micro from the version
* Closes #439
2015-02-08 22:59:09 +00:00
Pete Batard b830c040d2 [misc] fix XP compatibility
* MinGW's gcc 4.9.2 seems to implement a broken "%lld" format 64 bit integer is
  followed by more variables and the app executes on XP => use PRI macros
* Also fix partition ID being ignored when using Rufus MBR
* Also fix some global vars shadowing and add other improvements
2015-01-28 23:22:11 +00:00
Pete Batard 5d8483c359 [togo] fix zeroing of MSR
* Also fix broken debug messages
2015-01-26 23:20:39 +00:00
Pete Batard fdcb17aa7a [misc] pocketful of enhancement and fixes - part 3
* Add Windows To Go tooltips
* Set UEFI:TOGO partition type to EFI System Partition
* Improve apply-image progress report
* Fix MBR analysis for 4k disks
* Do not select Rufus MBR for Windows To Go
2015-01-22 22:31:34 +00:00
Pete Batard 4b76cb2555 [togo] Add Windows To Go support - part 4
* Ignore partitions we don't care about
* Fix issues with AltMountVolume()
* Try to support 4k drives when setting up MS EFI partition
* Zero the start of the MSR partition to prevent leftover detection
* Fix unwanted use of MBR hidden sectors and redundant CloseHandle()
* Fix addon of BIOS compatibility extra partition
* Print apply image progress to info box
2015-01-20 21:54:29 +00:00
Pete Batard ed9fae7c81 [togo] Add Windows To Go support - part 2
* Enable the creation of MSR and MS EFI partition in GPT mode
* Closes #432
2015-01-20 02:56:17 +00:00
Pete Batard ec761dfb41 [core] refactor CreatePartition()
* Also add groundwork for optional creation of MSR (see #432)
* Also fix a few minor issues
2015-01-19 01:23:32 +00:00
Pete Batard 032d4413c8 [togo] Add Windows To Go support - part 2
* Closes #126
* Only supported on Windows 8 or later for now
* Also fix MinGW and WDK compilation issues
2015-01-16 01:53:24 +00:00
Pete Batard 295650a8b4 [togo] Add Windows To Go support - part 1
* Add apply support to WIM image handling
* Requires Windows 8 or later (Windows 7+ for WIM API support but Windows 8+ for ISO mount)
* Also fix an issue for Windows 7 x64 EFI mode
2015-01-15 01:45:10 +00:00
Pete Batard 3444a48fce [ui] display ToGo radio selection according to ISO content
* Also simplify EFI detection and reporting
2015-01-13 02:11:57 +00:00
Pete Batard a327bb114c [ui] Remove the separate progress dialog
* Closes #125
* Also provide more intuitive info for bad blocks check
* Also update Bled to latest to enable cancelling
2015-01-01 23:39:28 +00:00
Pete Batard e90eaa4abc [grub] add GRUB 2.0 versioning and enable external core.img download
* Closes #419
* Also updated Bled to latest
2014-12-30 19:46:13 +00:00
Pete Batard 7599715ae6 [cmp] add decompression support
* Adds .Z, .gz, .lzma, .xz and .bz2 decompression support for DD images
  using the Bled library (https://github.com/pbatard/bled).
* Closes #269
2014-12-29 20:34:41 +00:00