mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[core] move downloads from <app_location>\rufus_files\ to %LOCALAPPDATA%\Rufus\
* While this is intended to solve the issue of saving GRUB/Syslinux files for the App Store version, we apply this change globally, as it allows the user to move the Rufus executable around while preserving access to existing downloads. * Closes #1744
This commit is contained in:
parent
aeae66e971
commit
9d7e96e293
10 changed files with 47 additions and 28 deletions
|
@ -11,7 +11,7 @@
|
||||||
<Identity
|
<Identity
|
||||||
Name="19453.net.Rufus"
|
Name="19453.net.Rufus"
|
||||||
Publisher="CN=7AC86D13-3E5A-491A-ADD5-80095C212740"
|
Publisher="CN=7AC86D13-3E5A-491A-ADD5-80095C212740"
|
||||||
Version="3.14.1797.0" />
|
Version="3.14.1798.0" />
|
||||||
|
|
||||||
<Properties>
|
<Properties>
|
||||||
<DisplayName>Rufus</DisplayName>
|
<DisplayName>Rufus</DisplayName>
|
||||||
|
|
|
@ -1323,7 +1323,7 @@ out:
|
||||||
return wintogo_index;
|
return wintogo_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
// http://technet.microsoft.com/en-ie/library/jj721578.aspx
|
// https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-8.1-and-8/jj721578(v=ws.11)
|
||||||
// As opposed to the technet guide above, we don't set internal drives offline,
|
// As opposed to the technet guide above, we don't set internal drives offline,
|
||||||
// due to people wondering why they can't see them by default and we also use
|
// due to people wondering why they can't see them by default and we also use
|
||||||
// bcdedit rather than 'unattend.xml' to disable the recovery environment.
|
// bcdedit rather than 'unattend.xml' to disable the recovery environment.
|
||||||
|
@ -2189,7 +2189,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
}
|
}
|
||||||
} else if (boot_type == BT_GRUB4DOS) {
|
} else if (boot_type == BT_GRUB4DOS) {
|
||||||
grub4dos_dst[0] = drive_name[0];
|
grub4dos_dst[0] = drive_name[0];
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_data_dir));
|
||||||
uprintf("Installing: %s (Grub4DOS loader) %s", grub4dos_dst,
|
uprintf("Installing: %s (Grub4DOS loader) %s", grub4dos_dst,
|
||||||
IsFileInDB(FILES_DIR "\\grub4dos-" GRUB4DOS_VERSION "\\grldr")?"✓":"✗");
|
IsFileInDB(FILES_DIR "\\grub4dos-" GRUB4DOS_VERSION "\\grldr")?"✓":"✗");
|
||||||
if (!CopyFileU(FILES_DIR "\\grub4dos-" GRUB4DOS_VERSION "\\grldr", grub4dos_dst, FALSE))
|
if (!CopyFileU(FILES_DIR "\\grub4dos-" GRUB4DOS_VERSION "\\grldr", grub4dos_dst, FALSE))
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* ISO file extraction
|
* ISO file extraction
|
||||||
* Copyright © 2011-2020 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2021 Pete Batard <pete@akeo.ie>
|
||||||
* Based on libcdio's iso & udf samples:
|
* Based on libcdio's iso & udf samples:
|
||||||
* Copyright © 2003-2014 Rocky Bernstein <rocky@gnu.org>
|
* Copyright © 2003-2014 Rocky Bernstein <rocky@gnu.org>
|
||||||
*
|
*
|
||||||
|
@ -512,7 +512,7 @@ static int udf_extract_files(udf_t *p_udf, udf_dirent_t *p_udf_dirent, const cha
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
print_extracted_file(psz_fullpath, file_length);
|
print_extracted_file(psz_fullpath, file_length);
|
||||||
for (i=0; i<NB_OLD_C32; i++) {
|
for (i = 0; i < NB_OLD_C32; i++) {
|
||||||
if (props.is_old_c32[i] && use_own_c32[i]) {
|
if (props.is_old_c32[i] && use_own_c32[i]) {
|
||||||
static_sprintf(tmp, "%s/syslinux-%s/%s", FILES_DIR, embedded_sl_version_str[0], old_c32_name[i]);
|
static_sprintf(tmp, "%s/syslinux-%s/%s", FILES_DIR, embedded_sl_version_str[0], old_c32_name[i]);
|
||||||
if (CopyFileU(tmp, psz_fullpath, FALSE)) {
|
if (CopyFileU(tmp, psz_fullpath, FALSE)) {
|
||||||
|
@ -869,7 +869,7 @@ BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan)
|
||||||
PrintInfo(0, MSG_202);
|
PrintInfo(0, MSG_202);
|
||||||
} else {
|
} else {
|
||||||
uprintf("Extracting files...\n");
|
uprintf("Extracting files...\n");
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_data_dir));
|
||||||
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);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
* See also: https://utf8everywhere.org
|
* See also: https://utf8everywhere.org
|
||||||
*
|
*
|
||||||
* Copyright © 2010-2020 Pete Batard <pete@akeo.ie>
|
* Copyright © 2010-2021 Pete Batard <pete@akeo.ie>
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -642,6 +642,19 @@ static __inline UINT GetSystemWindowsDirectoryU(char* lpBuffer, UINT uSize)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __inline BOOL SHGetSpecialFolderPathU(HWND hwnd, char* pszPath, int csidl, BOOL fCreate)
|
||||||
|
{
|
||||||
|
BOOL ret;
|
||||||
|
DWORD err = ERROR_INVALID_DATA;
|
||||||
|
// pszPath is at least MAX_PATH characters in size
|
||||||
|
WCHAR wpszPath[MAX_PATH] = { 0 };
|
||||||
|
ret = SHGetSpecialFolderPathW(hwnd, wpszPath, csidl, fCreate);
|
||||||
|
err = GetLastError();
|
||||||
|
wchar_to_utf8_no_alloc(wpszPath, pszPath, MAX_PATH);
|
||||||
|
SetLastError(err);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static __inline DWORD GetTempPathU(DWORD nBufferLength, char* lpBuffer)
|
static __inline DWORD GetTempPathU(DWORD nBufferLength, char* lpBuffer)
|
||||||
{
|
{
|
||||||
DWORD ret = 0, err = ERROR_INVALID_DATA;
|
DWORD ret = 0, err = ERROR_INVALID_DATA;
|
||||||
|
|
|
@ -997,7 +997,7 @@ static DWORD WINAPI DownloadISOThread(LPVOID param)
|
||||||
}
|
}
|
||||||
uprintf("Script signature is valid ✓");
|
uprintf("Script signature is valid ✓");
|
||||||
|
|
||||||
dwExitCode = RunCommand(cmdline, app_dir, TRUE);
|
dwExitCode = RunCommand(cmdline, app_data_dir, TRUE);
|
||||||
uprintf("Exited download script with code: %d", dwExitCode);
|
uprintf("Exited download script with code: %d", dwExitCode);
|
||||||
if ((dwExitCode == 0) && PeekNamedPipe(hPipe, NULL, dwPipeSize, NULL, &dwAvail, NULL) && (dwAvail != 0)) {
|
if ((dwExitCode == 0) && PeekNamedPipe(hPipe, NULL, dwPipeSize, NULL, &dwAvail, NULL) && (dwAvail != 0)) {
|
||||||
url = malloc(dwAvail + 1);
|
url = malloc(dwAvail + 1);
|
||||||
|
|
20
src/rufus.c
20
src/rufus.c
|
@ -129,6 +129,7 @@ int dialog_showing = 0, selection_default = BT_IMAGE, persistence_unit_selection
|
||||||
int default_fs, fs_type, boot_type, partition_type, target_type; // file system, boot type, partition type, target type
|
int default_fs, fs_type, boot_type, partition_type, target_type; // file system, boot type, partition type, target type
|
||||||
int force_update = 0, default_thread_priority = THREAD_PRIORITY_ABOVE_NORMAL;
|
int force_update = 0, default_thread_priority = THREAD_PRIORITY_ABOVE_NORMAL;
|
||||||
char szFolderPath[MAX_PATH], app_dir[MAX_PATH], system_dir[MAX_PATH], temp_dir[MAX_PATH], sysnative_dir[MAX_PATH];
|
char szFolderPath[MAX_PATH], app_dir[MAX_PATH], system_dir[MAX_PATH], temp_dir[MAX_PATH], sysnative_dir[MAX_PATH];
|
||||||
|
char app_data_dir[MAX_PATH];
|
||||||
char embedded_sl_version_str[2][12] = { "?.??", "?.??" };
|
char embedded_sl_version_str[2][12] = { "?.??", "?.??" };
|
||||||
char embedded_sl_version_ext[2][32];
|
char embedded_sl_version_ext[2][32];
|
||||||
char ClusterSizeLabel[MAX_CLUSTER_SIZES][64];
|
char ClusterSizeLabel[MAX_CLUSTER_SIZES][64];
|
||||||
|
@ -982,6 +983,7 @@ BOOL CALLBACK LogCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
log_size = GetDlgItemTextU(hDlg, IDC_LOG_EDIT, log_buffer, log_size);
|
log_size = GetDlgItemTextU(hDlg, IDC_LOG_EDIT, log_buffer, log_size);
|
||||||
if (log_size != 0) {
|
if (log_size != 0) {
|
||||||
log_size--; // remove NUL terminator
|
log_size--; // remove NUL terminator
|
||||||
|
// TODO: Ideally we want to use user dir here
|
||||||
filepath = FileDialog(TRUE, app_dir, &log_ext, 0);
|
filepath = FileDialog(TRUE, app_dir, &log_ext, 0);
|
||||||
if (filepath != NULL) {
|
if (filepath != NULL) {
|
||||||
FileIO(TRUE, filepath, &log_buffer, &log_size);
|
FileIO(TRUE, filepath, &log_buffer, &log_size);
|
||||||
|
@ -1492,7 +1494,7 @@ static DWORD WINAPI BootCheckThread(LPVOID param)
|
||||||
if ((partition_type == PARTITION_STYLE_MBR) && (img_report.has_grub2) && (img_report.grub2_version[0] != 0) &&
|
if ((partition_type == PARTITION_STYLE_MBR) && (img_report.has_grub2) && (img_report.grub2_version[0] != 0) &&
|
||||||
(strcmp(img_report.grub2_version, GRUB2_PACKAGE_VERSION) != 0)) {
|
(strcmp(img_report.grub2_version, GRUB2_PACKAGE_VERSION) != 0)) {
|
||||||
// We may have to download a different Grub2 version if we can find one
|
// We may have to download a different Grub2 version if we can find one
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_data_dir));
|
||||||
IGNORE_RETVAL(_mkdir(FILES_DIR));
|
IGNORE_RETVAL(_mkdir(FILES_DIR));
|
||||||
IGNORE_RETVAL(_chdir(FILES_DIR));
|
IGNORE_RETVAL(_chdir(FILES_DIR));
|
||||||
static_sprintf(tmp, "%s-%s/%s", grub, img_report.grub2_version, core_img);
|
static_sprintf(tmp, "%s-%s/%s", grub, img_report.grub2_version, core_img);
|
||||||
|
@ -1560,7 +1562,7 @@ static DWORD WINAPI BootCheckThread(LPVOID param)
|
||||||
|
|
||||||
if ((partition_type == PARTITION_STYLE_MBR) && HAS_SYSLINUX(img_report)) {
|
if ((partition_type == PARTITION_STYLE_MBR) && HAS_SYSLINUX(img_report)) {
|
||||||
if (SL_MAJOR(img_report.sl_version) < 5) {
|
if (SL_MAJOR(img_report.sl_version) < 5) {
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_data_dir));
|
||||||
for (i=0; i<NB_OLD_C32; i++) {
|
for (i=0; i<NB_OLD_C32; i++) {
|
||||||
if (img_report.has_old_c32[i]) {
|
if (img_report.has_old_c32[i]) {
|
||||||
if (!in_files_dir) {
|
if (!in_files_dir) {
|
||||||
|
@ -1596,7 +1598,7 @@ static DWORD WINAPI BootCheckThread(LPVOID param)
|
||||||
} else if ((img_report.sl_version != embedded_sl_version[1]) ||
|
} else if ((img_report.sl_version != embedded_sl_version[1]) ||
|
||||||
(safe_strcmp(img_report.sl_version_ext, embedded_sl_version_ext[1]) != 0)) {
|
(safe_strcmp(img_report.sl_version_ext, embedded_sl_version_ext[1]) != 0)) {
|
||||||
// Unlike what was the case for v4 and earlier, Syslinux v5+ versions are INCOMPATIBLE with one another!
|
// Unlike what was the case for v4 and earlier, Syslinux v5+ versions are INCOMPATIBLE with one another!
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_data_dir));
|
||||||
IGNORE_RETVAL(_mkdir(FILES_DIR));
|
IGNORE_RETVAL(_mkdir(FILES_DIR));
|
||||||
IGNORE_RETVAL(_chdir(FILES_DIR));
|
IGNORE_RETVAL(_chdir(FILES_DIR));
|
||||||
for (i=0; i<2; i++) {
|
for (i=0; i<2; i++) {
|
||||||
|
@ -1662,7 +1664,7 @@ static DWORD WINAPI BootCheckThread(LPVOID param)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (boot_type == BT_SYSLINUX_V6) {
|
} else if (boot_type == BT_SYSLINUX_V6) {
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_data_dir));
|
||||||
IGNORE_RETVAL(_mkdir(FILES_DIR));
|
IGNORE_RETVAL(_mkdir(FILES_DIR));
|
||||||
IGNORE_RETVAL(_chdir(FILES_DIR));
|
IGNORE_RETVAL(_chdir(FILES_DIR));
|
||||||
static_sprintf(tmp, "%s-%s/%s.%s", syslinux, embedded_sl_version_str[1], ldlinux, ldlinux_ext[2]);
|
static_sprintf(tmp, "%s-%s/%s.%s", syslinux, embedded_sl_version_str[1], ldlinux, ldlinux_ext[2]);
|
||||||
|
@ -1695,7 +1697,7 @@ static DWORD WINAPI BootCheckThread(LPVOID param)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
} else if (boot_type == BT_GRUB4DOS) {
|
} else if (boot_type == BT_GRUB4DOS) {
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_data_dir));
|
||||||
IGNORE_RETVAL(_mkdir(FILES_DIR));
|
IGNORE_RETVAL(_mkdir(FILES_DIR));
|
||||||
IGNORE_RETVAL(_chdir(FILES_DIR));
|
IGNORE_RETVAL(_chdir(FILES_DIR));
|
||||||
static_sprintf(tmp, "grub4dos-%s/grldr", GRUB4DOS_VERSION);
|
static_sprintf(tmp, "grub4dos-%s/grldr", GRUB4DOS_VERSION);
|
||||||
|
@ -3011,7 +3013,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
for (i = 0; i < ARRAYSIZE(ps_cmd); i++) {
|
for (i = 0; i < ARRAYSIZE(ps_cmd); i++) {
|
||||||
// Run the PowerShell commands
|
// Run the PowerShell commands
|
||||||
static_sprintf(cmdline, "%s -NonInteractive -NoProfile -Command %s", tmp, ps_cmd[i]);
|
static_sprintf(cmdline, "%s -NonInteractive -NoProfile -Command %s", tmp, ps_cmd[i]);
|
||||||
if (RunCommand(cmdline, app_dir, TRUE) != 1)
|
if (RunCommand(cmdline, app_data_dir, TRUE) != 1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == ARRAYSIZE(ps_cmd)) {
|
if (i == ARRAYSIZE(ps_cmd)) {
|
||||||
|
@ -3191,6 +3193,10 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
||||||
uprintf("Could not get temp directory: %s", WindowsErrorString());
|
uprintf("Could not get temp directory: %s", WindowsErrorString());
|
||||||
static_strcpy(temp_dir, ".\\");
|
static_strcpy(temp_dir, ".\\");
|
||||||
}
|
}
|
||||||
|
if (!SHGetSpecialFolderPathU(NULL, app_data_dir, CSIDL_LOCAL_APPDATA, FALSE)) {
|
||||||
|
uprintf("Could not get app data directory: %s", WindowsErrorString());
|
||||||
|
static_strcpy(app_data_dir, temp_dir);
|
||||||
|
}
|
||||||
// Construct Sysnative ourselves as there is no GetSysnativeDirectory() call
|
// Construct Sysnative ourselves as there is no GetSysnativeDirectory() call
|
||||||
// By default (64bit app running on 64 bit OS or 32 bit app running on 32 bit OS)
|
// By default (64bit app running on 64 bit OS or 32 bit app running on 32 bit OS)
|
||||||
// Sysnative and System32 are the same
|
// Sysnative and System32 are the same
|
||||||
|
@ -3640,7 +3646,7 @@ relaunch:
|
||||||
}
|
}
|
||||||
// Alt-D => Delete the 'rufus_files' subdirectory
|
// Alt-D => Delete the 'rufus_files' subdirectory
|
||||||
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'D')) {
|
if ((msg.message == WM_SYSKEYDOWN) && (msg.wParam == 'D')) {
|
||||||
static_sprintf(tmp_path, "%s\\%s", app_dir, FILES_DIR);
|
static_sprintf(tmp_path, "%s\\%s", app_data_dir, FILES_DIR);
|
||||||
PrintStatus(STATUS_MSG_TIMEOUT, MSG_264, tmp_path);
|
PrintStatus(STATUS_MSG_TIMEOUT, MSG_264, tmp_path);
|
||||||
SHDeleteDirectoryExU(NULL, tmp_path, FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMATION);
|
SHDeleteDirectoryExU(NULL, tmp_path, FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMATION);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -115,11 +115,11 @@
|
||||||
#endif
|
#endif
|
||||||
#define DOWNLOAD_URL RUFUS_URL "/downloads"
|
#define DOWNLOAD_URL RUFUS_URL "/downloads"
|
||||||
#define FILES_URL RUFUS_URL "/files"
|
#define FILES_URL RUFUS_URL "/files"
|
||||||
|
#define FILES_DIR APPLICATION_NAME
|
||||||
#define FIDO_VERSION "z1"
|
#define FIDO_VERSION "z1"
|
||||||
#define SECURE_BOOT_MORE_INFO_URL "https://github.com/pbatard/rufus/wiki/FAQ#Why_do_I_need_to_disable_Secure_Boot_to_use_UEFINTFS"
|
#define SECURE_BOOT_MORE_INFO_URL "https://github.com/pbatard/rufus/wiki/FAQ#Why_do_I_need_to_disable_Secure_Boot_to_use_UEFINTFS"
|
||||||
#define WPPRECORDER_MORE_INFO_URL "https://github.com/pbatard/rufus/wiki/FAQ#BSODs_with_Windows_To_Go_drives_created_from_Windows_10_1809_ISOs"
|
#define WPPRECORDER_MORE_INFO_URL "https://github.com/pbatard/rufus/wiki/FAQ#BSODs_with_Windows_To_Go_drives_created_from_Windows_10_1809_ISOs"
|
||||||
#define SEVENZIP_URL "https://www.7-zip.org"
|
#define SEVENZIP_URL "https://www.7-zip.org"
|
||||||
#define FILES_DIR "rufus_files"
|
|
||||||
#define DEFAULT_ESP_MOUNT_POINT "S:\\"
|
#define DEFAULT_ESP_MOUNT_POINT "S:\\"
|
||||||
#define IS_POWER_OF_2(x) ((x != 0) && (((x) & ((x) - 1)) == 0))
|
#define IS_POWER_OF_2(x) ((x != 0) && (((x) & ((x) - 1)) == 0))
|
||||||
#define IGNORE_RETVAL(expr) do { (void)(expr); } while(0)
|
#define IGNORE_RETVAL(expr) do { (void)(expr); } while(0)
|
||||||
|
@ -480,7 +480,7 @@ extern int fs_type, boot_type, partition_type, target_type;
|
||||||
extern unsigned long syslinux_ldlinux_len[2];
|
extern unsigned long syslinux_ldlinux_len[2];
|
||||||
extern char WindowsVersionStr[128], ubuffer[UBUFFER_SIZE], embedded_sl_version_str[2][12];
|
extern char WindowsVersionStr[128], ubuffer[UBUFFER_SIZE], embedded_sl_version_str[2][12];
|
||||||
extern char szFolderPath[MAX_PATH], app_dir[MAX_PATH], temp_dir[MAX_PATH], system_dir[MAX_PATH], sysnative_dir[MAX_PATH];
|
extern char szFolderPath[MAX_PATH], app_dir[MAX_PATH], temp_dir[MAX_PATH], system_dir[MAX_PATH], sysnative_dir[MAX_PATH];
|
||||||
extern char *image_path, *fido_url;
|
extern char app_data_dir[MAX_PATH], *image_path, *fido_url;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Shared prototypes
|
* Shared prototypes
|
||||||
|
|
10
src/rufus.rc
10
src/rufus.rc
|
@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 232, 326
|
IDD_DIALOG DIALOGEX 12, 12, 232, 326
|
||||||
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_ACCEPTFILES
|
EXSTYLE WS_EX_ACCEPTFILES
|
||||||
CAPTION "Rufus 3.14.1797"
|
CAPTION "Rufus 3.14.1798"
|
||||||
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
|
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
|
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
|
||||||
|
@ -395,8 +395,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 3,14,1797,0
|
FILEVERSION 3,14,1798,0
|
||||||
PRODUCTVERSION 3,14,1797,0
|
PRODUCTVERSION 3,14,1798,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -414,13 +414,13 @@ BEGIN
|
||||||
VALUE "Comments", "https://rufus.ie"
|
VALUE "Comments", "https://rufus.ie"
|
||||||
VALUE "CompanyName", "Akeo Consulting"
|
VALUE "CompanyName", "Akeo Consulting"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "3.14.1797"
|
VALUE "FileVersion", "3.14.1798"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2021 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2021 Pete Batard (GPL v3)"
|
||||||
VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html"
|
VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html"
|
||||||
VALUE "OriginalFilename", "rufus-3.14.exe"
|
VALUE "OriginalFilename", "rufus-3.14.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "3.14.1797"
|
VALUE "ProductVersion", "3.14.1798"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* Rufus: The Reliable USB Formatting Utility
|
* Rufus: The Reliable USB Formatting Utility
|
||||||
* Standard User I/O Routines (logging, status, error, etc.)
|
* Standard User I/O Routines (logging, status, error, etc.)
|
||||||
* Copyright © 2020 Mattiwatti <mattiwatti@gmail.com>
|
* Copyright © 2020 Mattiwatti <mattiwatti@gmail.com>
|
||||||
* Copyright © 2011-2020 Pete Batard <pete@akeo.ie>
|
* Copyright © 2011-2021 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
|
||||||
|
@ -650,11 +650,11 @@ const char *WindowsErrorString(void)
|
||||||
&err_string[presize], sizeof(err_string)-(DWORD)strlen(err_string), NULL);
|
&err_string[presize], sizeof(err_string)-(DWORD)strlen(err_string), NULL);
|
||||||
if (size == 0) {
|
if (size == 0) {
|
||||||
format_error = GetLastError();
|
format_error = GetLastError();
|
||||||
if ((format_error) && (format_error != 0x13D)) // 0x13D, decode error, is returned for unknown codes
|
if ((format_error) && (format_error != ERROR_MR_MID_NOT_FOUND) && (format_error != ERROR_MUI_FILE_NOT_LOADED))
|
||||||
static_sprintf(err_string, "Windows error code 0x%08lX (FormatMessage error code 0x%08lX)",
|
static_sprintf(err_string, "Windows error code 0x%08lX (FormatMessage error code 0x%08lX)",
|
||||||
error_code, format_error);
|
error_code, format_error);
|
||||||
else
|
else
|
||||||
static_sprintf(err_string, "Unknown error 0x%08lX", error_code);
|
static_sprintf(err_string, "Windows error code 0x%08lX", error_code);
|
||||||
} else {
|
} else {
|
||||||
// Microsoft may suffix CRLF to error messages, which we need to remove...
|
// Microsoft may suffix CRLF to error messages, which we need to remove...
|
||||||
assert(presize > 2);
|
assert(presize > 2);
|
||||||
|
|
|
@ -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-2020 Pete Batard
|
* Copyright 2012-2021 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
|
||||||
*
|
*
|
||||||
|
@ -161,7 +161,7 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter, int file_system)
|
||||||
|
|
||||||
/* Access a copy of the ldlinux.sys & ldlinux.bss resources (downloaded or embedded) */
|
/* Access a copy of the ldlinux.sys & ldlinux.bss resources (downloaded or embedded) */
|
||||||
if ((syslinux_ldlinux_len[0] != 0) && (syslinux_ldlinux_len[1] != 0)) {
|
if ((syslinux_ldlinux_len[0] != 0) && (syslinux_ldlinux_len[1] != 0)) {
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_data_dir));
|
||||||
for (i=0; i<2; i++) {
|
for (i=0; i<2; i++) {
|
||||||
syslinux_ldlinux[i] = (unsigned char*) malloc(syslinux_ldlinux_len[i]);
|
syslinux_ldlinux[i] = (unsigned char*) malloc(syslinux_ldlinux_len[i]);
|
||||||
if (syslinux_ldlinux[i] == NULL)
|
if (syslinux_ldlinux[i] == NULL)
|
||||||
|
@ -330,7 +330,7 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter, int file_system)
|
||||||
uprintf("Successfully wrote Syslinux boot record");
|
uprintf("Successfully wrote Syslinux boot record");
|
||||||
|
|
||||||
if (boot_type == BT_SYSLINUX_V6) {
|
if (boot_type == BT_SYSLINUX_V6) {
|
||||||
IGNORE_RETVAL(_chdirU(app_dir));
|
IGNORE_RETVAL(_chdirU(app_data_dir));
|
||||||
static_sprintf(path, "%s/%s-%s", FILES_DIR, syslinux, embedded_sl_version_str[1]);
|
static_sprintf(path, "%s/%s-%s", FILES_DIR, syslinux, embedded_sl_version_str[1]);
|
||||||
IGNORE_RETVAL(_chdir(path));
|
IGNORE_RETVAL(_chdir(path));
|
||||||
static_sprintf(path, "%C:\\%s.%s", drive_letter, ldlinux, ldlinux_ext[2]);
|
static_sprintf(path, "%C:\\%s.%s", drive_letter, ldlinux, ldlinux_ext[2]);
|
||||||
|
|
Loading…
Reference in a new issue