mirror of
https://github.com/pbatard/rufus.git
synced 2025-05-15 15:44:27 -04:00
[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
This commit is contained in:
parent
e90eaa4abc
commit
a327bb114c
20 changed files with 431 additions and 489 deletions
|
@ -126,12 +126,6 @@ t IDS_NEW_VERSION_DOWNLOAD_GRP "Download"
|
||||||
t IDC_DOWNLOAD "Download"
|
t IDC_DOWNLOAD "Download"
|
||||||
t IDCANCEL "Close"
|
t IDCANCEL "Close"
|
||||||
|
|
||||||
# Dialog that appears when scanning/extracting ISO files
|
|
||||||
g IDD_ISO_EXTRACT
|
|
||||||
t IDD_ISO_EXTRACT "Copying ISO files..."
|
|
||||||
t IDC_ISO_FILENAME "Opening ISO image - please wait..."
|
|
||||||
t IDC_ISO_ABORT "Cancel"
|
|
||||||
|
|
||||||
# Messages used throughout the application
|
# Messages used throughout the application
|
||||||
t MSG_001 "Other instance detected"
|
t MSG_001 "Other instance detected"
|
||||||
t MSG_002 "Another Rufus application is running.\n"
|
t MSG_002 "Another Rufus application is running.\n"
|
||||||
|
@ -366,6 +360,9 @@ 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_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_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_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"
|
||||||
|
|
||||||
# Status messages - these messages will appear on the status bar
|
# Status messages - these messages will appear on the status bar
|
||||||
t MSG_201 "Cancelling - Please wait..."
|
t MSG_201 "Cancelling - Please wait..."
|
||||||
|
@ -373,8 +370,8 @@ t MSG_202 "Scanning image..."
|
||||||
t MSG_203 "Failed to scan image"
|
t MSG_203 "Failed to scan image"
|
||||||
# Parameter: the name of an obsolete Syslinux .c32 module. eg: "Obsolete vesamenu.c32 detected"
|
# Parameter: the name of an obsolete Syslinux .c32 module. eg: "Obsolete vesamenu.c32 detected"
|
||||||
t MSG_204 "Obsolete %s detected"
|
t MSG_204 "Obsolete %s detected"
|
||||||
# Display the name of the ISO selected. eg: "Using ISO: en_win7_x64_sp1.iso"
|
# Display the name of the image selected. eg: "Using image: en_win7_x64_sp1.iso"
|
||||||
t MSG_205 "Using ISO: %s"
|
t MSG_205 "Using image: %s"
|
||||||
# Typically "Missing ldlinux.c32 file"
|
# Typically "Missing ldlinux.c32 file"
|
||||||
t MSG_206 "Missing %s file"
|
t MSG_206 "Missing %s file"
|
||||||
# The name proposed by Windows' Computer Management -> Disk Management when you try to format a drive
|
# The name proposed by Windows' Computer Management -> Disk Management when you try to format a drive
|
||||||
|
@ -383,9 +380,9 @@ t MSG_207 "New Volume"
|
||||||
# Same message, once for singular and plural ("1 device found", "2 devices found")
|
# Same message, once for singular and plural ("1 device found", "2 devices found")
|
||||||
t MSG_208 "%d device found"
|
t MSG_208 "%d device found"
|
||||||
t MSG_209 "%d devices found"
|
t MSG_209 "%d devices found"
|
||||||
t MSG_210 "DONE"
|
t MSG_210 "READY"
|
||||||
t MSG_211 "Cancelled"
|
t MSG_211 "Cancelled"
|
||||||
t MSG_212 "FAILED"
|
t MSG_212 "Failed"
|
||||||
# Used when a new update has been downloaded and launched
|
# Used when a new update has been downloaded and launched
|
||||||
t MSG_213 "Launching new application..."
|
t MSG_213 "Launching new application..."
|
||||||
t MSG_214 "Failed to launch new application"
|
t MSG_214 "Failed to launch new application"
|
||||||
|
@ -416,8 +413,9 @@ t MSG_232 "Win7 EFI boot setup (this may take a while)..."
|
||||||
t MSG_233 "Finalizing, please wait..."
|
t MSG_233 "Finalizing, please wait..."
|
||||||
# Takes a Syslinux version as parameter, eg. "Installing Syslinux v5.10..."
|
# Takes a Syslinux version as parameter, eg. "Installing Syslinux v5.10..."
|
||||||
t MSG_234 "Installing Syslinux %s..."
|
t MSG_234 "Installing Syslinux %s..."
|
||||||
# Bad blocks status. eg: "Bad Blocks: PASS 1/2 - 12.34% (0/0/1 errors)"
|
# Bad blocks status. eg: "Bad Blocks: Write pass 1/2 - 12.34% (0/0/1 errors)"
|
||||||
t MSG_235 "Bad Blocks: PASS %d/%d - %0.2f%% (%d/%d/%d errors)"
|
# See MSG_191/192 for "Write pass"/"Read pass" translation
|
||||||
|
t MSG_235 "Bad Blocks: %s %d/%d - %0.2f%% (%d/%d/%d errors)"
|
||||||
t MSG_236 "Bad Blocks: Testing with random pattern"
|
t MSG_236 "Bad Blocks: Testing with random pattern"
|
||||||
t MSG_237 "Bad Blocks: Testing with pattern 0x%02X"
|
t MSG_237 "Bad Blocks: Testing with pattern 0x%02X"
|
||||||
# eg. "Partitioning (MBR)..."
|
# eg. "Partitioning (MBR)..."
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
*
|
*
|
||||||
* Copyright 1995, 1996, 1997, 1998, 1999 by Theodore Ts'o
|
* Copyright 1995, 1996, 1997, 1998, 1999 by Theodore Ts'o
|
||||||
* Copyright 1999 by David Beattie
|
* Copyright 1999 by David Beattie
|
||||||
* Copyright 2011-2013 by Pete Batard
|
* Copyright 2011-2015 by Pete Batard
|
||||||
*
|
*
|
||||||
* This file is based on the minix file system programs fsck and mkfs
|
* This file is based on the minix file system programs fsck and mkfs
|
||||||
* written and copyrighted by Linus Torvalds <Linus.Torvalds@cs.helsinki.fi>
|
* written and copyrighted by Linus Torvalds <Linus.Torvalds@cs.helsinki.fi>
|
||||||
|
@ -327,13 +327,13 @@ static void print_status(void)
|
||||||
|
|
||||||
percent = calc_percent((unsigned long) currently_testing,
|
percent = calc_percent((unsigned long) currently_testing,
|
||||||
(unsigned long) num_blocks);
|
(unsigned long) num_blocks);
|
||||||
percent = (percent/2.0f) + ((cur_op==OP_READ)? 50.0f : 0.0f);
|
PrintInfo(0, MSG_235, lmprintf(MSG_191 + ((cur_op==OP_WRITE)?0:1)),
|
||||||
PrintStatus(0, FALSE, MSG_235,
|
|
||||||
cur_pattern, nr_pattern,
|
cur_pattern, nr_pattern,
|
||||||
percent,
|
percent,
|
||||||
num_read_errors,
|
num_read_errors,
|
||||||
num_write_errors,
|
num_write_errors,
|
||||||
num_corruption_errors);
|
num_corruption_errors);
|
||||||
|
percent = (percent/2.0f) + ((cur_op==OP_READ)? 50.0f : 0.0f);
|
||||||
UpdateProgress(OP_BADBLOCKS, (((cur_pattern-1)*100.0f) + percent) / nr_pattern);
|
UpdateProgress(OP_BADBLOCKS, (((cur_pattern-1)*100.0f) + percent) / nr_pattern);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,7 +359,7 @@ static void pattern_fill(unsigned char *buffer, unsigned int pattern,
|
||||||
for (ptr = buffer; ptr < buffer + n; ptr++) {
|
for (ptr = buffer; ptr < buffer + n; ptr++) {
|
||||||
(*ptr) = rand() % (1 << (8 * sizeof(char)));
|
(*ptr) = rand() % (1 << (8 * sizeof(char)));
|
||||||
}
|
}
|
||||||
PrintStatus(3500, FALSE, MSG_236);
|
PrintInfo(3500, MSG_236);
|
||||||
} else {
|
} else {
|
||||||
bpattern[0] = 0;
|
bpattern[0] = 0;
|
||||||
for (i = 0; i < sizeof(bpattern); i++) {
|
for (i = 0; i < sizeof(bpattern); i++) {
|
||||||
|
@ -376,7 +376,7 @@ static void pattern_fill(unsigned char *buffer, unsigned int pattern,
|
||||||
else
|
else
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
PrintStatus(3500, FALSE, MSG_237, bpattern[i]);
|
PrintInfo(3500, MSG_237, bpattern[i]);
|
||||||
cur_pattern++;
|
cur_pattern++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Bled (Busybox Library for Easy Decompression)
|
* Bled (Busybox Library for Easy Decompression)
|
||||||
*
|
*
|
||||||
* Copyright © 2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2014-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||||
*/
|
*/
|
||||||
|
@ -22,6 +22,7 @@ smallint bb_got_signal;
|
||||||
uint64_t bb_total_rb;
|
uint64_t bb_total_rb;
|
||||||
printf_t bled_printf = NULL;
|
printf_t bled_printf = NULL;
|
||||||
progress_t bled_progress = NULL;
|
progress_t bled_progress = NULL;
|
||||||
|
unsigned long* bled_cancel_request;
|
||||||
static bool bled_initialized = 0;
|
static bool bled_initialized = 0;
|
||||||
jmp_buf bb_error_jmp;
|
jmp_buf bb_error_jmp;
|
||||||
|
|
||||||
|
@ -124,20 +125,31 @@ int64_t bled_uncompress_with_handles(HANDLE hSrc, HANDLE hDst, int type)
|
||||||
return unpacker[type](&xstate);
|
return unpacker[type](&xstate);
|
||||||
}
|
}
|
||||||
|
|
||||||
int bled_init(printf_t print_function, progress_t progress_function)
|
/* Initialize the library.
|
||||||
|
* When the parameters are not NULL you can:
|
||||||
|
* - specify the printf-like function you want to use to output message
|
||||||
|
* void print_function(const char* format, ...);
|
||||||
|
* - specify the function you want to use to display progress, based on number of source archive bytes read
|
||||||
|
* void progress_function(const uint64_t read_bytes);
|
||||||
|
* - point to an unsigned long variable, to be used to cancel operations when set to non zero
|
||||||
|
*/
|
||||||
|
int bled_init(printf_t print_function, progress_t progress_function, unsigned long* cancel_request)
|
||||||
{
|
{
|
||||||
if (bled_initialized)
|
if (bled_initialized)
|
||||||
return -1;
|
return -1;
|
||||||
bled_initialized = true;
|
bled_initialized = true;
|
||||||
bled_printf = print_function;
|
bled_printf = print_function;
|
||||||
bled_progress = progress_function;
|
bled_progress = progress_function;
|
||||||
|
bled_cancel_request = cancel_request;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This call frees any resource used by the library */
|
||||||
void bled_exit(void)
|
void bled_exit(void)
|
||||||
{
|
{
|
||||||
bled_printf = NULL;
|
bled_printf = NULL;
|
||||||
bled_progress = NULL;
|
bled_progress = NULL;
|
||||||
|
bled_cancel_request = NULL;
|
||||||
if (global_crc32_table)
|
if (global_crc32_table)
|
||||||
free(global_crc32_table);
|
free(global_crc32_table);
|
||||||
bled_initialized = false;
|
bled_initialized = false;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Bled (Busybox Library for Easy Decompression)
|
* Bled (Busybox Library for Easy Decompression)
|
||||||
*
|
*
|
||||||
* Copyright © 2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2014-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||||
*/
|
*/
|
||||||
|
@ -12,11 +12,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifndef ARRAYSIZE
|
#ifndef ARRAYSIZE
|
||||||
#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
|
#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef void (*printf_t) (const char* format, ...);
|
typedef void (*printf_t) (const char* format, ...);
|
||||||
typedef void (*progress_t) (const uint64_t processed_bytes);
|
typedef void (*progress_t) (const uint64_t read_bytes);
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
BLED_COMPRESSION_NONE = 0,
|
BLED_COMPRESSION_NONE = 0,
|
||||||
|
@ -33,9 +33,18 @@ typedef enum {
|
||||||
/* Uncompress file 'src', compressed using 'type', to file 'dst' */
|
/* Uncompress file 'src', compressed using 'type', to file 'dst' */
|
||||||
int64_t bled_uncompress(const char* src, const char* dst, int type);
|
int64_t bled_uncompress(const char* src, const char* dst, int type);
|
||||||
|
|
||||||
|
/* Uncompress using Windows handles */
|
||||||
int64_t bled_uncompress_with_handles(HANDLE hSrc, HANDLE hDst, int type);
|
int64_t bled_uncompress_with_handles(HANDLE hSrc, HANDLE hDst, int type);
|
||||||
|
|
||||||
/* Initialize the library */
|
/* Initialize the library.
|
||||||
int bled_init(printf_t print_function, progress_t progress_function);
|
* When the parameters are not NULL you can:
|
||||||
|
* - specify the printf-like function you want to use to output message
|
||||||
|
* void print_function(const char* format, ...);
|
||||||
|
* - specify the function you want to use to display progress, based on number of source archive bytes read
|
||||||
|
* void progress_function(const uint64_t read_bytes);
|
||||||
|
* - point to an unsigned long variable, to be used to cancel operations when set to non zero
|
||||||
|
*/
|
||||||
|
int bled_init(printf_t print_function, progress_t progress_function, unsigned long* cancel_request);
|
||||||
|
|
||||||
|
/* This call frees any resource used by the library */
|
||||||
void bled_exit(void);
|
void bled_exit(void);
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* unxz implementation for busybox
|
* unxz implementation for busybox
|
||||||
*
|
*
|
||||||
* Based on xz-embedded (C) Lasse Collin <lasse.collin@tukaani.org> - Public Domain
|
* Copyright © 2014-2015 Pete Batard <pete@akeo.ie>
|
||||||
|
* Based on xz-embedded © Lasse Collin <lasse.collin@tukaani.org> - Public Domain
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||||
*/
|
*/
|
||||||
|
@ -46,9 +47,8 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_xz_stream(transformer_state_t *xstate
|
||||||
*/
|
*/
|
||||||
s = xz_dec_init(XZ_DYNALLOC, 1 << 26);
|
s = xz_dec_init(XZ_DYNALLOC, 1 << 26);
|
||||||
if (!s)
|
if (!s)
|
||||||
bb_error_msg_and_err("memory allocation failed");
|
bb_error_msg_and_err("memory allocation error");
|
||||||
|
|
||||||
// TODO: this is set very low on Windows...
|
|
||||||
in = xmalloc(BUFSIZ);
|
in = xmalloc(BUFSIZ);
|
||||||
out = xmalloc(BUFSIZ);
|
out = xmalloc(BUFSIZ);
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_xz_stream(transformer_state_t *xstate
|
||||||
if (b.in_pos == b.in_size) {
|
if (b.in_pos == b.in_size) {
|
||||||
b.in_size = safe_read(xstate->src_fd, in, BUFSIZ);
|
b.in_size = safe_read(xstate->src_fd, in, BUFSIZ);
|
||||||
if ((int)b.in_size < 0)
|
if ((int)b.in_size < 0)
|
||||||
bb_error_msg_and_err(bb_msg_read_error);
|
bb_error_msg_and_err("read error (errno: %d)", errno);
|
||||||
b.in_pos = 0;
|
b.in_pos = 0;
|
||||||
}
|
}
|
||||||
ret = xz_dec_run(s, &b);
|
ret = xz_dec_run(s, &b);
|
||||||
|
@ -72,7 +72,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_xz_stream(transformer_state_t *xstate
|
||||||
nwrote = transformer_write(xstate, b.out, b.out_pos);
|
nwrote = transformer_write(xstate, b.out, b.out_pos);
|
||||||
if (nwrote == (ssize_t)-1) {
|
if (nwrote == (ssize_t)-1) {
|
||||||
ret = XZ_DATA_ERROR;
|
ret = XZ_DATA_ERROR;
|
||||||
bb_error_msg_and_err("write error");
|
bb_error_msg_and_err("write error (errno: %d)", errno);
|
||||||
}
|
}
|
||||||
IF_DESKTOP(n += nwrote;)
|
IF_DESKTOP(n += nwrote;)
|
||||||
b.out_pos = 0;
|
b.out_pos = 0;
|
||||||
|
@ -91,7 +91,7 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_xz_stream(transformer_state_t *xstate
|
||||||
nwrote = transformer_write(xstate, b.out, b.out_pos);
|
nwrote = transformer_write(xstate, b.out, b.out_pos);
|
||||||
if (nwrote == (ssize_t)-1) {
|
if (nwrote == (ssize_t)-1) {
|
||||||
ret = XZ_DATA_ERROR;
|
ret = XZ_DATA_ERROR;
|
||||||
bb_error_msg_and_err("write error");
|
bb_error_msg_and_err("write error (errno: %d)", errno);
|
||||||
}
|
}
|
||||||
IF_DESKTOP(n += nwrote;)
|
IF_DESKTOP(n += nwrote;)
|
||||||
|
|
||||||
|
@ -101,24 +101,24 @@ IF_DESKTOP(long long) int FAST_FUNC unpack_xz_stream(transformer_state_t *xstate
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
case XZ_MEM_ERROR:
|
case XZ_MEM_ERROR:
|
||||||
bb_error_msg_and_err("memory allocation failed");
|
bb_error_msg_and_err("memory allocation error");
|
||||||
|
|
||||||
case XZ_MEMLIMIT_ERROR:
|
case XZ_MEMLIMIT_ERROR:
|
||||||
bb_error_msg_and_err("memory usage limit reached");
|
bb_error_msg_and_err("memory usage limit error");
|
||||||
|
|
||||||
case XZ_FORMAT_ERROR:
|
case XZ_FORMAT_ERROR:
|
||||||
bb_error_msg_and_err("not a .xz file");
|
bb_error_msg_and_err("not a .xz file");
|
||||||
|
|
||||||
case XZ_OPTIONS_ERROR:
|
case XZ_OPTIONS_ERROR:
|
||||||
bb_error_msg_and_err("unsupported options in the .xz headers");
|
bb_error_msg_and_err("unsupported XZ header option");
|
||||||
|
|
||||||
case XZ_DATA_ERROR:
|
case XZ_DATA_ERROR:
|
||||||
bb_error_msg_and_err("file is corrupt");
|
bb_error_msg_and_err("corrupted archive");
|
||||||
case XZ_BUF_ERROR:
|
case XZ_BUF_ERROR:
|
||||||
bb_error_msg_and_err("buf is corrupt");
|
bb_error_msg_and_err("corrupted buffer");
|
||||||
|
|
||||||
default:
|
default:
|
||||||
bb_error_msg_and_err("bug!");
|
bb_error_msg_and_err("XZ decompression bug!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* Library header for busybox
|
* Library header for busybox
|
||||||
*
|
*
|
||||||
* Rewritten for Bled (Busybox Library for Easy Decompression)
|
* Rewritten for Bled (Busybox Library for Easy Decompression)
|
||||||
* Copyright © 2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2014-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||||
*/
|
*/
|
||||||
|
@ -135,6 +135,7 @@ typedef struct _llist_t {
|
||||||
|
|
||||||
extern void (*bled_printf) (const char* format, ...);
|
extern void (*bled_printf) (const char* format, ...);
|
||||||
extern void (*bled_progress) (const uint64_t processed_bytes);
|
extern void (*bled_progress) (const uint64_t processed_bytes);
|
||||||
|
extern unsigned long* bled_cancel_request;
|
||||||
|
|
||||||
#define xfunc_die() longjmp(bb_error_jmp, 1)
|
#define xfunc_die() longjmp(bb_error_jmp, 1)
|
||||||
#define bb_printf(...) do { if (bled_printf != NULL) bled_printf(__VA_ARGS__); \
|
#define bb_printf(...) do { if (bled_printf != NULL) bled_printf(__VA_ARGS__); \
|
||||||
|
@ -171,7 +172,13 @@ static inline pid_t wait(int* status) { *status = 4; return -1; }
|
||||||
/* This override enables the display of a progress based on the number of bytes read */
|
/* This override enables the display of a progress based on the number of bytes read */
|
||||||
extern uint64_t bb_total_rb;
|
extern uint64_t bb_total_rb;
|
||||||
static inline ssize_t full_read(int fd, void *buf, size_t count) {
|
static inline ssize_t full_read(int fd, void *buf, size_t count) {
|
||||||
ssize_t rb = _read(fd, buf, count);
|
ssize_t rb;
|
||||||
|
if ((bled_cancel_request != NULL) && (*bled_cancel_request != 0)) {
|
||||||
|
errno = EINTR;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
rb = _read(fd, buf, count);
|
||||||
if (rb > 0) {
|
if (rb > 0) {
|
||||||
bb_total_rb += rb;
|
bb_total_rb += rb;
|
||||||
if (bled_progress != NULL)
|
if (bled_progress != NULL)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Drive access function calls
|
* Drive access function calls
|
||||||
* Copyright © 2011-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -915,7 +915,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
||||||
DWORD size, bufsize;
|
DWORD size, bufsize;
|
||||||
LONGLONG size_in_sectors, extra_size_in_tracks = 1;
|
LONGLONG size_in_sectors, extra_size_in_tracks = 1;
|
||||||
|
|
||||||
PrintStatus(0, TRUE, MSG_238, PartitionTypeName[partition_style]);
|
PrintInfoDebug(0, MSG_238, PartitionTypeName[partition_style]);
|
||||||
if (uefi_togo_size == 0)
|
if (uefi_togo_size == 0)
|
||||||
uefi_togo_size = GetResourceSize(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_TOGO), _RT_RCDATA, "uefi-togo.img");
|
uefi_togo_size = GetResourceSize(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_TOGO), _RT_RCDATA, "uefi-togo.img");
|
||||||
|
|
||||||
|
@ -1117,7 +1117,7 @@ BOOL DeletePartitions(HANDLE hDrive)
|
||||||
DWORD size;
|
DWORD size;
|
||||||
CREATE_DISK CreateDisk = {PARTITION_STYLE_RAW, {{0}}};
|
CREATE_DISK CreateDisk = {PARTITION_STYLE_RAW, {{0}}};
|
||||||
|
|
||||||
PrintStatus(0, TRUE, MSG_239);
|
PrintInfoDebug(0, MSG_239);
|
||||||
|
|
||||||
size = sizeof(CreateDisk);
|
size = sizeof(CreateDisk);
|
||||||
r = DeviceIoControl(hDrive, IOCTL_DISK_CREATE_DISK,
|
r = DeviceIoControl(hDrive, IOCTL_DISK_CREATE_DISK,
|
||||||
|
|
56
src/format.c
56
src/format.c
|
@ -2,7 +2,7 @@
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Formatting function calls
|
* Formatting function calls
|
||||||
* Copyright © 2007-2009 Tom Thornhill/Ridgecrop
|
* Copyright © 2007-2009 Tom Thornhill/Ridgecrop
|
||||||
* Copyright © 2011-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -107,18 +107,18 @@ static BOOLEAN __stdcall FormatExCallback(FILE_SYSTEM_CALLBACK_COMMAND Command,
|
||||||
switch(Command) {
|
switch(Command) {
|
||||||
case FCC_PROGRESS:
|
case FCC_PROGRESS:
|
||||||
percent = (DWORD*)pData;
|
percent = (DWORD*)pData;
|
||||||
PrintStatus(0, FALSE, MSG_217, 1.0f * (*percent));
|
PrintInfo(0, MSG_217, 1.0f * (*percent));
|
||||||
UpdateProgress(OP_FORMAT, 1.0f * (*percent));
|
UpdateProgress(OP_FORMAT, 1.0f * (*percent));
|
||||||
break;
|
break;
|
||||||
case FCC_STRUCTURE_PROGRESS: // No progress on quick format
|
case FCC_STRUCTURE_PROGRESS: // No progress on quick format
|
||||||
if (task_number < nb_steps[fs_index] - 1) {
|
if (task_number < nb_steps[fs_index] - 1) {
|
||||||
PrintStatus(0, TRUE, MSG_218, ++task_number, nb_steps[fs_index]);
|
PrintInfoDebug(0, MSG_218, ++task_number, nb_steps[fs_index]);
|
||||||
format_percent += 100.0f / (1.0f * nb_steps[fs_index]);
|
format_percent += 100.0f / (1.0f * nb_steps[fs_index]);
|
||||||
UpdateProgress(OP_CREATE_FS, format_percent);
|
UpdateProgress(OP_CREATE_FS, format_percent);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FCC_DONE:
|
case FCC_DONE:
|
||||||
PrintStatus(0, TRUE, MSG_218, nb_steps[fs_index], nb_steps[fs_index]);
|
PrintInfoDebug(0, MSG_218, nb_steps[fs_index], nb_steps[fs_index]);
|
||||||
UpdateProgress(OP_CREATE_FS, 100.0f);
|
UpdateProgress(OP_CREATE_FS, 100.0f);
|
||||||
if(*(BOOLEAN*)pData == FALSE) {
|
if(*(BOOLEAN*)pData == FALSE) {
|
||||||
uprintf("Error while formatting");
|
uprintf("Error while formatting");
|
||||||
|
@ -198,7 +198,7 @@ static BOOLEAN __stdcall ChkdskCallback(FILE_SYSTEM_CALLBACK_COMMAND Command, DW
|
||||||
case FCC_PROGRESS:
|
case FCC_PROGRESS:
|
||||||
case FCC_CHECKDISK_PROGRESS:
|
case FCC_CHECKDISK_PROGRESS:
|
||||||
percent = (DWORD*)pData;
|
percent = (DWORD*)pData;
|
||||||
PrintStatus(0, FALSE, MSG_219, *percent);
|
PrintInfo(0, MSG_219, *percent);
|
||||||
break;
|
break;
|
||||||
case FCC_DONE:
|
case FCC_DONE:
|
||||||
if(*(BOOLEAN*)pData == FALSE) {
|
if(*(BOOLEAN*)pData == FALSE) {
|
||||||
|
@ -414,7 +414,7 @@ static BOOL FormatFAT32(DWORD DriveIndex)
|
||||||
// Debug temp vars
|
// Debug temp vars
|
||||||
ULONGLONG FatNeeded, ClusterCount;
|
ULONGLONG FatNeeded, ClusterCount;
|
||||||
|
|
||||||
PrintStatus(0, TRUE, MSG_222, "Large FAT32");
|
PrintInfoDebug(0, MSG_222, "Large FAT32");
|
||||||
LastRefresh = 0;
|
LastRefresh = 0;
|
||||||
VolumeId = GetVolumeID();
|
VolumeId = GetVolumeID();
|
||||||
|
|
||||||
|
@ -620,7 +620,7 @@ static BOOL FormatFAT32(DWORD DriveIndex)
|
||||||
if (GetTickCount() > LastRefresh + 25) {
|
if (GetTickCount() > LastRefresh + 25) {
|
||||||
LastRefresh = GetTickCount();
|
LastRefresh = GetTickCount();
|
||||||
format_percent = (100.0f*i)/(1.0f*(SystemAreaSize+BurstSize));
|
format_percent = (100.0f*i)/(1.0f*(SystemAreaSize+BurstSize));
|
||||||
PrintStatus(0, FALSE, MSG_217, format_percent);
|
PrintInfo(0, MSG_217, format_percent);
|
||||||
UpdateProgress(OP_FORMAT, format_percent);
|
UpdateProgress(OP_FORMAT, format_percent);
|
||||||
}
|
}
|
||||||
if (IS_ERROR(FormatStatus)) goto out; // For cancellation
|
if (IS_ERROR(FormatStatus)) goto out; // For cancellation
|
||||||
|
@ -645,7 +645,7 @@ static BOOL FormatFAT32(DWORD DriveIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must do it here, as have issues when trying to write the PBR after a remount
|
// Must do it here, as have issues when trying to write the PBR after a remount
|
||||||
PrintStatus(0, TRUE, MSG_229);
|
PrintInfoDebug(0, MSG_229);
|
||||||
if (!WritePBR(hLogicalVolume)) {
|
if (!WritePBR(hLogicalVolume)) {
|
||||||
// Non fatal error, but the drive probably won't boot
|
// Non fatal error, but the drive probably won't boot
|
||||||
uprintf("Could not write partition boot record - drive may not boot...\n");
|
uprintf("Could not write partition boot record - drive may not boot...\n");
|
||||||
|
@ -654,7 +654,7 @@ static BOOL FormatFAT32(DWORD DriveIndex)
|
||||||
// Set the FAT32 volume label
|
// Set the FAT32 volume label
|
||||||
GetWindowTextW(hLabel, wLabel, ARRAYSIZE(wLabel));
|
GetWindowTextW(hLabel, wLabel, ARRAYSIZE(wLabel));
|
||||||
ToValidLabel(wLabel, TRUE);
|
ToValidLabel(wLabel, TRUE);
|
||||||
PrintStatus(0, TRUE, MSG_221);
|
PrintInfoDebug(0, MSG_221);
|
||||||
// Handle must be closed for SetVolumeLabel to work
|
// Handle must be closed for SetVolumeLabel to work
|
||||||
safe_closehandle(hLogicalVolume);
|
safe_closehandle(hLogicalVolume);
|
||||||
VolumeName = GetLogicalName(DriveIndex, TRUE, TRUE);
|
VolumeName = GetLogicalName(DriveIndex, TRUE, TRUE);
|
||||||
|
@ -705,9 +705,9 @@ static BOOL FormatDrive(DWORD DriveIndex)
|
||||||
}
|
}
|
||||||
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
||||||
if ((fs == FS_UDF) && !((dur_mins == 0) && (dur_secs == 0))) {
|
if ((fs == FS_UDF) && !((dur_mins == 0) && (dur_secs == 0))) {
|
||||||
PrintStatus(0, TRUE, MSG_220, FSType, dur_mins, dur_secs);
|
PrintInfoDebug(0, MSG_220, FSType, dur_mins, dur_secs);
|
||||||
} else {
|
} else {
|
||||||
PrintStatus(0, TRUE, MSG_222, FSType);
|
PrintInfoDebug(0, MSG_222, FSType);
|
||||||
}
|
}
|
||||||
VolumeName = GetLogicalName(DriveIndex, TRUE, TRUE);
|
VolumeName = GetLogicalName(DriveIndex, TRUE, TRUE);
|
||||||
wVolumeName = utf8_to_wchar(VolumeName);
|
wVolumeName = utf8_to_wchar(VolumeName);
|
||||||
|
@ -787,7 +787,7 @@ static BOOL CheckDisk(char DriveLetter)
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
wDriveRoot[0] = (WCHAR)DriveLetter;
|
wDriveRoot[0] = (WCHAR)DriveLetter;
|
||||||
PrintStatus(0, TRUE, MSG_223);
|
PrintInfoDebug(0, MSG_223);
|
||||||
|
|
||||||
PF_INIT_OR_OUT(Chkdsk, Fmifs);
|
PF_INIT_OR_OUT(Chkdsk, Fmifs);
|
||||||
|
|
||||||
|
@ -816,7 +816,7 @@ static BOOL ClearMBRGPT(HANDLE hPhysicalDrive, LONGLONG DiskSize, DWORD SectorSi
|
||||||
uint64_t i, last_sector = DiskSize/SectorSize;
|
uint64_t i, last_sector = DiskSize/SectorSize;
|
||||||
unsigned char* pBuf = (unsigned char*) calloc(SectorSize, 1);
|
unsigned char* pBuf = (unsigned char*) calloc(SectorSize, 1);
|
||||||
|
|
||||||
PrintStatus(0, TRUE, MSG_224);
|
PrintInfoDebug(0, MSG_224);
|
||||||
if (pBuf == NULL) {
|
if (pBuf == NULL) {
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_NOT_ENOUGH_MEMORY;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_NOT_ENOUGH_MEMORY;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -1274,7 +1274,7 @@ void update_progress(const uint64_t processed_bytes)
|
||||||
if (GetTickCount() > LastRefresh + 25) {
|
if (GetTickCount() > LastRefresh + 25) {
|
||||||
LastRefresh = GetTickCount();
|
LastRefresh = GetTickCount();
|
||||||
format_percent = (100.0f*processed_bytes)/(1.0f*iso_report.projected_size);
|
format_percent = (100.0f*processed_bytes)/(1.0f*iso_report.projected_size);
|
||||||
PrintStatus(0, FALSE, MSG_261, format_percent);
|
PrintInfo(0, MSG_261, format_percent);
|
||||||
UpdateProgress(OP_FORMAT, format_percent);
|
UpdateProgress(OP_FORMAT, format_percent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1326,7 +1326,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
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) && (IS_EFI(iso_report)) && (bt == BT_UEFI);
|
||||||
|
|
||||||
PrintStatus(0, TRUE, MSG_225);
|
PrintInfoDebug(0, MSG_225);
|
||||||
hPhysicalDrive = GetPhysicalHandle(DriveIndex, TRUE, TRUE);
|
hPhysicalDrive = GetPhysicalHandle(DriveIndex, TRUE, TRUE);
|
||||||
if (hPhysicalDrive == INVALID_HANDLE_VALUE) {
|
if (hPhysicalDrive == INVALID_HANDLE_VALUE) {
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_OPEN_FAILED;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_OPEN_FAILED;
|
||||||
|
@ -1382,7 +1382,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
}
|
}
|
||||||
CHECK_FOR_USER_CANCEL;
|
CHECK_FOR_USER_CANCEL;
|
||||||
|
|
||||||
PrintStatus(0, TRUE, MSG_226);
|
PrintInfoDebug(0, MSG_226);
|
||||||
AnalyzeMBR(hPhysicalDrive, "Drive");
|
AnalyzeMBR(hPhysicalDrive, "Drive");
|
||||||
if ((hLogicalVolume != NULL) && (hLogicalVolume != INVALID_HANDLE_VALUE)) {
|
if ((hLogicalVolume != NULL) && (hLogicalVolume != INVALID_HANDLE_VALUE)) {
|
||||||
AnalyzePBR(hLogicalVolume);
|
AnalyzePBR(hLogicalVolume);
|
||||||
|
@ -1481,7 +1481,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
|
|
||||||
if (iso_report.compression_type != BLED_COMPRESSION_NONE) {
|
if (iso_report.compression_type != BLED_COMPRESSION_NONE) {
|
||||||
uprintf("Writing Compressed Image...");
|
uprintf("Writing Compressed Image...");
|
||||||
bled_init(_uprintf, update_progress);
|
bled_init(_uprintf, update_progress, &FormatStatus);
|
||||||
bled_uncompress_with_handles(hSourceImage, hPhysicalDrive, iso_report.compression_type);
|
bled_uncompress_with_handles(hSourceImage, hPhysicalDrive, iso_report.compression_type);
|
||||||
bled_exit();
|
bled_exit();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1512,7 +1512,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
if (GetTickCount() > LastRefresh + 25) {
|
if (GetTickCount() > LastRefresh + 25) {
|
||||||
LastRefresh = GetTickCount();
|
LastRefresh = GetTickCount();
|
||||||
format_percent = (100.0f*wb)/(1.0f*iso_report.projected_size);
|
format_percent = (100.0f*wb)/(1.0f*iso_report.projected_size);
|
||||||
PrintStatus(0, FALSE, MSG_261, format_percent);
|
PrintInfo(0, MSG_261, format_percent);
|
||||||
UpdateProgress(OP_FORMAT, format_percent);
|
UpdateProgress(OP_FORMAT, format_percent);
|
||||||
}
|
}
|
||||||
// Don't overflow our projected size (mostly for VHDs)
|
// Don't overflow our projected size (mostly for VHDs)
|
||||||
|
@ -1571,7 +1571,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
|
|
||||||
// Close the (unmounted) volume before formatting
|
// Close the (unmounted) volume before formatting
|
||||||
if ((hLogicalVolume != NULL) && (hLogicalVolume != INVALID_HANDLE_VALUE)) {
|
if ((hLogicalVolume != NULL) && (hLogicalVolume != INVALID_HANDLE_VALUE)) {
|
||||||
PrintStatus(0, TRUE, MSG_227);
|
PrintInfoDebug(0, MSG_227);
|
||||||
if (!CloseHandle(hLogicalVolume)) {
|
if (!CloseHandle(hLogicalVolume)) {
|
||||||
uprintf("Could not close volume: %s\n", WindowsErrorString());
|
uprintf("Could not close volume: %s\n", WindowsErrorString());
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_ACCESS_DENIED;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_ACCESS_DENIED;
|
||||||
|
@ -1598,7 +1598,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
|
|
||||||
// Thanks to Microsoft, we must fix the MBR AFTER the drive has been formatted
|
// Thanks to Microsoft, we must fix the MBR AFTER the drive has been formatted
|
||||||
if (pt == PARTITION_STYLE_MBR) {
|
if (pt == PARTITION_STYLE_MBR) {
|
||||||
PrintStatus(0, TRUE, MSG_228); // "Writing master boot record..."
|
PrintInfoDebug(0, MSG_228); // "Writing master boot record..."
|
||||||
if ((!WriteMBR(hPhysicalDrive)) || (!WriteSBR(hPhysicalDrive))) {
|
if ((!WriteMBR(hPhysicalDrive)) || (!WriteSBR(hPhysicalDrive))) {
|
||||||
if (!IS_ERROR(FormatStatus))
|
if (!IS_ERROR(FormatStatus))
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
||||||
|
@ -1646,7 +1646,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
}
|
}
|
||||||
// NB: if you unmount the logical volume here, XP will report error:
|
// NB: if you unmount the logical volume here, XP will report error:
|
||||||
// [0x00000456] The media in the drive may have changed
|
// [0x00000456] The media in the drive may have changed
|
||||||
PrintStatus(0, TRUE, MSG_229);
|
PrintInfoDebug(0, MSG_229);
|
||||||
if (!WritePBR(hLogicalVolume)) {
|
if (!WritePBR(hLogicalVolume)) {
|
||||||
if (!IS_ERROR(FormatStatus))
|
if (!IS_ERROR(FormatStatus))
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
||||||
|
@ -1676,7 +1676,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
if (IsChecked(IDC_BOOT)) {
|
if (IsChecked(IDC_BOOT)) {
|
||||||
if ((dt == DT_WINME) || (dt == DT_FREEDOS)) {
|
if ((dt == DT_WINME) || (dt == DT_FREEDOS)) {
|
||||||
UpdateProgress(OP_DOS, -1.0f);
|
UpdateProgress(OP_DOS, -1.0f);
|
||||||
PrintStatus(0, TRUE, MSG_230);
|
PrintInfoDebug(0, MSG_230);
|
||||||
if (!ExtractDOS(drive_name)) {
|
if (!ExtractDOS(drive_name)) {
|
||||||
if (!IS_ERROR(FormatStatus))
|
if (!IS_ERROR(FormatStatus))
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANNOT_COPY;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANNOT_COPY;
|
||||||
|
@ -1691,7 +1691,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
} else if (dt == DT_ISO) {
|
} else if (dt == DT_ISO) {
|
||||||
if (image_path != NULL) {
|
if (image_path != NULL) {
|
||||||
UpdateProgress(OP_DOS, 0.0f);
|
UpdateProgress(OP_DOS, 0.0f);
|
||||||
PrintStatus(0, TRUE, MSG_231);
|
PrintInfoDebug(0, MSG_231);
|
||||||
drive_name[2] = 0;
|
drive_name[2] = 0;
|
||||||
if (!ExtractISO(image_path, drive_name, FALSE)) {
|
if (!ExtractISO(image_path, drive_name, FALSE)) {
|
||||||
if (!IS_ERROR(FormatStatus))
|
if (!IS_ERROR(FormatStatus))
|
||||||
|
@ -1707,7 +1707,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((bt == BT_UEFI) && (!iso_report.has_efi) && (iso_report.has_win7_efi)) {
|
if ((bt == BT_UEFI) && (!iso_report.has_efi) && (iso_report.has_win7_efi)) {
|
||||||
PrintStatus(0, TRUE, 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];
|
||||||
efi_dst[sizeof(efi_dst) - sizeof("\\bootx64.efi")] = 0;
|
efi_dst[sizeof(efi_dst) - sizeof("\\bootx64.efi")] = 0;
|
||||||
|
@ -1730,7 +1730,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UpdateProgress(OP_FINALIZE, -1.0f);
|
UpdateProgress(OP_FINALIZE, -1.0f);
|
||||||
PrintStatus(0, TRUE, MSG_233);
|
PrintInfoDebug(0, MSG_233);
|
||||||
if (IsChecked(IDC_SET_ICON))
|
if (IsChecked(IDC_SET_ICON))
|
||||||
SetAutorun(drive_name);
|
SetAutorun(drive_name);
|
||||||
// Issue another complete remount before we exit, to ensure we're clean
|
// Issue another complete remount before we exit, to ensure we're clean
|
||||||
|
@ -1751,7 +1751,6 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
out:
|
out:
|
||||||
safe_free(guid_volume);
|
safe_free(guid_volume);
|
||||||
safe_free(buffer);
|
safe_free(buffer);
|
||||||
SendMessage(hISOProgressDlg, UM_PROGRESS_EXIT, 0, 0);
|
|
||||||
safe_closehandle(hSourceImage);
|
safe_closehandle(hSourceImage);
|
||||||
safe_unlockclose(hLogicalVolume);
|
safe_unlockclose(hLogicalVolume);
|
||||||
safe_unlockclose(hPhysicalDrive); // This can take a while
|
safe_unlockclose(hPhysicalDrive); // This can take a while
|
||||||
|
@ -1778,7 +1777,7 @@ DWORD WINAPI SaveImageThread(void* param)
|
||||||
uint64_t wb;
|
uint64_t wb;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
PrintStatus(0, TRUE, MSG_225);
|
PrintInfoDebug(0, MSG_225);
|
||||||
LastRefresh = 0;
|
LastRefresh = 0;
|
||||||
hPhysicalDrive = GetPhysicalHandle(DriveIndex, FALSE, TRUE);
|
hPhysicalDrive = GetPhysicalHandle(DriveIndex, FALSE, TRUE);
|
||||||
if (hPhysicalDrive == INVALID_HANDLE_VALUE) {
|
if (hPhysicalDrive == INVALID_HANDLE_VALUE) {
|
||||||
|
@ -1823,7 +1822,7 @@ DWORD WINAPI SaveImageThread(void* param)
|
||||||
if (GetTickCount() > LastRefresh + 25) {
|
if (GetTickCount() > LastRefresh + 25) {
|
||||||
LastRefresh = GetTickCount();
|
LastRefresh = GetTickCount();
|
||||||
format_percent = (100.0f*wb)/(1.0f*SelectedDrive.DiskSize);
|
format_percent = (100.0f*wb)/(1.0f*SelectedDrive.DiskSize);
|
||||||
PrintStatus(0, FALSE, MSG_261, format_percent);
|
PrintInfo(0, MSG_261, format_percent);
|
||||||
UpdateProgress(OP_FORMAT, format_percent);
|
UpdateProgress(OP_FORMAT, format_percent);
|
||||||
}
|
}
|
||||||
for (i=0; i<WRITE_RETRIES; i++) {
|
for (i=0; i<WRITE_RETRIES; i++) {
|
||||||
|
@ -1861,7 +1860,6 @@ DWORD WINAPI SaveImageThread(void* param)
|
||||||
|
|
||||||
out:
|
out:
|
||||||
safe_free(buffer);
|
safe_free(buffer);
|
||||||
SendMessage(hISOProgressDlg, UM_PROGRESS_EXIT, 0, 0);
|
|
||||||
safe_closehandle(hDestImage);
|
safe_closehandle(hDestImage);
|
||||||
safe_unlockclose(hPhysicalDrive);
|
safe_unlockclose(hPhysicalDrive);
|
||||||
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, 0, 0);
|
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, 0, 0);
|
||||||
|
|
41
src/iso.c
41
src/iso.c
|
@ -1,9 +1,9 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* ISO file extraction
|
* ISO file extraction
|
||||||
* Copyright © 2011-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2015 Pete Batard <pete@akeo.ie>
|
||||||
* Based on libcdio's iso & udf samples:
|
* Based on libcdio's iso & udf samples:
|
||||||
* Copyright © 2003-2012 Rocky Bernstein <rocky@gnu.org>
|
* Copyright © 2003-2014 Rocky Bernstein <rocky@gnu.org>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -98,7 +98,7 @@ static __inline char* sanitize_filename(char* filename, BOOL* is_identical)
|
||||||
*is_identical = TRUE;
|
*is_identical = TRUE;
|
||||||
ret = safe_strdup(filename);
|
ret = safe_strdup(filename);
|
||||||
if (ret == NULL) {
|
if (ret == NULL) {
|
||||||
uprintf("Couldn't allocate string for sanitized path");
|
uprintf("Could not allocate string for sanitized path");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,7 +282,8 @@ static void print_extracted_file(char* psz_fullpath, int64_t i_file_length)
|
||||||
safe_sprintf(&psz_fullpath[nul_pos], 24, " (%s)", SizeToHumanReadable(i_file_length, TRUE, FALSE));
|
safe_sprintf(&psz_fullpath[nul_pos], 24, " (%s)", SizeToHumanReadable(i_file_length, TRUE, FALSE));
|
||||||
uprintf("Extracting: %s\n", psz_fullpath);
|
uprintf("Extracting: %s\n", psz_fullpath);
|
||||||
safe_sprintf(&psz_fullpath[nul_pos], 24, " (%s)", SizeToHumanReadable(i_file_length, FALSE, FALSE));
|
safe_sprintf(&psz_fullpath[nul_pos], 24, " (%s)", SizeToHumanReadable(i_file_length, FALSE, FALSE));
|
||||||
SetWindowTextU(hISOFileName, psz_fullpath);
|
SendMessageLU(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTW, SBT_OWNERDRAW, psz_fullpath);
|
||||||
|
PrintStatus(0, MSG_000, psz_fullpath); // MSG_000 is "%s"
|
||||||
// ISO9660 cannot handle backslashes
|
// ISO9660 cannot handle backslashes
|
||||||
for (i=0; i<nul_pos; i++)
|
for (i=0; i<nul_pos; i++)
|
||||||
if (psz_fullpath[i] == '\\') psz_fullpath[i] = '/';
|
if (psz_fullpath[i] == '\\') psz_fullpath[i] = '/';
|
||||||
|
@ -386,10 +387,8 @@ static int udf_extract_files(udf_t *p_udf, udf_dirent_t *p_udf_dirent, const cha
|
||||||
}
|
}
|
||||||
if (i >= WRITE_RETRIES) goto out;
|
if (i >= WRITE_RETRIES) goto out;
|
||||||
i_file_length -= i_read;
|
i_file_length -= i_read;
|
||||||
if (nb_blocks++ % PROGRESS_THRESHOLD == 0) {
|
if (nb_blocks++ % PROGRESS_THRESHOLD == 0)
|
||||||
SendMessage(hISOProgressBar, PBM_SETPOS, (WPARAM)((MAX_PROGRESS*nb_blocks)/total_blocks), 0);
|
|
||||||
UpdateProgress(OP_DOS, 100.0f*nb_blocks/total_blocks);
|
UpdateProgress(OP_DOS, 100.0f*nb_blocks/total_blocks);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// If you have a fast USB 3.0 device, the default Windows buffering does an
|
// If you have a fast USB 3.0 device, the default Windows buffering does an
|
||||||
// excellent job at compensating for our small blocks read/writes to max out the
|
// excellent job at compensating for our small blocks read/writes to max out the
|
||||||
|
@ -533,10 +532,8 @@ static int iso_extract_files(iso9660_t* p_iso, const char *psz_path)
|
||||||
}
|
}
|
||||||
if (j >= WRITE_RETRIES) goto out;
|
if (j >= WRITE_RETRIES) goto out;
|
||||||
i_file_length -= ISO_BLOCKSIZE;
|
i_file_length -= ISO_BLOCKSIZE;
|
||||||
if (nb_blocks++ % PROGRESS_THRESHOLD == 0) {
|
if (nb_blocks++ % PROGRESS_THRESHOLD == 0)
|
||||||
SendMessage(hISOProgressBar, PBM_SETPOS, (WPARAM)((MAX_PROGRESS*nb_blocks)/total_blocks), 0);
|
|
||||||
UpdateProgress(OP_DOS, 100.0f*nb_blocks/total_blocks);
|
UpdateProgress(OP_DOS, 100.0f*nb_blocks/total_blocks);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ISO_BLOCKING(safe_closehandle(file_handle));
|
ISO_BLOCKING(safe_closehandle(file_handle));
|
||||||
if (props.is_syslinux_cfg || props.is_grub_cfg)
|
if (props.is_syslinux_cfg || props.is_grub_cfg)
|
||||||
|
@ -583,7 +580,6 @@ BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan)
|
||||||
iso9660_t* p_iso = NULL;
|
iso9660_t* p_iso = NULL;
|
||||||
udf_t* p_udf = NULL;
|
udf_t* p_udf = NULL;
|
||||||
udf_dirent_t* p_udf_root;
|
udf_dirent_t* p_udf_root;
|
||||||
LONG progress_style;
|
|
||||||
char *tmp, *buf, *ext;
|
char *tmp, *buf, *ext;
|
||||||
char path[MAX_PATH];
|
char path[MAX_PATH];
|
||||||
const char* basedir[] = { "i386", "minint" };
|
const char* basedir[] = { "i386", "minint" };
|
||||||
|
@ -596,24 +592,20 @@ BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan)
|
||||||
scan_only = scan;
|
scan_only = scan;
|
||||||
cdio_log_set_handler(log_handler);
|
cdio_log_set_handler(log_handler);
|
||||||
psz_extract_dir = dest_dir;
|
psz_extract_dir = dest_dir;
|
||||||
progress_style = GetWindowLong(hISOProgressBar, GWL_STYLE);
|
// Change progress style to marquee for scanning
|
||||||
if (scan_only) {
|
if (scan_only) {
|
||||||
|
SendMessage(hMainDialog, UM_PROGRESS_INIT, PBS_MARQUEE, 0);
|
||||||
total_blocks = 0;
|
total_blocks = 0;
|
||||||
memset(&iso_report, 0, sizeof(iso_report));
|
memset(&iso_report, 0, sizeof(iso_report));
|
||||||
has_ldlinux_c32 = FALSE;
|
has_ldlinux_c32 = FALSE;
|
||||||
// String array of all isolinux/syslinux locations
|
// String array of all isolinux/syslinux locations
|
||||||
StrArrayCreate(&config_path, 8);
|
StrArrayCreate(&config_path, 8);
|
||||||
StrArrayCreate(&isolinux_path, 8);
|
StrArrayCreate(&isolinux_path, 8);
|
||||||
// Change the Window title and static text
|
PrintInfo(0, MSG_202);
|
||||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_202));
|
|
||||||
SetWindowTextU(hISOFileName, lmprintf(MSG_202));
|
|
||||||
// Change progress style to marquee for scanning
|
|
||||||
SetWindowLong(hISOProgressBar, GWL_STYLE, progress_style | PBS_MARQUEE);
|
|
||||||
SendMessage(hISOProgressBar, PBM_SETMARQUEE, TRUE, 0);
|
|
||||||
} else {
|
} else {
|
||||||
uprintf("Extracting files...\n");
|
uprintf("Extracting files...\n");
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_dir));
|
||||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_231));
|
PrintInfo(0, MSG_231);
|
||||||
if (total_blocks == 0) {
|
if (total_blocks == 0) {
|
||||||
uprintf("Error: ISO has not been properly scanned.\n");
|
uprintf("Error: ISO has not been properly scanned.\n");
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_ISO_SCAN);
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_ISO_SCAN);
|
||||||
|
@ -621,10 +613,7 @@ BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan)
|
||||||
}
|
}
|
||||||
nb_blocks = 0;
|
nb_blocks = 0;
|
||||||
iso_blocking_status = 0;
|
iso_blocking_status = 0;
|
||||||
SetWindowLong(hISOProgressBar, GWL_STYLE, progress_style & (~PBS_MARQUEE));
|
|
||||||
SendMessage(hISOProgressBar, PBM_SETPOS, 0, 0);
|
|
||||||
}
|
}
|
||||||
SendMessage(hISOProgressDlg, UM_PROGRESS_INIT, 0, 0);
|
|
||||||
|
|
||||||
/* First try to open as UDF - fallback to ISO if it failed */
|
/* First try to open as UDF - fallback to ISO if it failed */
|
||||||
p_udf = udf_open(src_iso);
|
p_udf = udf_open(src_iso);
|
||||||
|
@ -634,7 +623,7 @@ BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan)
|
||||||
|
|
||||||
p_udf_root = udf_get_root(p_udf, true, 0);
|
p_udf_root = udf_get_root(p_udf, true, 0);
|
||||||
if (p_udf_root == NULL) {
|
if (p_udf_root == NULL) {
|
||||||
uprintf("Couldn't locate UDF root directory\n");
|
uprintf("Could not locate UDF root directory\n");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (scan_only) {
|
if (scan_only) {
|
||||||
|
@ -785,6 +774,7 @@ out:
|
||||||
}
|
}
|
||||||
StrArrayDestroy(&config_path);
|
StrArrayDestroy(&config_path);
|
||||||
StrArrayDestroy(&isolinux_path);
|
StrArrayDestroy(&isolinux_path);
|
||||||
|
SendMessage(hMainDialog, UM_PROGRESS_EXIT, 0, 0);
|
||||||
} else if (HAS_SYSLINUX(iso_report)) {
|
} else if (HAS_SYSLINUX(iso_report)) {
|
||||||
safe_sprintf(path, sizeof(path), "%s\\syslinux.cfg", dest_dir);
|
safe_sprintf(path, sizeof(path), "%s\\syslinux.cfg", dest_dir);
|
||||||
// Create a /syslinux.cfg (if none exists) that points to the existing isolinux cfg
|
// Create a /syslinux.cfg (if none exists) that points to the existing isolinux cfg
|
||||||
|
@ -808,7 +798,6 @@ out:
|
||||||
if (fd != NULL)
|
if (fd != NULL)
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
}
|
}
|
||||||
SendMessage(hISOProgressDlg, UM_PROGRESS_EXIT, 0, 0);
|
|
||||||
if (p_iso != NULL)
|
if (p_iso != NULL)
|
||||||
iso9660_close(p_iso);
|
iso9660_close(p_iso);
|
||||||
if (p_udf != NULL)
|
if (p_udf != NULL)
|
||||||
|
@ -847,12 +836,12 @@ int64_t ExtractISOFile(const char* iso, const char* iso_file, const char* dest_f
|
||||||
|
|
||||||
p_udf_root = udf_get_root(p_udf, true, 0);
|
p_udf_root = udf_get_root(p_udf, true, 0);
|
||||||
if (p_udf_root == NULL) {
|
if (p_udf_root == NULL) {
|
||||||
uprintf("Couldn't locate UDF root directory\n");
|
uprintf("Could not locate UDF root directory\n");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
p_udf_file = udf_fopen(p_udf_root, iso_file);
|
p_udf_file = udf_fopen(p_udf_root, iso_file);
|
||||||
if (!p_udf_file) {
|
if (!p_udf_file) {
|
||||||
uprintf("Couldn't locate file %s in ISO image\n", iso_file);
|
uprintf("Could not locate file %s in ISO image\n", iso_file);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
file_length = udf_get_file_length(p_udf_file);
|
file_length = udf_get_file_length(p_udf_file);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Localization functions, a.k.a. "Everybody is doing it wrong but me!"
|
* Localization functions, a.k.a. "Everybody is doing it wrong but me!"
|
||||||
* Copyright © 2013-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2013-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -74,14 +74,14 @@ struct list_head locale_list = {NULL, NULL};
|
||||||
char *loc_filename = NULL, *embedded_loc_filename = "embedded.loc";
|
char *loc_filename = NULL, *embedded_loc_filename = "embedded.loc";
|
||||||
|
|
||||||
/* Message table */
|
/* Message table */
|
||||||
char* default_msg_table[MSG_MAX-MSG_000] = {0};
|
char* default_msg_table[MSG_MAX-MSG_000] = {"%s", 0};
|
||||||
char* current_msg_table[MSG_MAX-MSG_000] = {0};
|
char* current_msg_table[MSG_MAX-MSG_000] = {"%s", 0};
|
||||||
char** msg_table = NULL;
|
char** msg_table = NULL;
|
||||||
|
|
||||||
static void mtab_destroy(BOOL reinit)
|
static void mtab_destroy(BOOL reinit)
|
||||||
{
|
{
|
||||||
size_t j;
|
size_t j;
|
||||||
for (j=0; j<MSG_MAX-MSG_000; j++) {
|
for (j=1; j<MSG_MAX-MSG_000; j++) {
|
||||||
safe_free(current_msg_table[j]);
|
safe_free(current_msg_table[j]);
|
||||||
if (!reinit)
|
if (!reinit)
|
||||||
safe_free(default_msg_table[j]);
|
safe_free(default_msg_table[j]);
|
||||||
|
@ -402,7 +402,7 @@ char* lmprintf(int msg_id, ...)
|
||||||
*/
|
*/
|
||||||
static BOOL bStatusTimerArmed = FALSE;
|
static BOOL bStatusTimerArmed = FALSE;
|
||||||
char szStatusMessage[256] = { 0 };
|
char szStatusMessage[256] = { 0 };
|
||||||
static void CALLBACK PrintStatusTimeout(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
|
static void CALLBACK PrintStatusTimeout(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
|
||||||
{
|
{
|
||||||
bStatusTimerArmed = FALSE;
|
bStatusTimerArmed = FALSE;
|
||||||
// potentially display lower priority message that was overridden
|
// potentially display lower priority message that was overridden
|
||||||
|
@ -410,20 +410,30 @@ static void CALLBACK PrintStatusTimeout(HWND hwnd, UINT uMsg, UINT_PTR idEvent,
|
||||||
KillTimer(hMainDialog, TID_MESSAGE);
|
KillTimer(hMainDialog, TID_MESSAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintStatus(unsigned int duration, BOOL debug, int msg_id, ...)
|
static void CALLBACK PrintInfoTimeout(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
|
||||||
|
{
|
||||||
|
bStatusTimerArmed = FALSE;
|
||||||
|
SetWindowTextU(hInfo, szStatusMessage);
|
||||||
|
KillTimer(hMainDialog, TID_MESSAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintStatusInfo(BOOL info, BOOL debug, unsigned int duration, int msg_id, ...)
|
||||||
{
|
{
|
||||||
char *format = NULL, buf[sizeof(szStatusMessage)];
|
char *format = NULL, buf[sizeof(szStatusMessage)];
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
if (msg_id < 0) {
|
if (msg_id < 0) {
|
||||||
//A negative msg_id clears the status
|
// A negative msg_id clears the text area
|
||||||
szStatusMessage[0] = 0;
|
szStatusMessage[0] = 0;
|
||||||
SendMessageLU(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTW, SBT_OWNERDRAW, szStatusMessage);
|
if (info)
|
||||||
|
SetWindowTextU(hInfo, szStatusMessage);
|
||||||
|
else
|
||||||
|
SendMessageLU(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTW, SBT_OWNERDRAW, szStatusMessage);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((msg_id <= MSG_000) || (msg_id >= MSG_MAX)) {
|
if ((msg_id < MSG_000) || (msg_id >= MSG_MAX)) {
|
||||||
uprintf("PrintStatus: invalid MSG_ID\n");
|
uprintf("PrintStatusInfo: invalid MSG_ID\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -438,12 +448,15 @@ void PrintStatus(unsigned int duration, BOOL debug, int msg_id, ...)
|
||||||
va_end(args);
|
va_end(args);
|
||||||
szStatusMessage[sizeof(szStatusMessage)-1] = '\0';
|
szStatusMessage[sizeof(szStatusMessage)-1] = '\0';
|
||||||
|
|
||||||
if ((duration) || (!bStatusTimerArmed)) {
|
if ((duration != 0) || (!bStatusTimerArmed)) {
|
||||||
SendMessageLU(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTW, SBT_OWNERDRAW, szStatusMessage);
|
if (info)
|
||||||
|
SetWindowTextU(hInfo, szStatusMessage);
|
||||||
|
else
|
||||||
|
SendMessageLU(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTW, SBT_OWNERDRAW, szStatusMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (duration) {
|
if (duration != 0) {
|
||||||
SetTimer(hMainDialog, TID_MESSAGE, duration, PrintStatusTimeout);
|
SetTimer(hMainDialog, TID_MESSAGE, duration, (info)?PrintInfoTimeout:PrintStatusTimeout);
|
||||||
bStatusTimerArmed = TRUE;
|
bStatusTimerArmed = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Localization tables - autogenerated from resource.h
|
* Localization tables - autogenerated from resource.h
|
||||||
* Copyright © 2013-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2013-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -31,7 +31,6 @@ const loc_control_id control_id[] = {
|
||||||
LOC_CTRL(IDD_ABOUTBOX),
|
LOC_CTRL(IDD_ABOUTBOX),
|
||||||
LOC_CTRL(IDD_NOTIFICATION),
|
LOC_CTRL(IDD_NOTIFICATION),
|
||||||
LOC_CTRL(IDD_LICENSE),
|
LOC_CTRL(IDD_LICENSE),
|
||||||
LOC_CTRL(IDD_ISO_EXTRACT),
|
|
||||||
LOC_CTRL(IDD_LOG),
|
LOC_CTRL(IDD_LOG),
|
||||||
LOC_CTRL(IDD_UPDATE_POLICY),
|
LOC_CTRL(IDD_UPDATE_POLICY),
|
||||||
LOC_CTRL(IDD_NEW_VERSION),
|
LOC_CTRL(IDD_NEW_VERSION),
|
||||||
|
@ -53,8 +52,7 @@ const loc_control_id control_id[] = {
|
||||||
LOC_CTRL(IDC_SELECT_ISO),
|
LOC_CTRL(IDC_SELECT_ISO),
|
||||||
LOC_CTRL(IDC_SET_ICON),
|
LOC_CTRL(IDC_SET_ICON),
|
||||||
LOC_CTRL(IDC_RUFUS_MBR),
|
LOC_CTRL(IDC_RUFUS_MBR),
|
||||||
LOC_CTRL(IDC_ISO_FILENAME),
|
LOC_CTRL(IDC_INFO),
|
||||||
LOC_CTRL(IDC_ISO_ABORT),
|
|
||||||
LOC_CTRL(IDC_DISK_ID),
|
LOC_CTRL(IDC_DISK_ID),
|
||||||
LOC_CTRL(IDC_EXTRA_PARTITION),
|
LOC_CTRL(IDC_EXTRA_PARTITION),
|
||||||
LOC_CTRL(IDC_ENABLE_FIXED_DISKS),
|
LOC_CTRL(IDC_ENABLE_FIXED_DISKS),
|
||||||
|
@ -380,7 +378,6 @@ loc_dlg_list loc_dlg[] = {
|
||||||
LOC_DLG(IDD_ABOUTBOX),
|
LOC_DLG(IDD_ABOUTBOX),
|
||||||
LOC_DLG(IDD_NOTIFICATION),
|
LOC_DLG(IDD_NOTIFICATION),
|
||||||
LOC_DLG(IDD_LICENSE),
|
LOC_DLG(IDD_LICENSE),
|
||||||
LOC_DLG(IDD_ISO_EXTRACT),
|
|
||||||
LOC_DLG(IDD_LOG),
|
LOC_DLG(IDD_LOG),
|
||||||
LOC_DLG(IDD_UPDATE_POLICY),
|
LOC_DLG(IDD_UPDATE_POLICY),
|
||||||
LOC_DLG(IDD_NEW_VERSION),
|
LOC_DLG(IDD_NEW_VERSION),
|
||||||
|
|
|
@ -12,7 +12,7 @@ cat > cmd.sed <<\_EOF
|
||||||
1i /*\
|
1i /*\
|
||||||
* Rufus: The Reliable USB Formatting Utility\
|
* Rufus: The Reliable USB Formatting Utility\
|
||||||
* Localization tables - autogenerated from resource.h\
|
* Localization tables - autogenerated from resource.h\
|
||||||
* Copyright © 2013-2014 Pete Batard <pete@akeo.ie>\
|
* Copyright © 2013-2015 Pete Batard <pete@akeo.ie>\
|
||||||
*\
|
*\
|
||||||
* This program is free software: you can redistribute it and/or modify\
|
* This program is free software: you can redistribute it and/or modify\
|
||||||
* it under the terms of the GNU General Public License as published by\
|
* it under the terms of the GNU General Public License as published by\
|
||||||
|
|
16
src/net.c
16
src/net.c
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Networking functionality (web file download, check for update, etc.)
|
* Networking functionality (web file download, check for update, etc.)
|
||||||
* Copyright © 2012-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2012-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -277,7 +277,7 @@ DWORD DownloadFile(const char* url, const char* file, HWND hProgressDialog)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintStatus(0, FALSE, MSG_240, &file[last_slash]);
|
PrintInfo(0, MSG_240, &file[last_slash]);
|
||||||
uprintf("Downloading '%s' from %s\n", &file[last_slash], url);
|
uprintf("Downloading '%s' from %s\n", &file[last_slash], url);
|
||||||
|
|
||||||
if ( (!InternetCrackUrlA(url, (DWORD)safe_strlen(url), 0, &UrlParts))
|
if ( (!InternetCrackUrlA(url, (DWORD)safe_strlen(url), 0, &UrlParts))
|
||||||
|
@ -357,7 +357,7 @@ DWORD DownloadFile(const char* url, const char* file, HWND hProgressDialog)
|
||||||
break;
|
break;
|
||||||
dwSize += dwDownloaded;
|
dwSize += dwDownloaded;
|
||||||
SendMessage(hProgressBar, PBM_SETPOS, (WPARAM)(MAX_PROGRESS*((1.0f*dwSize)/(1.0f*dwTotalSize))), 0);
|
SendMessage(hProgressBar, PBM_SETPOS, (WPARAM)(MAX_PROGRESS*((1.0f*dwSize)/(1.0f*dwTotalSize))), 0);
|
||||||
PrintStatus(0, FALSE, MSG_241, (100.0f*dwSize)/(1.0f*dwTotalSize));
|
PrintInfo(0, MSG_241, (100.0f*dwSize)/(1.0f*dwTotalSize));
|
||||||
if (fwrite(buf, 1, dwDownloaded, fd) != dwDownloaded) {
|
if (fwrite(buf, 1, dwDownloaded, fd) != dwDownloaded) {
|
||||||
uprintf("Error writing file '%s': %s\n", &file[last_slash], WinInetErrorString());
|
uprintf("Error writing file '%s': %s\n", &file[last_slash], WinInetErrorString());
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -380,7 +380,7 @@ out:
|
||||||
if (!r) {
|
if (!r) {
|
||||||
_unlink(file);
|
_unlink(file);
|
||||||
if (PromptOnError) {
|
if (PromptOnError) {
|
||||||
PrintStatus(0, FALSE, MSG_242);
|
PrintInfo(0, MSG_242);
|
||||||
SetLastError(error_code);
|
SetLastError(error_code);
|
||||||
MessageBoxU(hMainDialog, IS_ERROR(FormatStatus)?StrError(FormatStatus, FALSE):WinInetErrorString(),
|
MessageBoxU(hMainDialog, IS_ERROR(FormatStatus)?StrError(FormatStatus, FALSE):WinInetErrorString(),
|
||||||
lmprintf(MSG_044), MB_OK|MB_ICONERROR|MB_IS_RTL);
|
lmprintf(MSG_044), MB_OK|MB_ICONERROR|MB_IS_RTL);
|
||||||
|
@ -475,7 +475,7 @@ static DWORD WINAPI CheckForUpdatesThread(LPVOID param)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintStatus(3000, TRUE, MSG_243);
|
PrintInfoDebug(3000, MSG_243);
|
||||||
status++; // 1
|
status++; // 1
|
||||||
|
|
||||||
if (!GetVersionExA(&os_version)) {
|
if (!GetVersionExA(&os_version)) {
|
||||||
|
@ -607,14 +607,14 @@ out:
|
||||||
if (hSession) InternetCloseHandle(hSession);
|
if (hSession) InternetCloseHandle(hSession);
|
||||||
switch(status) {
|
switch(status) {
|
||||||
case 1:
|
case 1:
|
||||||
PrintStatus(3000, TRUE, MSG_244);
|
PrintInfoDebug(3000, MSG_244);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
PrintStatus(3000, TRUE, MSG_245);
|
PrintInfoDebug(3000, MSG_245);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
PrintStatus(3000, FALSE, found_new_version?MSG_246:MSG_247);
|
PrintInfo(3000, found_new_version?MSG_246:MSG_247);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
#define IDD_ABOUTBOX 102
|
#define IDD_ABOUTBOX 102
|
||||||
#define IDD_NOTIFICATION 103
|
#define IDD_NOTIFICATION 103
|
||||||
#define IDD_LICENSE 104
|
#define IDD_LICENSE 104
|
||||||
#define IDD_ISO_EXTRACT 105
|
|
||||||
#define IDD_LOG 106
|
#define IDD_LOG 106
|
||||||
#define IDD_UPDATE_POLICY 107
|
#define IDD_UPDATE_POLICY 107
|
||||||
#define IDD_NEW_VERSION 108
|
#define IDD_NEW_VERSION 108
|
||||||
|
@ -17,7 +16,6 @@
|
||||||
#define IDD_ABOUTBOX_XP 152
|
#define IDD_ABOUTBOX_XP 152
|
||||||
#define IDD_NOTIFICATION_XP 153
|
#define IDD_NOTIFICATION_XP 153
|
||||||
#define IDD_LICENSE_XP 154
|
#define IDD_LICENSE_XP 154
|
||||||
#define IDD_ISO_EXTRACT_XP 155
|
|
||||||
#define IDD_LOG_XP 156
|
#define IDD_LOG_XP 156
|
||||||
#define IDD_UPDATE_POLICY_XP 157
|
#define IDD_UPDATE_POLICY_XP 157
|
||||||
#define IDD_NEW_VERSION_XP 158
|
#define IDD_NEW_VERSION_XP 158
|
||||||
|
@ -25,7 +23,6 @@
|
||||||
#define IDD_ABOUTBOX_RTL 202
|
#define IDD_ABOUTBOX_RTL 202
|
||||||
#define IDD_NOTIFICATION_RTL 203
|
#define IDD_NOTIFICATION_RTL 203
|
||||||
#define IDD_LICENSE_RTL 204
|
#define IDD_LICENSE_RTL 204
|
||||||
#define IDD_ISO_EXTRACT_RTL 205
|
|
||||||
#define IDD_LOG_RTL 206
|
#define IDD_LOG_RTL 206
|
||||||
#define IDD_UPDATE_POLICY_RTL 207
|
#define IDD_UPDATE_POLICY_RTL 207
|
||||||
#define IDD_NEW_VERSION_RTL 208
|
#define IDD_NEW_VERSION_RTL 208
|
||||||
|
@ -33,7 +30,6 @@
|
||||||
#define IDD_ABOUTBOX_RTL_XP 252
|
#define IDD_ABOUTBOX_RTL_XP 252
|
||||||
#define IDD_NOTIFICATION_RTL_XP 253
|
#define IDD_NOTIFICATION_RTL_XP 253
|
||||||
#define IDD_LICENSE_RTL_XP 254
|
#define IDD_LICENSE_RTL_XP 254
|
||||||
#define IDD_ISO_EXTRACT_RTL_XP 255
|
|
||||||
#define IDD_LOG_RTL_XP 256
|
#define IDD_LOG_RTL_XP 256
|
||||||
#define IDD_UPDATE_POLICY_RTL_XP 257
|
#define IDD_UPDATE_POLICY_RTL_XP 257
|
||||||
#define IDD_NEW_VERSION_RTL_XP 258
|
#define IDD_NEW_VERSION_RTL_XP 258
|
||||||
|
@ -92,8 +88,7 @@
|
||||||
#define IDC_SELECT_ISO 1016
|
#define IDC_SELECT_ISO 1016
|
||||||
#define IDC_SET_ICON 1017
|
#define IDC_SET_ICON 1017
|
||||||
#define IDC_RUFUS_MBR 1018
|
#define IDC_RUFUS_MBR 1018
|
||||||
#define IDC_ISO_FILENAME 1020
|
#define IDC_INFO 1020
|
||||||
#define IDC_ISO_ABORT 1021
|
|
||||||
#define IDC_DISK_ID 1022
|
#define IDC_DISK_ID 1022
|
||||||
#define IDC_EXTRA_PARTITION 1023
|
#define IDC_EXTRA_PARTITION 1023
|
||||||
#define IDC_ENABLE_FIXED_DISKS 1024
|
#define IDC_ENABLE_FIXED_DISKS 1024
|
||||||
|
|
453
src/rufus.c
453
src/rufus.c
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Copyright © 2011-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -124,7 +124,7 @@ float fScale = 1.0f;
|
||||||
int default_fs;
|
int default_fs;
|
||||||
uint32_t dur_mins, dur_secs;
|
uint32_t dur_mins, dur_secs;
|
||||||
HWND hDeviceList, hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog = NULL;
|
HWND hDeviceList, hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog = NULL;
|
||||||
HWND hISOProgressDlg = NULL, hLogDlg = NULL, hISOProgressBar, hISOFileName, hDiskID;
|
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 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 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 enable_HDDs = FALSE, advanced_mode = TRUE, force_update = FALSE, use_fake_units = TRUE;
|
||||||
|
@ -140,7 +140,7 @@ StrArray DriveID, DriveLabel;
|
||||||
extern char szStatusMessage[256];
|
extern char szStatusMessage[256];
|
||||||
|
|
||||||
static HANDLE format_thid = NULL;
|
static HANDLE format_thid = NULL;
|
||||||
static HWND hProgress = NULL, hBoot = NULL, hSelectISO = NULL;
|
static HWND hBoot = NULL, hSelectISO = NULL;
|
||||||
static HICON hIconDisc, hIconDown, hIconUp, hIconLang;
|
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;
|
||||||
|
@ -887,65 +887,6 @@ static void CALLBACK BlockingTimer(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Callback for the modeless ISO extraction progress, and other progress dialogs */
|
|
||||||
BOOL CALLBACK ISOProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
switch (message) {
|
|
||||||
case WM_SHOWWINDOW:
|
|
||||||
// If we don't do this, the ISO progress dialog will remain visible
|
|
||||||
// if it was active while the app was minimized
|
|
||||||
if (wParam && (lParam == SW_PARENTOPENING) && (!iso_op_in_progress)) {
|
|
||||||
ShowWindow(hDlg, SW_HIDE);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
case WM_INITDIALOG:
|
|
||||||
apply_localization(IDD_ISO_EXTRACT, hDlg);
|
|
||||||
hISOProgressBar = GetDlgItem(hDlg, IDC_PROGRESS);
|
|
||||||
hISOFileName = GetDlgItem(hDlg, IDC_ISO_FILENAME);
|
|
||||||
// Use maximum granularity for the progress bar
|
|
||||||
SendMessage(hISOProgressBar, PBM_SETRANGE, 0, (MAX_PROGRESS<<16) & 0xFFFF0000);
|
|
||||||
return TRUE;
|
|
||||||
case UM_PROGRESS_INIT:
|
|
||||||
iso_op_in_progress = TRUE;
|
|
||||||
EnableWindow(GetDlgItem(hISOProgressDlg, IDC_ISO_ABORT), TRUE);
|
|
||||||
CenterDialog(hDlg);
|
|
||||||
// If we try to show the progress dialog while the app is minimized, users won't
|
|
||||||
// be able to restore the app, so we only show it if it isn't. But this workaround
|
|
||||||
// means that the progress dialog will never display for users who had the app
|
|
||||||
// minimized when ISO extraction started, which we don't really care about, since
|
|
||||||
// we're planning to remove the whole separate progress dialog soon anyway.
|
|
||||||
if (!IsIconic(hMainDialog))
|
|
||||||
ShowWindow(hDlg, SW_SHOW);
|
|
||||||
UpdateWindow(hDlg);
|
|
||||||
return TRUE;
|
|
||||||
case UM_PROGRESS_EXIT:
|
|
||||||
// Just hide and recenter the dialog
|
|
||||||
ShowWindow(hDlg, SW_HIDE);
|
|
||||||
iso_op_in_progress = FALSE;
|
|
||||||
return TRUE;
|
|
||||||
case WM_COMMAND:
|
|
||||||
switch (LOWORD(wParam)) {
|
|
||||||
case IDC_ISO_ABORT:
|
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED;
|
|
||||||
PrintStatus(0, FALSE, MSG_201);
|
|
||||||
uprintf("Cancelling (from ISO proc.)\n");
|
|
||||||
EnableWindow(GetDlgItem(hISOProgressDlg, IDC_ISO_ABORT), FALSE);
|
|
||||||
if (format_thid != NULL)
|
|
||||||
EnableWindow(GetDlgItem(hMainDialog, IDCANCEL), FALSE);
|
|
||||||
// Start a timer to detect blocking operations during ISO file extraction
|
|
||||||
if (iso_blocking_status >= 0) {
|
|
||||||
last_iso_blocking_status = iso_blocking_status;
|
|
||||||
SetTimer(hMainDialog, TID_BLOCKING_TIMER, 5000, BlockingTimer);
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
case WM_CLOSE: // prevent closure using Alt-F4
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Report the features of the selected ISO images
|
// Report the features of the selected ISO images
|
||||||
static const char* YesNo(BOOL b) {
|
static const char* YesNo(BOOL b) {
|
||||||
return (b) ? "Yes" : "No";
|
return (b) ? "Yes" : "No";
|
||||||
|
@ -988,14 +929,15 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
||||||
|
|
||||||
if (image_path == NULL)
|
if (image_path == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
PrintStatus(0, TRUE, MSG_202);
|
PrintInfoDebug(0, MSG_202);
|
||||||
user_notified = FALSE;
|
user_notified = FALSE;
|
||||||
EnableControls(FALSE);
|
EnableControls(FALSE);
|
||||||
r = ExtractISO(image_path, "", TRUE) || IsHDImage(image_path);
|
r = ExtractISO(image_path, "", TRUE) || IsHDImage(image_path);
|
||||||
EnableControls(TRUE);
|
EnableControls(TRUE);
|
||||||
if (!r) {
|
if (!r) {
|
||||||
SendMessage(hISOProgressDlg, UM_PROGRESS_EXIT, 0, 0);
|
// TODO: is that needed?
|
||||||
PrintStatus(0, TRUE, MSG_203);
|
SendMessage(hMainDialog, UM_PROGRESS_EXIT, 0, 0);
|
||||||
|
PrintInfoDebug(0, MSG_203);
|
||||||
safe_free(image_path);
|
safe_free(image_path);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -1008,10 +950,10 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
||||||
}
|
}
|
||||||
if ( (!iso_report.has_bootmgr) && (!HAS_SYSLINUX(iso_report)) && (!IS_WINPE(iso_report.winpe)) && (!IS_GRUB(iso_report))
|
if ( (!iso_report.has_bootmgr) && (!HAS_SYSLINUX(iso_report)) && (!IS_WINPE(iso_report.winpe)) && (!IS_GRUB(iso_report))
|
||||||
&& (!iso_report.has_efi) && (!IS_REACTOS(iso_report) && (!iso_report.has_kolibrios) && (!iso_report.is_bootable_img)) ) {
|
&& (!iso_report.has_efi) && (!IS_REACTOS(iso_report) && (!iso_report.has_kolibrios) && (!iso_report.is_bootable_img)) ) {
|
||||||
|
PrintInfo(0, MSG_081);
|
||||||
MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL);
|
MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL);
|
||||||
safe_free(image_path);
|
safe_free(image_path);
|
||||||
SetMBRProps();
|
SetMBRProps();
|
||||||
PrintStatus(0, FALSE, -1);
|
|
||||||
} else {
|
} else {
|
||||||
// Enable bootable and set Target System and FS accordingly
|
// Enable bootable and set Target System and FS accordingly
|
||||||
CheckDlgButton(hMainDialog, IDC_BOOT, BST_CHECKED);
|
CheckDlgButton(hMainDialog, IDC_BOOT, BST_CHECKED);
|
||||||
|
@ -1029,7 +971,7 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
||||||
ComboBox_GetCurSel(hFileSystem));
|
ComboBox_GetCurSel(hFileSystem));
|
||||||
}
|
}
|
||||||
for (i=(int)safe_strlen(image_path); (i>0)&&(image_path[i]!='\\'); i--);
|
for (i=(int)safe_strlen(image_path); (i>0)&&(image_path[i]!='\\'); i--);
|
||||||
PrintStatus(0, TRUE, MSG_205, &image_path[i+1]);
|
PrintStatusDebug(0, MSG_205, &image_path[i+1]);
|
||||||
// Lose the focus on the select ISO (but place it on Close)
|
// Lose the focus on the select ISO (but place it on Close)
|
||||||
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)FALSE, 0);
|
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)FALSE, 0);
|
||||||
// Lose the focus from Close and set it back to Start
|
// Lose the focus from Close and set it back to Start
|
||||||
|
@ -1037,7 +979,7 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
SendMessage(hISOProgressDlg, UM_PROGRESS_EXIT, 0, 0);
|
PrintInfo(0, MSG_210);
|
||||||
ExitThread(0);
|
ExitThread(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1074,6 +1016,7 @@ void ToggleAdvanced(void)
|
||||||
// Move the status bar up or down
|
// Move the status bar up or down
|
||||||
MoveCtrlY(hMainDialog, IDC_STATUS, dialog_shift);
|
MoveCtrlY(hMainDialog, IDC_STATUS, dialog_shift);
|
||||||
MoveCtrlY(hMainDialog, IDC_START, dialog_shift);
|
MoveCtrlY(hMainDialog, IDC_START, dialog_shift);
|
||||||
|
MoveCtrlY(hMainDialog, IDC_INFO, dialog_shift);
|
||||||
MoveCtrlY(hMainDialog, IDC_PROGRESS, dialog_shift);
|
MoveCtrlY(hMainDialog, IDC_PROGRESS, dialog_shift);
|
||||||
MoveCtrlY(hMainDialog, IDC_ABOUT, dialog_shift);
|
MoveCtrlY(hMainDialog, IDC_ABOUT, dialog_shift);
|
||||||
MoveCtrlY(hMainDialog, IDC_LOG, dialog_shift);
|
MoveCtrlY(hMainDialog, IDC_LOG, dialog_shift);
|
||||||
|
@ -1226,10 +1169,9 @@ static BOOL BootCheck(void)
|
||||||
static_sprintf(tmp, "%s-%s", grub, iso_report.grub2_version);
|
static_sprintf(tmp, "%s-%s", grub, iso_report.grub2_version);
|
||||||
IGNORE_RETVAL(_mkdir(tmp));
|
IGNORE_RETVAL(_mkdir(tmp));
|
||||||
static_sprintf(tmp, "%s/%s-%s/%s", FILES_URL, grub, iso_report.grub2_version, core_img);
|
static_sprintf(tmp, "%s/%s-%s/%s", FILES_URL, grub, iso_report.grub2_version, core_img);
|
||||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, tmp));
|
PrintInfoDebug(0, MSG_085, tmp);
|
||||||
SetWindowTextU(hISOFileName, tmp);
|
|
||||||
PromptOnError = FALSE;
|
PromptOnError = FALSE;
|
||||||
grub2_len = (long)DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hISOProgressDlg);
|
grub2_len = (long)DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hMainDialog);
|
||||||
PromptOnError = TRUE;
|
PromptOnError = TRUE;
|
||||||
if (grub2_len <= 0)
|
if (grub2_len <= 0)
|
||||||
uprintf("%s was not found - will use embedded version\n", tmp);
|
uprintf("%s was not found - will use embedded version\n", tmp);
|
||||||
|
@ -1265,17 +1207,16 @@ static BOOL BootCheck(void)
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
use_own_c32[i] = TRUE;
|
use_own_c32[i] = TRUE;
|
||||||
} else {
|
} else {
|
||||||
PrintStatus(0, FALSE, MSG_204, old_c32_name[i]);
|
PrintInfo(0, MSG_204, old_c32_name[i]);
|
||||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_084, old_c32_name[i], old_c32_name[i]),
|
if (MessageBoxU(hMainDialog, lmprintf(MSG_084, old_c32_name[i], old_c32_name[i]),
|
||||||
lmprintf(MSG_083, old_c32_name[i]), MB_YESNO|MB_ICONWARNING|MB_IS_RTL) == IDYES) {
|
lmprintf(MSG_083, old_c32_name[i]), MB_YESNO|MB_ICONWARNING|MB_IS_RTL) == IDYES) {
|
||||||
static_sprintf(tmp, "%s-%s", syslinux, embedded_sl_version_str[0]);
|
static_sprintf(tmp, "%s-%s", syslinux, embedded_sl_version_str[0]);
|
||||||
IGNORE_RETVAL(_mkdir(tmp));
|
IGNORE_RETVAL(_mkdir(tmp));
|
||||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, old_c32_name[i]));
|
|
||||||
static_sprintf(tmp, "%s/%s-%s/%s", FILES_URL, syslinux, embedded_sl_version_str[0], old_c32_name[i]);
|
static_sprintf(tmp, "%s/%s-%s/%s", FILES_URL, syslinux, embedded_sl_version_str[0], old_c32_name[i]);
|
||||||
SetWindowTextU(hISOFileName, tmp);
|
PrintInfo(0, MSG_085, old_c32_name[i]);
|
||||||
len = DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hISOProgressDlg);
|
len = DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hMainDialog);
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
uprintf("Couldn't download the files - cancelling\n");
|
uprintf("Could not download file - cancelling\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
use_own_c32[i] = TRUE;
|
use_own_c32[i] = TRUE;
|
||||||
|
@ -1318,21 +1259,19 @@ static BOOL BootCheck(void)
|
||||||
IGNORE_RETVAL(_mkdir(&iso_report.sl_version_ext[1]));
|
IGNORE_RETVAL(_mkdir(&iso_report.sl_version_ext[1]));
|
||||||
IGNORE_RETVAL(_chdir(".."));
|
IGNORE_RETVAL(_chdir(".."));
|
||||||
}
|
}
|
||||||
static_sprintf(tmp, "%s.%s %s", ldlinux, ldlinux_ext[i], iso_report.sl_version_str);
|
|
||||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, tmp));
|
|
||||||
static_sprintf(tmp, "%s/%s-%s%s/%s.%s", FILES_URL, syslinux, iso_report.sl_version_str,
|
static_sprintf(tmp, "%s/%s-%s%s/%s.%s", FILES_URL, syslinux, iso_report.sl_version_str,
|
||||||
iso_report.sl_version_ext, ldlinux, ldlinux_ext[i]);
|
iso_report.sl_version_ext, ldlinux, ldlinux_ext[i]);
|
||||||
SetWindowTextU(hISOFileName, tmp);
|
PrintInfo(0, MSG_085, tmp);
|
||||||
PromptOnError = (*iso_report.sl_version_ext == 0);
|
PromptOnError = (*iso_report.sl_version_ext == 0);
|
||||||
syslinux_ldlinux_len[i] = DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hISOProgressDlg);
|
syslinux_ldlinux_len[i] = DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hMainDialog);
|
||||||
PromptOnError = TRUE;
|
PromptOnError = TRUE;
|
||||||
if ((syslinux_ldlinux_len[i] == 0) && (DownloadStatus == 404) && (*iso_report.sl_version_ext != 0)) {
|
if ((syslinux_ldlinux_len[i] == 0) && (DownloadStatus == 404) && (*iso_report.sl_version_ext != 0)) {
|
||||||
// Couldn't locate the file on the server => try to download without the version extra
|
// Couldn't locate the file on the server => try to download without the version extra
|
||||||
uprintf("Extended version was not found, trying main version\n");
|
uprintf("Extended version was not found, trying main version\n");
|
||||||
static_sprintf(tmp, "%s/%s-%s/%s.%s", FILES_URL, syslinux, iso_report.sl_version_str,
|
static_sprintf(tmp, "%s/%s-%s/%s.%s", FILES_URL, syslinux, iso_report.sl_version_str,
|
||||||
ldlinux, ldlinux_ext[i]);
|
ldlinux, ldlinux_ext[i]);
|
||||||
SetWindowTextU(hISOFileName, tmp);
|
PrintInfo(0, MSG_085, tmp);
|
||||||
syslinux_ldlinux_len[i] = DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hISOProgressDlg);
|
syslinux_ldlinux_len[i] = DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hMainDialog);
|
||||||
if (syslinux_ldlinux_len[i] != 0) {
|
if (syslinux_ldlinux_len[i] != 0) {
|
||||||
// Duplicate the file so that the user won't be prompted to download again
|
// Duplicate the file so that the user won't be prompted to download again
|
||||||
static_sprintf(tmp, "%s-%s\\%s.%s", syslinux, iso_report.sl_version_str, ldlinux, ldlinux_ext[i]);
|
static_sprintf(tmp, "%s-%s\\%s.%s", syslinux, iso_report.sl_version_str, ldlinux, ldlinux_ext[i]);
|
||||||
|
@ -1342,7 +1281,7 @@ static BOOL BootCheck(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (syslinux_ldlinux_len[i] == 0) {
|
if (syslinux_ldlinux_len[i] == 0) {
|
||||||
uprintf("Couldn't download the files - cancelling\n");
|
uprintf("Could not download the file - cancelling\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1360,7 +1299,7 @@ static BOOL BootCheck(void)
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
} else {
|
} else {
|
||||||
static_sprintf(tmp, "%s.%s", ldlinux, ldlinux_ext[2]);
|
static_sprintf(tmp, "%s.%s", ldlinux, ldlinux_ext[2]);
|
||||||
PrintStatus(0, FALSE, MSG_206, tmp);
|
PrintInfo(0, MSG_206, tmp);
|
||||||
// MSG_104: "Syslinux v5.0 or later requires a '%s' file to be installed"
|
// MSG_104: "Syslinux v5.0 or later requires a '%s' file to be installed"
|
||||||
r = MessageBoxU(hMainDialog, lmprintf(MSG_104, "Syslinux v5.0", tmp, "Syslinux v5+", tmp),
|
r = MessageBoxU(hMainDialog, lmprintf(MSG_104, "Syslinux v5.0", tmp, "Syslinux v5+", tmp),
|
||||||
lmprintf(MSG_103, tmp), MB_YESNOCANCEL|MB_ICONWARNING|MB_IS_RTL);
|
lmprintf(MSG_103, tmp), MB_YESNOCANCEL|MB_ICONWARNING|MB_IS_RTL);
|
||||||
|
@ -1370,9 +1309,8 @@ static BOOL BootCheck(void)
|
||||||
static_sprintf(tmp, "%s-%s", syslinux, embedded_sl_version_str[1]);
|
static_sprintf(tmp, "%s-%s", syslinux, embedded_sl_version_str[1]);
|
||||||
IGNORE_RETVAL(_mkdir(tmp));
|
IGNORE_RETVAL(_mkdir(tmp));
|
||||||
static_sprintf(tmp, "%s/%s-%s/%s.%s", FILES_URL, syslinux, embedded_sl_version_str[1], ldlinux, ldlinux_ext[2]);
|
static_sprintf(tmp, "%s/%s-%s/%s.%s", FILES_URL, syslinux, embedded_sl_version_str[1], ldlinux, ldlinux_ext[2]);
|
||||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, tmp));
|
PrintInfo(0, MSG_085, tmp);
|
||||||
SetWindowTextU(hISOFileName, tmp);
|
DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hMainDialog);
|
||||||
DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hISOProgressDlg);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (dt == DT_WINME) {
|
} else if (dt == DT_WINME) {
|
||||||
|
@ -1392,7 +1330,7 @@ static BOOL BootCheck(void)
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
} else {
|
} else {
|
||||||
static_sprintf(tmp, "grldr");
|
static_sprintf(tmp, "grldr");
|
||||||
PrintStatus(0, FALSE, MSG_206, tmp);
|
PrintInfo(0, MSG_206, tmp);
|
||||||
r = MessageBoxU(hMainDialog, lmprintf(MSG_104, "Grub4DOS 0.4", tmp, "Grub4DOS", tmp),
|
r = MessageBoxU(hMainDialog, lmprintf(MSG_104, "Grub4DOS 0.4", tmp, "Grub4DOS", tmp),
|
||||||
lmprintf(MSG_103, tmp), MB_YESNOCANCEL|MB_ICONWARNING|MB_IS_RTL);
|
lmprintf(MSG_103, tmp), MB_YESNOCANCEL|MB_ICONWARNING|MB_IS_RTL);
|
||||||
if (r == IDCANCEL)
|
if (r == IDCANCEL)
|
||||||
|
@ -1400,9 +1338,8 @@ static BOOL BootCheck(void)
|
||||||
if (r == IDYES) {
|
if (r == IDYES) {
|
||||||
IGNORE_RETVAL(_mkdir("grub4dos"));
|
IGNORE_RETVAL(_mkdir("grub4dos"));
|
||||||
static_sprintf(tmp, "%s/grub4dos/grldr", FILES_URL);
|
static_sprintf(tmp, "%s/grub4dos/grldr", FILES_URL);
|
||||||
SetWindowTextU(hISOProgressDlg, lmprintf(MSG_085, tmp));
|
PrintInfo(0, MSG_085, tmp);
|
||||||
SetWindowTextU(hISOFileName, tmp);
|
DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hMainDialog);
|
||||||
DownloadFile(tmp, &tmp[sizeof(FILES_URL)], hISOProgressDlg);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1423,11 +1360,12 @@ static __inline const char* IsAlphaOrBeta(void)
|
||||||
void InitDialog(HWND hDlg)
|
void InitDialog(HWND hDlg)
|
||||||
{
|
{
|
||||||
HINSTANCE hDllInst;
|
HINSTANCE hDllInst;
|
||||||
|
HFONT hf;
|
||||||
DWORD len;
|
DWORD len;
|
||||||
SIZE sz;
|
SIZE sz;
|
||||||
HWND hCtrl;
|
HWND hCtrl;
|
||||||
HDC hDC;
|
HDC hDC;
|
||||||
int i, i16, s16;
|
int i, i16, s16, lfHeight;
|
||||||
char tmp[128], *token, *buf, *ext;
|
char tmp[128], *token, *buf, *ext;
|
||||||
wchar_t wtmp[128] = {0};
|
wchar_t wtmp[128] = {0};
|
||||||
static char* resource[2] = { MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V6_SYS) };
|
static char* resource[2] = { MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V6_SYS) };
|
||||||
|
@ -1444,6 +1382,7 @@ void InitDialog(HWND hDlg)
|
||||||
hClusterSize = GetDlgItem(hDlg, IDC_CLUSTERSIZE);
|
hClusterSize = GetDlgItem(hDlg, IDC_CLUSTERSIZE);
|
||||||
hLabel = GetDlgItem(hDlg, IDC_LABEL);
|
hLabel = GetDlgItem(hDlg, IDC_LABEL);
|
||||||
hProgress = GetDlgItem(hDlg, IDC_PROGRESS);
|
hProgress = GetDlgItem(hDlg, IDC_PROGRESS);
|
||||||
|
hInfo = GetDlgItem(hDlg, IDC_INFO);
|
||||||
hBoot = GetDlgItem(hDlg, IDC_BOOT);
|
hBoot = GetDlgItem(hDlg, IDC_BOOT);
|
||||||
hBootType = GetDlgItem(hDlg, IDC_BOOTTYPE);
|
hBootType = GetDlgItem(hDlg, IDC_BOOTTYPE);
|
||||||
hSelectISO = GetDlgItem(hDlg, IDC_SELECT_ISO);
|
hSelectISO = GetDlgItem(hDlg, IDC_SELECT_ISO);
|
||||||
|
@ -1454,6 +1393,7 @@ void InitDialog(HWND hDlg)
|
||||||
i16 = GetSystemMetrics(SM_CXSMICON);
|
i16 = GetSystemMetrics(SM_CXSMICON);
|
||||||
hDC = GetDC(hDlg);
|
hDC = GetDC(hDlg);
|
||||||
fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f;
|
fScale = GetDeviceCaps(hDC, LOGPIXELSX) / 96.0f;
|
||||||
|
lfHeight = -MulDiv(8, GetDeviceCaps(hDC, LOGPIXELSY), 72);
|
||||||
ReleaseDC(hDlg, hDC);
|
ReleaseDC(hDlg, hDC);
|
||||||
// Adjust icon size lookup
|
// Adjust icon size lookup
|
||||||
s16 = i16;
|
s16 = i16;
|
||||||
|
@ -1466,6 +1406,15 @@ void InitDialog(HWND hDlg)
|
||||||
else if (s16 >= 20)
|
else if (s16 >= 20)
|
||||||
s16 = 24;
|
s16 = 24;
|
||||||
|
|
||||||
|
// Change the font of the Info edit box
|
||||||
|
#if defined(COLOURED_INFO)
|
||||||
|
hf = CreateFontA(lfHeight, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE,
|
||||||
|
#else
|
||||||
|
hf = CreateFontA(lfHeight, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
|
||||||
|
#endif
|
||||||
|
DEFAULT_CHARSET, 0, 0, PROOF_QUALITY, 0, "Arial Unicode MS");
|
||||||
|
SendDlgItemMessageA(hDlg, IDC_INFO, WM_SETFONT, (WPARAM)hf, TRUE);
|
||||||
|
|
||||||
// Create the title bar icon
|
// Create the title bar icon
|
||||||
SetTitleBarIcon(hDlg);
|
SetTitleBarIcon(hDlg);
|
||||||
GetWindowTextA(hDlg, tmp, sizeof(tmp));
|
GetWindowTextA(hDlg, tmp, sizeof(tmp));
|
||||||
|
@ -1617,11 +1566,13 @@ void InitDialog(HWND hDlg)
|
||||||
// Simulate a button click for ISO selection
|
// Simulate a button click for ISO selection
|
||||||
PostMessage(hDlg, WM_COMMAND, IDC_SELECT_ISO, 0);
|
PostMessage(hDlg, WM_COMMAND, IDC_SELECT_ISO, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PrintInfo(0, MSG_210);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PrintStatus2000(const char* str, BOOL val)
|
static void PrintStatus2000(const char* str, BOOL val)
|
||||||
{
|
{
|
||||||
PrintStatus(2000, FALSE, (val)?MSG_250:MSG_251, str);
|
PrintStatus(2000, (val)?MSG_250:MSG_251, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowLanguageMenu(HWND hDlg)
|
void ShowLanguageMenu(HWND hDlg)
|
||||||
|
@ -1701,19 +1652,19 @@ void SetBoot(int fs, int bt)
|
||||||
/*
|
/*
|
||||||
* Main dialog callback
|
* Main dialog callback
|
||||||
*/
|
*/
|
||||||
extern int uncompress(const char* src, const char* dst, int type);
|
|
||||||
static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
DRAWITEMSTRUCT* pDI;
|
|
||||||
POINT Point;
|
|
||||||
RECT DialogRect, DesktopRect;
|
|
||||||
int nDeviceIndex, fs, bt, i, nWidth, nHeight, nb_devices, selected_language;
|
|
||||||
static DWORD DeviceNum = 0, LastRefresh = 0;
|
static DWORD DeviceNum = 0, LastRefresh = 0;
|
||||||
char tmp[128];
|
|
||||||
static BOOL first_log_display = TRUE, user_changed_label = FALSE;
|
static BOOL first_log_display = TRUE, user_changed_label = FALSE;
|
||||||
static ULONG ulRegister = 0;
|
static ULONG ulRegister = 0;
|
||||||
static LPITEMIDLIST pidlDesktop = NULL;
|
static LPITEMIDLIST pidlDesktop = NULL;
|
||||||
static MY_SHChangeNotifyEntry NotifyEntry;
|
static MY_SHChangeNotifyEntry NotifyEntry;
|
||||||
|
DRAWITEMSTRUCT* pDI;
|
||||||
|
POINT Point;
|
||||||
|
RECT DialogRect, DesktopRect;
|
||||||
|
LONG progress_style;
|
||||||
|
int nDeviceIndex, fs, bt, i, nWidth, nHeight, nb_devices, selected_language;
|
||||||
|
char tmp[128];
|
||||||
loc_cmd* lcmd = NULL;
|
loc_cmd* lcmd = NULL;
|
||||||
// TODO: Add "*.img;*.vhd" / "All Supported Images" to the list below and use a generic "%s Image" in the .loc
|
// TODO: Add "*.img;*.vhd" / "All Supported Images" to the list below and use a generic "%s Image" in the .loc
|
||||||
EXT_DECL(img_ext, NULL, __VA_GROUP__("*.img", "*.vhd"), __VA_GROUP__(lmprintf(MSG_095), "VHD Image"));
|
EXT_DECL(img_ext, NULL, __VA_GROUP__("*.img", "*.vhd"), __VA_GROUP__(lmprintf(MSG_095), "VHD Image"));
|
||||||
|
@ -1779,7 +1730,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
ulRegister = pfSHChangeNotifyRegister(hDlg, 0x0001|0x0002|0x8000,
|
ulRegister = pfSHChangeNotifyRegister(hDlg, 0x0001|0x0002|0x8000,
|
||||||
SHCNE_MEDIAINSERTED|SHCNE_MEDIAREMOVED, UM_MEDIA_CHANGE, 1, &NotifyEntry);
|
SHCNE_MEDIAINSERTED|SHCNE_MEDIAREMOVED, UM_MEDIA_CHANGE, 1, &NotifyEntry);
|
||||||
}
|
}
|
||||||
PostMessage(hMainDialog, UM_PROGRESS_CREATE, 0, 0);
|
|
||||||
// Bring our Window on top. We have to go through all *THREE* of these, or Far Manager hides our window :(
|
// Bring our Window on top. We have to go through all *THREE* of these, or Far Manager hides our window :(
|
||||||
SetWindowPos(hMainDialog, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
|
SetWindowPos(hMainDialog, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
|
||||||
SetWindowPos(hMainDialog, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
|
SetWindowPos(hMainDialog, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
|
||||||
|
@ -1812,6 +1762,20 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#if defined(COLOURED_INFO)
|
||||||
|
case WM_CTLCOLORSTATIC:
|
||||||
|
// Must be transparent for XP and non Aero Vista/7
|
||||||
|
SetBkMode((HDC)wParam, TRANSPARENT);
|
||||||
|
if ((HWND)lParam == hInfo) {
|
||||||
|
SetTextColor((HDC)wParam, RGB(0,192,255));
|
||||||
|
return (INT_PTR)CreateSolidBrush(RGB(0,0,0));
|
||||||
|
}
|
||||||
|
// Restore transparency if we don't change the background
|
||||||
|
SetBkMode((HDC)wParam, OPAQUE);
|
||||||
|
return (INT_PTR)FALSE;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
if ((LOWORD(wParam) >= UM_LANGUAGE_MENU) && (LOWORD(wParam) < UM_LANGUAGE_MENU_MAX)) {
|
if ((LOWORD(wParam) >= UM_LANGUAGE_MENU) && (LOWORD(wParam) < UM_LANGUAGE_MENU_MAX)) {
|
||||||
selected_language = LOWORD(wParam) - UM_LANGUAGE_MENU;
|
selected_language = LOWORD(wParam) - UM_LANGUAGE_MENU;
|
||||||
|
@ -1831,7 +1795,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
case IDOK: // close application
|
case IDOK: // close application
|
||||||
case IDCANCEL:
|
case IDCANCEL:
|
||||||
PF_INIT(SHChangeNotifyDeregister, Shell32);
|
PF_INIT(SHChangeNotifyDeregister, Shell32);
|
||||||
EnableWindow(GetDlgItem(hISOProgressDlg, IDC_ISO_ABORT), FALSE);
|
|
||||||
EnableWindow(GetDlgItem(hDlg, IDCANCEL), FALSE);
|
EnableWindow(GetDlgItem(hDlg, IDCANCEL), FALSE);
|
||||||
if (format_thid != NULL) {
|
if (format_thid != NULL) {
|
||||||
if (MessageBoxU(hMainDialog, lmprintf(MSG_105), lmprintf(MSG_049),
|
if (MessageBoxU(hMainDialog, lmprintf(MSG_105), lmprintf(MSG_049),
|
||||||
|
@ -1839,8 +1802,8 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
// Operation may have completed in the meantime
|
// Operation may have completed in the meantime
|
||||||
if (format_thid != NULL) {
|
if (format_thid != NULL) {
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANCELLED;
|
||||||
PrintStatus(0, FALSE, MSG_201);
|
PrintInfo(0, MSG_201);
|
||||||
uprintf("Cancelling (from main app)\n");
|
uprintf("Cancelling");
|
||||||
// Start a timer to detect blocking operations during ISO file extraction
|
// Start a timer to detect blocking operations during ISO file extraction
|
||||||
if (iso_blocking_status >= 0) {
|
if (iso_blocking_status >= 0) {
|
||||||
last_iso_blocking_status = iso_blocking_status;
|
last_iso_blocking_status = iso_blocking_status;
|
||||||
|
@ -1848,7 +1811,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
EnableWindow(GetDlgItem(hISOProgressDlg, IDC_ISO_ABORT), TRUE);
|
|
||||||
EnableWindow(GetDlgItem(hDlg, IDCANCEL), TRUE);
|
EnableWindow(GetDlgItem(hDlg, IDCANCEL), TRUE);
|
||||||
}
|
}
|
||||||
return (INT_PTR)TRUE;
|
return (INT_PTR)TRUE;
|
||||||
|
@ -1897,8 +1859,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
}
|
}
|
||||||
// Display the log Window
|
// Display the log Window
|
||||||
log_displayed = !log_displayed;
|
log_displayed = !log_displayed;
|
||||||
if (IsShown(hISOProgressDlg))
|
|
||||||
SetFocus(hISOProgressDlg);
|
|
||||||
// Set focus on the start button
|
// Set focus on the start button
|
||||||
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)FALSE, 0);
|
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)FALSE, 0);
|
||||||
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hMainDialog, IDC_START), TRUE);
|
SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hMainDialog, IDC_START), TRUE);
|
||||||
|
@ -1945,7 +1905,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, 0, 0);
|
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, 0, 0);
|
||||||
}
|
}
|
||||||
uprintf("\r\nSave to image operation started");
|
uprintf("\r\nSave to image operation started");
|
||||||
PrintStatus(0, FALSE, -1);
|
PrintInfo(0, -1);
|
||||||
timer = 0;
|
timer = 0;
|
||||||
safe_sprintf(szTimer, sizeof(szTimer), "00:00:00");
|
safe_sprintf(szTimer, sizeof(szTimer), "00:00:00");
|
||||||
SendMessageA(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTA,
|
SendMessageA(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTA,
|
||||||
|
@ -1972,7 +1932,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
if (HIWORD(wParam) != CBN_SELCHANGE)
|
if (HIWORD(wParam) != CBN_SELCHANGE)
|
||||||
break;
|
break;
|
||||||
nb_devices = ComboBox_GetCount(hDeviceList);
|
nb_devices = ComboBox_GetCount(hDeviceList);
|
||||||
PrintStatus(0, TRUE, (nb_devices==1)?MSG_208:MSG_209, nb_devices);
|
PrintStatusDebug(0, (nb_devices==1)?MSG_208:MSG_209, nb_devices);
|
||||||
PopulateProperties(ComboBox_GetCurSel(hDeviceList));
|
PopulateProperties(ComboBox_GetCurSel(hDeviceList));
|
||||||
SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE<<16) | IDC_FILESYSTEM,
|
SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE<<16) | IDC_FILESYSTEM,
|
||||||
ComboBox_GetCurSel(hFileSystem));
|
ComboBox_GetCurSel(hFileSystem));
|
||||||
|
@ -2085,6 +2045,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
image_path = FileDialog(FALSE, NULL, &iso_ext, 0);
|
image_path = FileDialog(FALSE, NULL, &iso_ext, 0);
|
||||||
if (image_path == NULL) {
|
if (image_path == NULL) {
|
||||||
CreateTooltip(hSelectISO, lmprintf(MSG_173), -1);
|
CreateTooltip(hSelectISO, lmprintf(MSG_173), -1);
|
||||||
|
PrintStatus(0, MSG_190);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2164,7 +2125,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, 0, 0);
|
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, 0, 0);
|
||||||
}
|
}
|
||||||
uprintf("\r\nFormat operation started");
|
uprintf("\r\nFormat operation started");
|
||||||
PrintStatus(0, FALSE, -1);
|
PrintInfo(0, -1);
|
||||||
timer = 0;
|
timer = 0;
|
||||||
safe_sprintf(szTimer, sizeof(szTimer), "00:00:00");
|
safe_sprintf(szTimer, sizeof(szTimer), "00:00:00");
|
||||||
SendMessageA(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTA,
|
SendMessageA(GetDlgItem(hMainDialog, IDC_STATUS), SB_SETTEXTA,
|
||||||
|
@ -2186,17 +2147,28 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
PostQuitMessage(0);
|
PostQuitMessage(0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UM_PROGRESS_CREATE:
|
case UM_PROGRESS_INIT:
|
||||||
// You'd think that Windows would let you instantiate a modeless dialog wherever
|
if (wParam == PBS_MARQUEE) {
|
||||||
// but you'd be wrong. It must be done in the main callback, hence the custom message.
|
progress_style = GetWindowLong(hProgress, GWL_STYLE);
|
||||||
if (!IsWindow(hISOProgressDlg)) {
|
SetWindowLong(hProgress, GWL_STYLE, progress_style | PBS_MARQUEE);
|
||||||
hISOProgressDlg = CreateDialogW(hMainInstance, MAKEINTRESOURCEW(IDD_ISO_EXTRACT + IDD_OFFSET),
|
SendMessage(hProgress, PBM_SETMARQUEE, TRUE, 0);
|
||||||
hDlg, (DLGPROC)ISOProc);
|
} else {
|
||||||
|
SendMessage(hProgress, PBM_SETPOS, 0, 0);
|
||||||
// The window is not visible by default but takes focus => restore it
|
|
||||||
SetFocus(hDlg);
|
|
||||||
}
|
}
|
||||||
return (INT_PTR)TRUE;
|
SetTaskbarProgressState(TASKBAR_NORMAL);
|
||||||
|
SetTaskbarProgressValue(0, MAX_PROGRESS);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case UM_PROGRESS_EXIT:
|
||||||
|
// Remove marquee style if previously set
|
||||||
|
progress_style = GetWindowLong(hProgress, GWL_STYLE);
|
||||||
|
SetWindowLong(hProgress, GWL_STYLE, progress_style & (~PBS_MARQUEE));
|
||||||
|
SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_NORMAL, 0);
|
||||||
|
SetTaskbarProgressState(TASKBAR_NORMAL);
|
||||||
|
SetTaskbarProgressValue(0, MAX_PROGRESS);
|
||||||
|
SendMessage(hProgress, PBM_SETPOS, 0, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
case UM_FORMAT_COMPLETED:
|
case UM_FORMAT_COMPLETED:
|
||||||
format_thid = NULL;
|
format_thid = NULL;
|
||||||
|
@ -2205,7 +2177,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
// Close the cancel MessageBox and Blocking notification if active
|
// Close the cancel MessageBox and Blocking notification if active
|
||||||
SendMessage(FindWindowA(MAKEINTRESOURCEA(32770), lmprintf(MSG_049)), WM_COMMAND, IDNO, 0);
|
SendMessage(FindWindowA(MAKEINTRESOURCEA(32770), lmprintf(MSG_049)), WM_COMMAND, IDNO, 0);
|
||||||
SendMessage(FindWindowA(MAKEINTRESOURCEA(32770), lmprintf(MSG_049)), WM_COMMAND, IDYES, 0);
|
SendMessage(FindWindowA(MAKEINTRESOURCEA(32770), lmprintf(MSG_049)), WM_COMMAND, IDYES, 0);
|
||||||
EnableWindow(GetDlgItem(hISOProgressDlg, IDC_ISO_ABORT), TRUE);
|
|
||||||
EnableWindow(GetDlgItem(hMainDialog, IDCANCEL), TRUE);
|
EnableWindow(GetDlgItem(hMainDialog, IDCANCEL), TRUE);
|
||||||
EnableControls(TRUE);
|
EnableControls(TRUE);
|
||||||
uprintf("\r\n");
|
uprintf("\r\n");
|
||||||
|
@ -2216,16 +2187,16 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
SendMessage(hProgress, PBM_SETPOS, (MAX_PROGRESS+1), 0);
|
SendMessage(hProgress, PBM_SETPOS, (MAX_PROGRESS+1), 0);
|
||||||
SendMessage(hProgress, PBM_SETRANGE, 0, (MAX_PROGRESS<<16) & 0xFFFF0000);
|
SendMessage(hProgress, PBM_SETRANGE, 0, (MAX_PROGRESS<<16) & 0xFFFF0000);
|
||||||
SetTaskbarProgressState(TASKBAR_NOPROGRESS);
|
SetTaskbarProgressState(TASKBAR_NOPROGRESS);
|
||||||
PrintStatus(0, FALSE, MSG_210);
|
PrintInfo(0, MSG_210);
|
||||||
} else if (SCODE_CODE(FormatStatus) == ERROR_CANCELLED) {
|
} else if (SCODE_CODE(FormatStatus) == ERROR_CANCELLED) {
|
||||||
SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_PAUSED, 0);
|
SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_PAUSED, 0);
|
||||||
SetTaskbarProgressState(TASKBAR_PAUSED);
|
SetTaskbarProgressState(TASKBAR_PAUSED);
|
||||||
PrintStatus(0, FALSE, MSG_211);
|
PrintInfo(0, MSG_211);
|
||||||
Notification(MSG_INFO, NULL, lmprintf(MSG_211), lmprintf(MSG_041));
|
Notification(MSG_INFO, NULL, lmprintf(MSG_211), lmprintf(MSG_041));
|
||||||
} else {
|
} else {
|
||||||
SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_ERROR, 0);
|
SendMessage(hProgress, PBM_SETSTATE, (WPARAM)PBST_ERROR, 0);
|
||||||
SetTaskbarProgressState(TASKBAR_ERROR);
|
SetTaskbarProgressState(TASKBAR_ERROR);
|
||||||
PrintStatus(0, FALSE, MSG_212);
|
PrintInfo(0, MSG_212);
|
||||||
Notification(MSG_ERROR, NULL, lmprintf(MSG_042), lmprintf(MSG_043, StrError(FormatStatus, FALSE)));
|
Notification(MSG_ERROR, NULL, lmprintf(MSG_042), lmprintf(MSG_043, StrError(FormatStatus, FALSE)));
|
||||||
}
|
}
|
||||||
FormatStatus = 0;
|
FormatStatus = 0;
|
||||||
|
@ -2470,12 +2441,6 @@ relaunch:
|
||||||
if (get_loc_data_file(loc_file, selected_locale))
|
if (get_loc_data_file(loc_file, selected_locale))
|
||||||
WriteRegistryKeyStr(REGKEY_HKCU, REGKEY_LOCALE, selected_locale->txt[0]);
|
WriteRegistryKeyStr(REGKEY_HKCU, REGKEY_LOCALE, selected_locale->txt[0]);
|
||||||
|
|
||||||
// Destroy the ISO progress window, if it exists
|
|
||||||
if (hISOProgressDlg != NULL) {
|
|
||||||
DestroyWindow(hISOProgressDlg);
|
|
||||||
hISOProgressDlg = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create the main Window
|
* Create the main Window
|
||||||
*
|
*
|
||||||
|
@ -2505,123 +2470,121 @@ relaunch:
|
||||||
|
|
||||||
// Do our own event processing and process "magic" commands
|
// Do our own event processing and process "magic" commands
|
||||||
while(GetMessage(&msg, NULL, 0, 0)) {
|
while(GetMessage(&msg, NULL, 0, 0)) {
|
||||||
// The following ensures the processing of the ISO progress window messages
|
|
||||||
if (!IsWindow(hISOProgressDlg) || !IsDialogMessage(hISOProgressDlg, &msg)) {
|
// Ctrl-A => Select the log data
|
||||||
// Ctrl-A => Select the log data
|
if ( (IsWindowVisible(hLogDlg)) && (GetKeyState(VK_CONTROL) & 0x8000) &&
|
||||||
if ( (IsWindowVisible(hLogDlg)) && (GetKeyState(VK_CONTROL) & 0x8000) &&
|
(msg.message == WM_KEYDOWN) && (msg.wParam == 'A') ) {
|
||||||
(msg.message == WM_KEYDOWN) && (msg.wParam == 'A') ) {
|
// Might also need ES_NOHIDESEL property if you want to select when not active
|
||||||
// Might also need ES_NOHIDESEL property if you want to select when not active
|
SendMessage(hLog, EM_SETSEL, 0, -1);
|
||||||
SendMessage(hLog, EM_SETSEL, 0, -1);
|
|
||||||
}
|
|
||||||
// Alt-B => Toggle fake drive detection during bad blocks check
|
|
||||||
// By default, Rufus will check for fake USB flash drives that mistakenly present
|
|
||||||
// more capacity than they already have by looping over the flash. This check which
|
|
||||||
// is enabled by default is performed by writing the block number sequence and reading
|
|
||||||
// it back during the bad block check.
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'B')) {
|
|
||||||
detect_fakes = !detect_fakes;
|
|
||||||
PrintStatus2000(lmprintf(MSG_256), detect_fakes);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt C => Force the update check to be successful
|
|
||||||
// This will set the reported current version of Rufus to 0.0.0.0 when performing an update
|
|
||||||
// check, so that it always succeeds. This is useful for translators.
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'C')) {
|
|
||||||
force_update = !force_update;
|
|
||||||
PrintStatus2000(lmprintf(MSG_259), force_update);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt-D => Delete the NoDriveTypeAutorun key on exit (useful if the app crashed)
|
|
||||||
// This key is used to disable Windows popup messages when an USB drive is plugged in.
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'D')) {
|
|
||||||
PrintStatus(2000, FALSE, MSG_255);
|
|
||||||
existing_key = FALSE;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt-E => Enhanced installation mode (allow dual UEFI/BIOS mode and FAT32 for Windows)
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'E')) {
|
|
||||||
allow_dual_uefi_bios = !allow_dual_uefi_bios;
|
|
||||||
// TODO: add a localized message
|
|
||||||
PrintStatus2000("Allow dual UEFI/BIOS mode", allow_dual_uefi_bios);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt-F => Toggle detection of USB HDDs
|
|
||||||
// By default Rufus does not list USB HDDs. This is a safety feature aimed at avoiding
|
|
||||||
// unintentional formatting of backup drives instead of USB keys.
|
|
||||||
// When enabled, Rufus will list and allow the formatting of USB HDDs.
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'F')) {
|
|
||||||
enable_HDDs = !enable_HDDs;
|
|
||||||
PrintStatus2000(lmprintf(MSG_253), enable_HDDs);
|
|
||||||
GetUSBDevices(0);
|
|
||||||
CheckDlgButton(hMainDialog, IDC_ENABLE_FIXED_DISKS, enable_HDDs?BST_CHECKED:BST_UNCHECKED);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt-I => Toggle ISO support
|
|
||||||
// This is useful if you have a dual ISO/DD image and you want to force Rufus to use
|
|
||||||
// DD-mode when writing the data.
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'I')) {
|
|
||||||
enable_iso = !enable_iso;
|
|
||||||
PrintStatus2000(lmprintf(MSG_262), enable_iso);
|
|
||||||
if (image_path != NULL) {
|
|
||||||
iso_provided = TRUE;
|
|
||||||
PostMessage(hDlg, WM_COMMAND, IDC_SELECT_ISO, 0);
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt J => Toggle Joliet support for ISO9660 images
|
|
||||||
// Some ISOs (Ubuntu) have Joliet extensions but expect applications not to use them,
|
|
||||||
// due to their reliance on filenames that are > 64 chars (the Joliet max length for
|
|
||||||
// a file name). This option allows users to ignore Joliet when using such images.
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'J')) {
|
|
||||||
enable_joliet = !enable_joliet;
|
|
||||||
PrintStatus2000(lmprintf(MSG_257), enable_joliet);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt K => Toggle Rock Ridge support for ISO9660 images
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'K')) {
|
|
||||||
enable_rockridge = !enable_rockridge;
|
|
||||||
PrintStatus2000(lmprintf(MSG_258), enable_rockridge);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt-L => Force Large FAT32 format to be used on < 32 GB drives
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'L')) {
|
|
||||||
force_large_fat32 = !force_large_fat32;
|
|
||||||
PrintStatus2000(lmprintf(MSG_254), force_large_fat32);
|
|
||||||
GetUSBDevices(0);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt N => Enable NTFS compression
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'N')) {
|
|
||||||
enable_ntfs_compression = !enable_ntfs_compression;
|
|
||||||
PrintStatus2000(lmprintf(MSG_260), enable_ntfs_compression);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt-R => Remove all the registry keys created by Rufus
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'R')) {
|
|
||||||
PrintStatus(2000, FALSE, DeleteRegistryKey(REGKEY_HKCU, COMPANY_NAME "\\" APPLICATION_NAME)?MSG_248:MSG_249);
|
|
||||||
// Also try to delete the upper key (company name) if it's empty (don't care about the result)
|
|
||||||
DeleteRegistryKey(REGKEY_HKCU, COMPANY_NAME);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt-S => Disable size limit for ISOs
|
|
||||||
// By default, Rufus will not copy ISOs that are larger than in size than
|
|
||||||
// the target USB drive. If this is enabled, the size check is disabled.
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'S')) {
|
|
||||||
size_check = !size_check;
|
|
||||||
PrintStatus2000(lmprintf(MSG_252), size_check);
|
|
||||||
GetUSBDevices(0);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Alt-U => Use PROPER size units, instead of this whole Kibi/Gibi nonsense
|
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'U')) {
|
|
||||||
use_fake_units = !use_fake_units;
|
|
||||||
PrintStatus2000(lmprintf(MSG_263), !use_fake_units);
|
|
||||||
GetUSBDevices(0);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
TranslateMessage(&msg);
|
|
||||||
DispatchMessage(&msg);
|
|
||||||
}
|
}
|
||||||
|
// Alt-B => Toggle fake drive detection during bad blocks check
|
||||||
|
// By default, Rufus will check for fake USB flash drives that mistakenly present
|
||||||
|
// more capacity than they already have by looping over the flash. This check which
|
||||||
|
// is enabled by default is performed by writing the block number sequence and reading
|
||||||
|
// it back during the bad block check.
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'B')) {
|
||||||
|
detect_fakes = !detect_fakes;
|
||||||
|
PrintStatus2000(lmprintf(MSG_256), detect_fakes);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt C => Force the update check to be successful
|
||||||
|
// This will set the reported current version of Rufus to 0.0.0.0 when performing an update
|
||||||
|
// check, so that it always succeeds. This is useful for translators.
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'C')) {
|
||||||
|
force_update = !force_update;
|
||||||
|
PrintStatus2000(lmprintf(MSG_259), force_update);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt-D => Delete the NoDriveTypeAutorun key on exit (useful if the app crashed)
|
||||||
|
// This key is used to disable Windows popup messages when an USB drive is plugged in.
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'D')) {
|
||||||
|
PrintStatus(2000, MSG_255);
|
||||||
|
existing_key = FALSE;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt-E => Enhanced installation mode (allow dual UEFI/BIOS mode and FAT32 for Windows)
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'E')) {
|
||||||
|
allow_dual_uefi_bios = !allow_dual_uefi_bios;
|
||||||
|
// TODO: add a localized message
|
||||||
|
PrintStatus2000("Allow dual UEFI/BIOS mode", allow_dual_uefi_bios);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt-F => Toggle detection of USB HDDs
|
||||||
|
// By default Rufus does not list USB HDDs. This is a safety feature aimed at avoiding
|
||||||
|
// unintentional formatting of backup drives instead of USB keys.
|
||||||
|
// When enabled, Rufus will list and allow the formatting of USB HDDs.
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'F')) {
|
||||||
|
enable_HDDs = !enable_HDDs;
|
||||||
|
PrintStatus2000(lmprintf(MSG_253), enable_HDDs);
|
||||||
|
GetUSBDevices(0);
|
||||||
|
CheckDlgButton(hMainDialog, IDC_ENABLE_FIXED_DISKS, enable_HDDs?BST_CHECKED:BST_UNCHECKED);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt-I => Toggle ISO support
|
||||||
|
// This is useful if you have a dual ISO/DD image and you want to force Rufus to use
|
||||||
|
// DD-mode when writing the data.
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'I')) {
|
||||||
|
enable_iso = !enable_iso;
|
||||||
|
PrintStatus2000(lmprintf(MSG_262), enable_iso);
|
||||||
|
if (image_path != NULL) {
|
||||||
|
iso_provided = TRUE;
|
||||||
|
PostMessage(hDlg, WM_COMMAND, IDC_SELECT_ISO, 0);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt J => Toggle Joliet support for ISO9660 images
|
||||||
|
// Some ISOs (Ubuntu) have Joliet extensions but expect applications not to use them,
|
||||||
|
// due to their reliance on filenames that are > 64 chars (the Joliet max length for
|
||||||
|
// a file name). This option allows users to ignore Joliet when using such images.
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'J')) {
|
||||||
|
enable_joliet = !enable_joliet;
|
||||||
|
PrintStatus2000(lmprintf(MSG_257), enable_joliet);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt K => Toggle Rock Ridge support for ISO9660 images
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'K')) {
|
||||||
|
enable_rockridge = !enable_rockridge;
|
||||||
|
PrintStatus2000(lmprintf(MSG_258), enable_rockridge);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt-L => Force Large FAT32 format to be used on < 32 GB drives
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'L')) {
|
||||||
|
force_large_fat32 = !force_large_fat32;
|
||||||
|
PrintStatus2000(lmprintf(MSG_254), force_large_fat32);
|
||||||
|
GetUSBDevices(0);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt N => Enable NTFS compression
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'N')) {
|
||||||
|
enable_ntfs_compression = !enable_ntfs_compression;
|
||||||
|
PrintStatus2000(lmprintf(MSG_260), enable_ntfs_compression);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt-R => Remove all the registry keys created by Rufus
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'R')) {
|
||||||
|
PrintStatus(2000, DeleteRegistryKey(REGKEY_HKCU, COMPANY_NAME "\\" APPLICATION_NAME)?MSG_248:MSG_249);
|
||||||
|
// Also try to delete the upper key (company name) if it's empty (don't care about the result)
|
||||||
|
DeleteRegistryKey(REGKEY_HKCU, COMPANY_NAME);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt-S => Disable size limit for ISOs
|
||||||
|
// By default, Rufus will not copy ISOs that are larger than in size than
|
||||||
|
// the target USB drive. If this is enabled, the size check is disabled.
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'S')) {
|
||||||
|
size_check = !size_check;
|
||||||
|
PrintStatus2000(lmprintf(MSG_252), size_check);
|
||||||
|
GetUSBDevices(0);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Alt-U => Use PROPER size units, instead of this whole Kibi/Gibi nonsense
|
||||||
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'U')) {
|
||||||
|
use_fake_units = !use_fake_units;
|
||||||
|
PrintStatus2000(lmprintf(MSG_263), !use_fake_units);
|
||||||
|
GetUSBDevices(0);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
TranslateMessage(&msg);
|
||||||
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
if (relaunch) {
|
if (relaunch) {
|
||||||
relaunch = FALSE;
|
relaunch = FALSE;
|
||||||
|
|
11
src/rufus.h
11
src/rufus.h
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Copyright © 2011-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -125,7 +125,6 @@ extern void _uprintf(const char *format, ...);
|
||||||
enum user_message_type {
|
enum user_message_type {
|
||||||
UM_FORMAT_COMPLETED = WM_APP,
|
UM_FORMAT_COMPLETED = WM_APP,
|
||||||
UM_MEDIA_CHANGE,
|
UM_MEDIA_CHANGE,
|
||||||
UM_PROGRESS_CREATE,
|
|
||||||
UM_PROGRESS_INIT,
|
UM_PROGRESS_INIT,
|
||||||
UM_PROGRESS_EXIT,
|
UM_PROGRESS_EXIT,
|
||||||
// Start of the WM IDs for the language menu items
|
// Start of the WM IDs for the language menu items
|
||||||
|
@ -331,7 +330,7 @@ enum WindowsVersion {
|
||||||
extern HINSTANCE hMainInstance;
|
extern HINSTANCE hMainInstance;
|
||||||
extern HWND hMainDialog, hLogDlg, hStatus, hDeviceList, hCapacity;
|
extern HWND hMainDialog, hLogDlg, hStatus, hDeviceList, hCapacity;
|
||||||
extern HWND hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog;
|
extern HWND hPartitionScheme, hFileSystem, hClusterSize, hLabel, hBootType, hNBPasses, hLog;
|
||||||
extern HWND hISOProgressDlg, hISOProgressBar, hISOFileName, hDiskID;
|
extern HWND hInfo, hProgress, hDiskID;
|
||||||
extern float fScale;
|
extern float fScale;
|
||||||
extern char szFolderPath[MAX_PATH], app_dir[MAX_PATH];
|
extern char szFolderPath[MAX_PATH], app_dir[MAX_PATH];
|
||||||
extern char* image_path;
|
extern char* image_path;
|
||||||
|
@ -359,7 +358,11 @@ extern BOOL is_x64(void);
|
||||||
//extern const char* PrintWindowsVersion(enum WindowsVersion version);
|
//extern const char* PrintWindowsVersion(enum WindowsVersion version);
|
||||||
extern const char *WindowsErrorString(void);
|
extern const char *WindowsErrorString(void);
|
||||||
extern void DumpBufferHex(void *buf, size_t size);
|
extern void DumpBufferHex(void *buf, size_t size);
|
||||||
extern void PrintStatus(unsigned int duration, BOOL debug, int msg_id, ...);
|
extern void PrintStatusInfo(BOOL info, BOOL debug, unsigned int duration, int msg_id, ...);
|
||||||
|
#define PrintStatus(...) PrintStatusInfo(FALSE, FALSE, __VA_ARGS__)
|
||||||
|
#define PrintStatusDebug(...) PrintStatusInfo(FALSE, TRUE, __VA_ARGS__)
|
||||||
|
#define PrintInfo(...) PrintStatusInfo(TRUE, FALSE, __VA_ARGS__)
|
||||||
|
#define PrintInfoDebug(...) PrintStatusInfo(TRUE, TRUE, __VA_ARGS__)
|
||||||
extern void UpdateProgress(int op, float percent);
|
extern void UpdateProgress(int op, float percent);
|
||||||
extern const char* StrError(DWORD error_code, BOOL use_default_locale);
|
extern const char* StrError(DWORD error_code, BOOL use_default_locale);
|
||||||
extern char* GuidToString(const GUID* guid);
|
extern char* GuidToString(const GUID* guid);
|
||||||
|
|
164
src/rufus.rc
164
src/rufus.rc
|
@ -30,12 +30,12 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
// Dialog
|
// Dialog
|
||||||
//
|
//
|
||||||
|
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 242, 329
|
IDD_DIALOG DIALOGEX 12, 12, 242, 354
|
||||||
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 1.5.0.564"
|
CAPTION "Rufus 1.5.0.565"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,291,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,314,50,14
|
||||||
PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON
|
PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,208,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,208,8
|
||||||
PUSHBUTTON "",IDC_LANG,217,2,17,13,BS_TOP | BS_FLAT
|
PUSHBUTTON "",IDC_LANG,217,2,17,13,BS_TOP | BS_FLAT
|
||||||
|
@ -63,11 +63,12 @@ BEGIN
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,216,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,216,10
|
||||||
CONTROL "Use Rufus MBR with BIOS ID",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,112,10
|
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
|
COMBOBOX IDC_DISK_ID,128,246,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,272,225,9
|
CONTROL "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,273,225,9
|
||||||
PUSHBUTTON "About...",IDC_ABOUT,8,291,50,14
|
EDITTEXT IDC_INFO,8,291,225,11,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "Log",IDC_LOG,63,291,21,14
|
PUSHBUTTON "About...",IDC_ABOUT,8,314,50,14
|
||||||
PUSHBUTTON "T",IDC_TEST,90,291,12,14,NOT WS_VISIBLE
|
PUSHBUTTON "Log",IDC_LOG,63,314,21,14
|
||||||
PUSHBUTTON "Close",IDCANCEL,183,291,50,14
|
PUSHBUTTON "T",IDC_TEST,90,314,12,14,NOT WS_VISIBLE
|
||||||
|
PUSHBUTTON "Close",IDCANCEL,183,314,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ABOUTBOX DIALOGEX 0, 0, 319, 237
|
IDD_ABOUTBOX DIALOGEX 0, 0, 319, 237
|
||||||
|
@ -83,16 +84,6 @@ BEGIN
|
||||||
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE
|
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ISO_EXTRACT DIALOGEX 0, 0, 300, 66
|
|
||||||
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
|
|
||||||
CAPTION "Copying ISO files..."
|
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
|
||||||
BEGIN
|
|
||||||
LTEXT "Opening ISO image - please wait...",IDC_ISO_FILENAME,8,10,246,13,SS_PATHELLIPSIS
|
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7,26,247,8
|
|
||||||
PUSHBUTTON "Cancel",IDC_ISO_ABORT,111,43,50,14
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_LICENSE DIALOGEX 0, 0, 335, 205
|
IDD_LICENSE DIALOGEX 0, 0, 335, 205
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "Rufus License"
|
CAPTION "Rufus License"
|
||||||
|
@ -102,15 +93,15 @@ BEGIN
|
||||||
EDITTEXT IDC_LICENSE_TEXT,7,7,321,176,ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
EDITTEXT IDC_LICENSE_TEXT,7,7,321,176,ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_LOG DIALOGEX 0, 0, 366, 329
|
IDD_LOG DIALOGEX 0, 0, 366, 354
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
||||||
CAPTION "Log"
|
CAPTION "Log"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
EDITTEXT IDC_LOG_EDIT,0,0,366,301,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE
|
EDITTEXT IDC_LOG_EDIT,0,0,366,324,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,308,50,14
|
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,331,50,14
|
||||||
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,308,50,14
|
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,331,50,14
|
||||||
DEFPUSHBUTTON "Close Log",IDCANCEL,308,308,50,14
|
DEFPUSHBUTTON "Close Log",IDCANCEL,308,331,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_NOTIFICATION DIALOGEX 0, 0, 263, 63
|
IDD_NOTIFICATION DIALOGEX 0, 0, 263, 63
|
||||||
|
@ -162,12 +153,12 @@ BEGIN
|
||||||
EDITTEXT IDC_DOWNLOAD_URL,15,191,351,13,ES_AUTOHSCROLL | ES_READONLY
|
EDITTEXT IDC_DOWNLOAD_URL,15,191,351,13,ES_AUTOHSCROLL | ES_READONLY
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_DIALOG_XP DIALOGEX 12, 12, 242, 329
|
IDD_DIALOG_XP DIALOGEX 12, 12, 242, 354
|
||||||
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 1.5.0.564"
|
CAPTION "Rufus 1.5.0.565"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,291,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,314,50,14
|
||||||
PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON
|
PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,208,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,208,8
|
||||||
PUSHBUTTON "",IDC_LANG,217,2,17,13,BS_TOP | BS_FLAT
|
PUSHBUTTON "",IDC_LANG,217,2,17,13,BS_TOP | BS_FLAT
|
||||||
|
@ -195,11 +186,12 @@ BEGIN
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,216,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,216,10
|
||||||
CONTROL "Use Rufus MBR with BIOS ID",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,112,10
|
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
|
COMBOBOX IDC_DISK_ID,128,246,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,272,225,9
|
CONTROL "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,273,225,9
|
||||||
PUSHBUTTON "About...",IDC_ABOUT,8,291,50,14
|
EDITTEXT IDC_INFO,8,291,225,11,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "Log",IDC_LOG,63,291,21,14
|
PUSHBUTTON "About...",IDC_ABOUT,8,314,50,14
|
||||||
PUSHBUTTON "T",IDC_TEST,90,291,12,14,NOT WS_VISIBLE
|
PUSHBUTTON "Log",IDC_LOG,63,314,21,14
|
||||||
PUSHBUTTON "Close",IDCANCEL,183,291,50,14
|
PUSHBUTTON "T",IDC_TEST,90,314,12,14,NOT WS_VISIBLE
|
||||||
|
PUSHBUTTON "Close",IDCANCEL,183,314,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ABOUTBOX_XP DIALOGEX 0, 0, 319, 237
|
IDD_ABOUTBOX_XP DIALOGEX 0, 0, 319, 237
|
||||||
|
@ -215,16 +207,6 @@ BEGIN
|
||||||
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE
|
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ISO_EXTRACT_XP DIALOGEX 0, 0, 300, 66
|
|
||||||
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
|
|
||||||
CAPTION "Copying ISO files..."
|
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
|
||||||
BEGIN
|
|
||||||
LTEXT "Opening ISO image - please wait...",IDC_ISO_FILENAME,8,10,246,13,SS_PATHELLIPSIS
|
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7,26,247,8
|
|
||||||
PUSHBUTTON "Cancel",IDC_ISO_ABORT,111,43,50,14
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_LICENSE_XP DIALOGEX 0, 0, 335, 205
|
IDD_LICENSE_XP DIALOGEX 0, 0, 335, 205
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
CAPTION "Rufus License"
|
CAPTION "Rufus License"
|
||||||
|
@ -234,15 +216,15 @@ BEGIN
|
||||||
EDITTEXT IDC_LICENSE_TEXT,7,7,321,176,ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
EDITTEXT IDC_LICENSE_TEXT,7,7,321,176,ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_LOG_XP DIALOGEX 0, 0, 366, 329
|
IDD_LOG_XP DIALOGEX 0, 0, 366, 354
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
||||||
CAPTION "Log"
|
CAPTION "Log"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
EDITTEXT IDC_LOG_EDIT,0,0,366,301,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE
|
EDITTEXT IDC_LOG_EDIT,0,0,366,324,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,308,50,14
|
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,331,50,14
|
||||||
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,308,50,14
|
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,331,50,14
|
||||||
DEFPUSHBUTTON "Close Log",IDCANCEL,308,308,50,14
|
DEFPUSHBUTTON "Close Log",IDCANCEL,308,331,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_NOTIFICATION_XP DIALOGEX 0, 0, 263, 63
|
IDD_NOTIFICATION_XP DIALOGEX 0, 0, 263, 63
|
||||||
|
@ -294,13 +276,13 @@ BEGIN
|
||||||
EDITTEXT IDC_DOWNLOAD_URL,15,191,351,13,ES_AUTOHSCROLL | ES_READONLY
|
EDITTEXT IDC_DOWNLOAD_URL,15,191,351,13,ES_AUTOHSCROLL | ES_READONLY
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_DIALOG_RTL DIALOGEX 12, 12, 242, 329
|
IDD_DIALOG_RTL DIALOGEX 12, 12, 242, 354
|
||||||
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 1.5.0.564"
|
CAPTION "Rufus 1.5.0.565"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,291,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,314,50,14
|
||||||
PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON
|
PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,208,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,208,8
|
||||||
PUSHBUTTON "",IDC_LANG,217,2,17,13,BS_TOP | BS_FLAT
|
PUSHBUTTON "",IDC_LANG,217,2,17,13,BS_TOP | BS_FLAT
|
||||||
|
@ -328,11 +310,12 @@ BEGIN
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,216,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,216,10
|
||||||
CONTROL "Use Rufus MBR with BIOS ID",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,112,10
|
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
|
COMBOBOX IDC_DISK_ID,128,246,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,272,225,9
|
CONTROL "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,273,225,9
|
||||||
PUSHBUTTON "About...",IDC_ABOUT,8,291,50,14
|
EDITTEXT IDC_INFO,8,291,225,11,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "Log",IDC_LOG,63,291,21,14
|
PUSHBUTTON "About...",IDC_ABOUT,8,314,50,14
|
||||||
PUSHBUTTON "T",IDC_TEST,90,291,12,14,NOT WS_VISIBLE
|
PUSHBUTTON "Log",IDC_LOG,63,314,21,14
|
||||||
PUSHBUTTON "Close",IDCANCEL,183,291,50,14
|
PUSHBUTTON "T",IDC_TEST,90,314,12,14,NOT WS_VISIBLE
|
||||||
|
PUSHBUTTON "Close",IDCANCEL,183,314,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ABOUTBOX_RTL DIALOGEX 0, 0, 319, 237
|
IDD_ABOUTBOX_RTL DIALOGEX 0, 0, 319, 237
|
||||||
|
@ -349,17 +332,6 @@ BEGIN
|
||||||
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE
|
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ISO_EXTRACT_RTL DIALOGEX 0, 0, 300, 66
|
|
||||||
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
|
|
||||||
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
|
||||||
CAPTION "Copying ISO files..."
|
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
|
||||||
BEGIN
|
|
||||||
LTEXT "Opening ISO image - please wait...",IDC_ISO_FILENAME,8,10,246,13,SS_PATHELLIPSIS
|
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7,26,247,8
|
|
||||||
PUSHBUTTON "Cancel",IDC_ISO_ABORT,111,43,50,14
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_LICENSE_RTL DIALOGEX 0, 0, 335, 205
|
IDD_LICENSE_RTL DIALOGEX 0, 0, 335, 205
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | 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
|
||||||
|
@ -370,16 +342,16 @@ BEGIN
|
||||||
EDITTEXT IDC_LICENSE_TEXT,7,7,321,176,ES_RIGHT | ES_MULTILINE | ES_READONLY | WS_VSCROLL,WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR
|
EDITTEXT IDC_LICENSE_TEXT,7,7,321,176,ES_RIGHT | ES_MULTILINE | ES_READONLY | WS_VSCROLL,WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_LOG_RTL DIALOGEX 0, 0, 366, 329
|
IDD_LOG_RTL DIALOGEX 0, 0, 366, 354
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
||||||
EXSTYLE WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
EXSTYLE WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
||||||
CAPTION "Log"
|
CAPTION "Log"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
EDITTEXT IDC_LOG_EDIT,0,0,366,301,ES_RIGHT | ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR | WS_EX_STATICEDGE
|
EDITTEXT IDC_LOG_EDIT,0,0,366,324,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,308,50,14
|
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,331,50,14
|
||||||
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,308,50,14
|
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,331,50,14
|
||||||
DEFPUSHBUTTON "Close Log",IDCANCEL,308,308,50,14
|
DEFPUSHBUTTON "Close Log",IDCANCEL,308,331,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_NOTIFICATION_RTL DIALOGEX 0, 0, 263, 63
|
IDD_NOTIFICATION_RTL DIALOGEX 0, 0, 263, 63
|
||||||
|
@ -434,13 +406,13 @@ BEGIN
|
||||||
EDITTEXT IDC_DOWNLOAD_URL,15,191,351,13,ES_AUTOHSCROLL | ES_READONLY
|
EDITTEXT IDC_DOWNLOAD_URL,15,191,351,13,ES_AUTOHSCROLL | ES_READONLY
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 242, 329
|
IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 242, 354
|
||||||
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 1.5.0.564"
|
CAPTION "Rufus 1.5.0.565"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,291,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,314,50,14
|
||||||
PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON
|
PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,208,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,208,8
|
||||||
PUSHBUTTON "",IDC_LANG,217,2,17,13,BS_TOP | BS_FLAT
|
PUSHBUTTON "",IDC_LANG,217,2,17,13,BS_TOP | BS_FLAT
|
||||||
|
@ -468,11 +440,12 @@ BEGIN
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,216,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,235,216,10
|
||||||
CONTROL "Use Rufus MBR with BIOS ID",IDC_RUFUS_MBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,248,112,10
|
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
|
COMBOBOX IDC_DISK_ID,128,246,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,272,225,9
|
CONTROL "",IDC_PROGRESS,"msctls_progress32",PBS_SMOOTH | WS_BORDER,8,273,225,9
|
||||||
PUSHBUTTON "About...",IDC_ABOUT,8,291,50,14
|
EDITTEXT IDC_INFO,8,291,225,11,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "Log",IDC_LOG,63,291,21,14
|
PUSHBUTTON "About...",IDC_ABOUT,8,314,50,14
|
||||||
PUSHBUTTON "T",IDC_TEST,90,291,12,14,NOT WS_VISIBLE
|
PUSHBUTTON "Log",IDC_LOG,63,314,21,14
|
||||||
PUSHBUTTON "Close",IDCANCEL,183,291,50,14
|
PUSHBUTTON "T",IDC_TEST,90,314,12,14,NOT WS_VISIBLE
|
||||||
|
PUSHBUTTON "Close",IDCANCEL,183,314,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ABOUTBOX_RTL_XP DIALOGEX 0, 0, 319, 237
|
IDD_ABOUTBOX_RTL_XP DIALOGEX 0, 0, 319, 237
|
||||||
|
@ -489,17 +462,6 @@ BEGIN
|
||||||
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE
|
CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ISO_EXTRACT_RTL_XP DIALOGEX 0, 0, 300, 66
|
|
||||||
STYLE DS_SETFONT | WS_POPUP | WS_CAPTION
|
|
||||||
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
|
||||||
CAPTION "Copying ISO files..."
|
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
|
||||||
BEGIN
|
|
||||||
LTEXT "Opening ISO image - please wait...",IDC_ISO_FILENAME,8,10,246,13,SS_PATHELLIPSIS
|
|
||||||
CONTROL "",IDC_PROGRESS,"msctls_progress32",WS_BORDER,7,26,247,8
|
|
||||||
PUSHBUTTON "Cancel",IDC_ISO_ABORT,111,43,50,14
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_LICENSE_RTL_XP DIALOGEX 0, 0, 335, 205
|
IDD_LICENSE_RTL_XP DIALOGEX 0, 0, 335, 205
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | 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
|
||||||
|
@ -510,16 +472,16 @@ BEGIN
|
||||||
EDITTEXT IDC_LICENSE_TEXT,7,7,321,176,ES_RIGHT | ES_MULTILINE | ES_READONLY | WS_VSCROLL,WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR
|
EDITTEXT IDC_LICENSE_TEXT,7,7,321,176,ES_RIGHT | ES_MULTILINE | ES_READONLY | WS_VSCROLL,WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_LOG_RTL_XP DIALOGEX 0, 0, 366, 329
|
IDD_LOG_RTL_XP DIALOGEX 0, 0, 366, 354
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
||||||
EXSTYLE WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
EXSTYLE WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
||||||
CAPTION "Log"
|
CAPTION "Log"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
EDITTEXT IDC_LOG_EDIT,0,0,366,301,ES_RIGHT | ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR | WS_EX_STATICEDGE
|
EDITTEXT IDC_LOG_EDIT,0,0,366,324,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,308,50,14
|
PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,331,50,14
|
||||||
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,308,50,14
|
PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,331,50,14
|
||||||
DEFPUSHBUTTON "Close Log",IDCANCEL,308,308,50,14
|
DEFPUSHBUTTON "Close Log",IDCANCEL,308,331,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_NOTIFICATION_RTL_XP DIALOGEX 0, 0, 263, 63
|
IDD_NOTIFICATION_RTL_XP DIALOGEX 0, 0, 263, 63
|
||||||
|
@ -670,10 +632,6 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ISO_EXTRACT, DIALOG
|
|
||||||
BEGIN
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_LICENSE, DIALOG
|
IDD_LICENSE, DIALOG
|
||||||
BEGIN
|
BEGIN
|
||||||
END
|
END
|
||||||
|
@ -703,8 +661,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,5,0,564
|
FILEVERSION 1,5,0,565
|
||||||
PRODUCTVERSION 1,5,0,564
|
PRODUCTVERSION 1,5,0,565
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -721,13 +679,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", "1.5.0.564"
|
VALUE "FileVersion", "1.5.0.565"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2014 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", "1.5.0.564"
|
VALUE "ProductVersion", "1.5.0.565"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Standard Windows function calls
|
* Standard Windows function calls
|
||||||
* Copyright © 2013-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2013-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -474,7 +474,7 @@ BOOL FileIO(BOOL save, char* path, char** buffer, DWORD* size)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintStatus(0, TRUE, save?MSG_216:MSG_215, path);
|
PrintInfoDebug(0, save?MSG_216:MSG_215, path);
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Standard Dialog Routines (Browse for folder, About, etc)
|
* Standard Dialog Routines (Browse for folder, About, etc)
|
||||||
* Copyright © 2011-2014 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2015 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* Based on zadig_stdlg.c, part of libwdi: http://libwdi.akeo.ie
|
* Based on zadig_stdlg.c, part of libwdi: http://libwdi.akeo.ie
|
||||||
*
|
*
|
||||||
|
@ -1244,11 +1244,11 @@ INT_PTR CALLBACK NewVersionCallback(HWND hDlg, UINT message, WPARAM wParam, LPAR
|
||||||
memset(&pi, 0, sizeof(pi));
|
memset(&pi, 0, sizeof(pi));
|
||||||
si.cb = sizeof(si);
|
si.cb = sizeof(si);
|
||||||
if (!CreateProcessU(filepath, cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
|
if (!CreateProcessU(filepath, cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
|
||||||
PrintStatus(0, FALSE, MSG_214);
|
PrintInfo(0, MSG_214);
|
||||||
// TODO: produce a message box and add a retry, as the file may be scanned by the Antivirus
|
// TODO: produce a message box and add a retry, as the file may be scanned by the Antivirus
|
||||||
uprintf("Failed to launch new application: %s\n", WindowsErrorString());
|
uprintf("Failed to launch new application: %s\n", WindowsErrorString());
|
||||||
} else {
|
} else {
|
||||||
PrintStatus(0, FALSE, MSG_213);
|
PrintInfo(0, MSG_213);
|
||||||
PostMessage(hDlg, WM_COMMAND, (WPARAM)IDCLOSE, 0);
|
PostMessage(hDlg, WM_COMMAND, (WPARAM)IDCLOSE, 0);
|
||||||
PostMessage(hMainDialog, WM_CLOSE, 0, 0);
|
PostMessage(hMainDialog, WM_CLOSE, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Copyright 2003 Lars Munch Christensen - All Rights Reserved
|
* Copyright 2003 Lars Munch Christensen - All Rights Reserved
|
||||||
* Copyright 1998-2008 H. Peter Anvin - All Rights Reserved
|
* Copyright 1998-2008 H. Peter Anvin - All Rights Reserved
|
||||||
* Copyright 2012-2014 Pete Batard
|
* Copyright 2012-2015 Pete Batard
|
||||||
*
|
*
|
||||||
* Based on the Linux installer program for SYSLINUX by H. Peter Anvin
|
* Based on the Linux installer program for SYSLINUX by H. Peter Anvin
|
||||||
*
|
*
|
||||||
|
@ -98,7 +98,7 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter, int fs_type)
|
||||||
int dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
int dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
||||||
BOOL use_v5 = (dt == DT_SYSLINUX_V6) || ((dt == DT_ISO) && (SL_MAJOR(iso_report.sl_version) >= 5));
|
BOOL use_v5 = (dt == DT_SYSLINUX_V6) || ((dt == DT_ISO) && (SL_MAJOR(iso_report.sl_version) >= 5));
|
||||||
|
|
||||||
PrintStatus(0, TRUE, MSG_234, (dt == DT_ISO)?iso_report.sl_version_str:embedded_sl_version_str[use_v5?1:0]);
|
PrintInfoDebug(0, MSG_234, (dt == DT_ISO)?iso_report.sl_version_str:embedded_sl_version_str[use_v5?1:0]);
|
||||||
|
|
||||||
/* Initialize the ADV -- this should be smarter */
|
/* Initialize the ADV -- this should be smarter */
|
||||||
syslinux_reset_adv(syslinux_adv);
|
syslinux_reset_adv(syslinux_adv);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue