mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[iso] add Windows ISO version report
* Use sources/compatresources.dll, when available, to try to detect the Windows ISO version and build. * Also report what facility we use for formatting.
This commit is contained in:
parent
e6a967c5c9
commit
a10b8e8c54
11 changed files with 107 additions and 23 deletions
|
@ -133,7 +133,7 @@
|
||||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -157,7 +157,7 @@
|
||||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -183,7 +183,7 @@
|
||||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -214,7 +214,7 @@
|
||||||
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -267,7 +267,7 @@
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -296,7 +296,7 @@
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
@ -328,7 +328,7 @@
|
||||||
<StringPooling>true</StringPooling>
|
<StringPooling>true</StringPooling>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
<UACExecutionLevel>RequireAdministrator</UACExecutionLevel>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
|
|
@ -3,6 +3,7 @@ o Version 3.16 (2021.10.??)
|
||||||
Fix BIOS boot support for Arch derivatives
|
Fix BIOS boot support for Arch derivatives
|
||||||
Fix removal of some boot entries for Ubuntu derivatives
|
Fix removal of some boot entries for Ubuntu derivatives
|
||||||
Fix log not being saved on exit
|
Fix log not being saved on exit
|
||||||
|
Add UEFI Shell ISO downloads
|
||||||
Add support for Intel NUC card readers
|
Add support for Intel NUC card readers
|
||||||
Improve Windows version reporting
|
Improve Windows version reporting
|
||||||
Improve Windows 11 support
|
Improve Windows 11 support
|
||||||
|
|
|
@ -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.16.1830.0" />
|
Version="3.16.1831.0" />
|
||||||
|
|
||||||
<Properties>
|
<Properties>
|
||||||
<DisplayName>Rufus</DisplayName>
|
<DisplayName>Rufus</DisplayName>
|
||||||
|
|
|
@ -16,4 +16,4 @@ rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/sy
|
||||||
-DEXT2_FLAT_INCLUDES=0 -DSOLUTION=rufus
|
-DEXT2_FLAT_INCLUDES=0 -DSOLUTION=rufus
|
||||||
rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows
|
rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows
|
||||||
rufus_LDADD = rufus_rc.o bled/libbled.a ext2fs/libext2fs.a ms-sys/libmssys.a syslinux/libfat/libfat.a syslinux/libinstaller/libinstaller.a syslinux/win/libwin.a \
|
rufus_LDADD = rufus_rc.o bled/libbled.a ext2fs/libext2fs.a ms-sys/libmssys.a syslinux/libfat/libfat.a syslinux/libinstaller/libinstaller.a syslinux/win/libwin.a \
|
||||||
libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lwintrust -lcomdlg32 -lcomctl32 -luuid -lpsapi
|
libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lwintrust -lcomdlg32 -lcomctl32 -luuid -lpsapi -lversion
|
||||||
|
|
|
@ -282,7 +282,7 @@ rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/sy
|
||||||
|
|
||||||
rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows
|
rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows
|
||||||
rufus_LDADD = rufus_rc.o bled/libbled.a ext2fs/libext2fs.a ms-sys/libmssys.a syslinux/libfat/libfat.a syslinux/libinstaller/libinstaller.a syslinux/win/libwin.a \
|
rufus_LDADD = rufus_rc.o bled/libbled.a ext2fs/libext2fs.a ms-sys/libmssys.a syslinux/libfat/libfat.a syslinux/libinstaller/libinstaller.a syslinux/win/libwin.a \
|
||||||
libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lwintrust -lcomdlg32 -lcomctl32 -luuid -lpsapi
|
libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lwintrust -lcomdlg32 -lcomctl32 -luuid -lpsapi -lversion
|
||||||
|
|
||||||
all: all-recursive
|
all: all-recursive
|
||||||
|
|
||||||
|
|
12
src/format.c
12
src/format.c
|
@ -342,10 +342,12 @@ static BOOL FormatNativeVds(DWORD DriveIndex, uint64_t PartitionOffset, DWORD Cl
|
||||||
WCHAR *wVolumeName = NULL, *wLabel = utf8_to_wchar(Label), *wFSName = utf8_to_wchar(FSName);
|
WCHAR *wVolumeName = NULL, *wLabel = utf8_to_wchar(Label), *wFSName = utf8_to_wchar(FSName);
|
||||||
|
|
||||||
if ((strcmp(FSName, FileSystemLabel[FS_EXFAT]) == 0) && !((dur_mins == 0) && (dur_secs == 0))) {
|
if ((strcmp(FSName, FileSystemLabel[FS_EXFAT]) == 0) && !((dur_mins == 0) && (dur_secs == 0))) {
|
||||||
PrintInfoDebug(0, MSG_220, FSName, dur_mins, dur_secs);
|
PrintInfo(0, MSG_220, FSName, dur_mins, dur_secs);
|
||||||
} else {
|
} else {
|
||||||
PrintInfoDebug(0, MSG_222, FSName);
|
PrintInfo(0, MSG_222, FSName);
|
||||||
}
|
}
|
||||||
|
uprintf("Formatting to %s (using VDS)", FSName);
|
||||||
|
|
||||||
UpdateProgressWithInfoInit(NULL, TRUE);
|
UpdateProgressWithInfoInit(NULL, TRUE);
|
||||||
VolumeName = GetLogicalName(DriveIndex, PartitionOffset, TRUE, TRUE);
|
VolumeName = GetLogicalName(DriveIndex, PartitionOffset, TRUE, TRUE);
|
||||||
wVolumeName = utf8_to_wchar(VolumeName);
|
wVolumeName = utf8_to_wchar(VolumeName);
|
||||||
|
@ -585,10 +587,12 @@ static BOOL FormatNative(DWORD DriveIndex, uint64_t PartitionOffset, DWORD Clust
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if ((strcmp(FSName, FileSystemLabel[FS_EXFAT]) == 0) && !((dur_mins == 0) && (dur_secs == 0))) {
|
if ((strcmp(FSName, FileSystemLabel[FS_EXFAT]) == 0) && !((dur_mins == 0) && (dur_secs == 0))) {
|
||||||
PrintInfoDebug(0, MSG_220, FSName, dur_mins, dur_secs);
|
PrintInfo(0, MSG_220, FSName, dur_mins, dur_secs);
|
||||||
} else {
|
} else {
|
||||||
PrintInfoDebug(0, MSG_222, FSName);
|
PrintInfo(0, MSG_222, FSName);
|
||||||
}
|
}
|
||||||
|
uprintf("Formatting to %s (using IFS)", FSName);
|
||||||
|
|
||||||
VolumeName = GetLogicalName(DriveIndex, PartitionOffset, TRUE, TRUE);
|
VolumeName = GetLogicalName(DriveIndex, PartitionOffset, TRUE, TRUE);
|
||||||
wVolumeName = utf8_to_wchar(VolumeName);
|
wVolumeName = utf8_to_wchar(VolumeName);
|
||||||
if (wVolumeName == NULL) {
|
if (wVolumeName == NULL) {
|
||||||
|
|
41
src/iso.c
41
src/iso.c
|
@ -102,6 +102,7 @@ static const char* wininst_name[] = { "install.wim", "install.esd", "install.swm
|
||||||
// If the disc was mastered properly, GRUB/EFI will take care of itself
|
// If the disc was mastered properly, GRUB/EFI will take care of itself
|
||||||
static const char* grub_dirname = "/boot/grub/i386-pc";
|
static const char* grub_dirname = "/boot/grub/i386-pc";
|
||||||
static const char* grub_cfg[] = { "grub.cfg", "loopback.cfg" };
|
static const char* grub_cfg[] = { "grub.cfg", "loopback.cfg" };
|
||||||
|
static const char* compatresources_dll = "compatresources.dll";
|
||||||
static const char* menu_cfg = "menu.cfg";
|
static const char* menu_cfg = "menu.cfg";
|
||||||
// NB: Do not alter the order of the array below without validating hardcoded indexes in check_iso_props
|
// NB: Do not alter the order of the array below without validating hardcoded indexes in check_iso_props
|
||||||
static const char* syslinux_cfg[] = { "isolinux.cfg", "syslinux.cfg", "extlinux.conf", "txt.cfg" };
|
static const char* syslinux_cfg[] = { "isolinux.cfg", "syslinux.cfg", "extlinux.conf", "txt.cfg" };
|
||||||
|
@ -266,17 +267,22 @@ static BOOL check_iso_props(const char* psz_dirname, int64_t file_length, const
|
||||||
img_report.has_efi |= (2 << i); // start at 2 since "bootmgr.efi" is bit 0
|
img_report.has_efi |= (2 << i); // start at 2 since "bootmgr.efi" is bit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for "install.###" in "###/sources/"
|
|
||||||
if (psz_dirname != NULL) {
|
if (psz_dirname != NULL) {
|
||||||
if (safe_stricmp(&psz_dirname[max(0, ((int)safe_strlen(psz_dirname)) - ((int)strlen(sources_str)))], sources_str) == 0) {
|
if (safe_stricmp(&psz_dirname[max(0, ((int)safe_strlen(psz_dirname)) -
|
||||||
|
((int)strlen(sources_str)))], sources_str) == 0) {
|
||||||
|
// Check for "install.###" in "###/sources/"
|
||||||
for (i = 0; i < ARRAYSIZE(wininst_name); i++) {
|
for (i = 0; i < ARRAYSIZE(wininst_name); i++) {
|
||||||
if (safe_stricmp(psz_basename, wininst_name[i]) == 0) {
|
if (safe_stricmp(psz_basename, wininst_name[i]) == 0) {
|
||||||
if (img_report.wininst_index < MAX_WININST) {
|
if (img_report.wininst_index < MAX_WININST) {
|
||||||
static_sprintf(img_report.wininst_path[img_report.wininst_index], "?:%s", psz_fullpath);
|
static_sprintf(img_report.wininst_path[img_report.wininst_index],
|
||||||
|
"?:%s", psz_fullpath);
|
||||||
img_report.wininst_index++;
|
img_report.wininst_index++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Check for "compatresources.dll" in "###/sources/"
|
||||||
|
if (safe_stricmp(psz_basename, compatresources_dll) == 0)
|
||||||
|
img_report.has_compatresources_dll = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1099,6 +1105,35 @@ out:
|
||||||
img_report.has_grub2 = FALSE;
|
img_report.has_grub2 = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (img_report.has_compatresources_dll) {
|
||||||
|
// So that we don't have to extract the XML index from boot/install.wim
|
||||||
|
// to find if we're dealing with Windows 11, we isolate the version from
|
||||||
|
// sources/compatresources.dll, which is much faster...
|
||||||
|
VS_FIXEDFILEINFO* ver_info = NULL;
|
||||||
|
DWORD ver_handle = 0, ver_size;
|
||||||
|
UINT value_len = 0;
|
||||||
|
// coverity[swapped_arguments]
|
||||||
|
if (GetTempFileNameU(temp_dir, APPLICATION_NAME, 0, path) != 0) {
|
||||||
|
size = (size_t)ExtractISOFile(src_iso, "sources/compatresources.dll", path, FILE_ATTRIBUTE_NORMAL);
|
||||||
|
ver_size = GetFileVersionInfoSizeU(path, &ver_handle);
|
||||||
|
if (ver_size != 0) {
|
||||||
|
buf = malloc(ver_size);
|
||||||
|
if ((buf != NULL) && GetFileVersionInfoU(path, ver_handle, ver_size, buf) &&
|
||||||
|
VerQueryValueA(buf, "\\", (LPVOID)&ver_info, &value_len) && (value_len != 0)) {
|
||||||
|
if (ver_info->dwSignature == VS_FFI_SIGNATURE) {
|
||||||
|
img_report.win_version.major = HIWORD(ver_info->dwFileVersionMS);
|
||||||
|
img_report.win_version.minor = LOWORD(ver_info->dwFileVersionMS);
|
||||||
|
img_report.win_version.build = HIWORD(ver_info->dwFileVersionLS);
|
||||||
|
img_report.win_version.revision = LOWORD(ver_info->dwFileVersionLS);
|
||||||
|
if ((img_report.win_version.major == 10) && (img_report.win_version.build > 20000))
|
||||||
|
img_report.win_version.major = 11;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(buf);
|
||||||
|
}
|
||||||
|
DeleteFileU(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
StrArrayDestroy(&config_path);
|
StrArrayDestroy(&config_path);
|
||||||
StrArrayDestroy(&isolinux_path);
|
StrArrayDestroy(&isolinux_path);
|
||||||
SendMessage(hMainDialog, UM_PROGRESS_EXIT, 0, 0);
|
SendMessage(hMainDialog, UM_PROGRESS_EXIT, 0, 0);
|
||||||
|
|
|
@ -720,6 +720,32 @@ static __inline DWORD GetModuleFileNameExU(HANDLE hProcess, HMODULE hModule, cha
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __inline DWORD GetFileVersionInfoSizeU(const char* lpFileName, LPDWORD lpdwHandle)
|
||||||
|
{
|
||||||
|
DWORD ret = 0, err = ERROR_INVALID_DATA;
|
||||||
|
wconvert(lpFileName);
|
||||||
|
ret = GetFileVersionInfoSizeW(wlpFileName, lpdwHandle);
|
||||||
|
err = GetLastError();
|
||||||
|
wfree(lpFileName);
|
||||||
|
SetLastError(err);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline BOOL GetFileVersionInfoU(const char* lpFileName, DWORD dwHandle, DWORD dwLen, LPVOID lpData)
|
||||||
|
{
|
||||||
|
BOOL ret = FALSE;
|
||||||
|
DWORD err = ERROR_INVALID_DATA;
|
||||||
|
wconvert(lpFileName);
|
||||||
|
if (dwHandle != 0)
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
else
|
||||||
|
ret = GetFileVersionInfoW(wlpFileName, dwHandle, dwLen, lpData);
|
||||||
|
err = GetLastError();
|
||||||
|
wfree(lpFileName);
|
||||||
|
SetLastError(err);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static __inline DWORD GetFullPathNameU(const char* lpFileName, DWORD nBufferLength, char* lpBuffer, char** lpFilePart)
|
static __inline DWORD GetFullPathNameU(const char* lpFileName, DWORD nBufferLength, char* lpBuffer, char** lpFilePart)
|
||||||
{
|
{
|
||||||
DWORD ret = 0, err = ERROR_INVALID_DATA;
|
DWORD ret = 0, err = ERROR_INVALID_DATA;
|
||||||
|
|
|
@ -1055,6 +1055,15 @@ static void DisplayISOProps(void)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
uprintf("ISO label: '%s'", img_report.label);
|
uprintf("ISO label: '%s'", img_report.label);
|
||||||
|
if (img_report.win_version.major != 0) {
|
||||||
|
if (img_report.win_version.minor == 0)
|
||||||
|
uprintf(" Detected: Windows %d ISO (Build %d.%d)", img_report.win_version.major,
|
||||||
|
img_report.win_version.build, img_report.win_version.revision);
|
||||||
|
else
|
||||||
|
uprintf(" Detected: Windows %d.%d ISO (Build %d.%d)", img_report.win_version.major,
|
||||||
|
img_report.win_version.minor, img_report.win_version.build, img_report.win_version.revision);
|
||||||
|
}
|
||||||
|
|
||||||
uprintf(" Size: %s (Projected)", SizeToHumanReadable(img_report.projected_size, FALSE, FALSE));
|
uprintf(" Size: %s (Projected)", SizeToHumanReadable(img_report.projected_size, FALSE, FALSE));
|
||||||
if (img_report.mismatch_size > 0) {
|
if (img_report.mismatch_size > 0) {
|
||||||
uprintf(" ERROR: Detected that file on disk has been truncated by %s!",
|
uprintf(" ERROR: Detected that file on disk has been truncated by %s!",
|
||||||
|
|
|
@ -333,6 +333,13 @@ enum checksum_type {
|
||||||
#define SYMLINKS_RR 0x01
|
#define SYMLINKS_RR 0x01
|
||||||
#define SYMLINKS_UDF 0x02
|
#define SYMLINKS_UDF 0x02
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint16_t major;
|
||||||
|
uint16_t minor;
|
||||||
|
uint16_t build;
|
||||||
|
uint16_t revision;
|
||||||
|
} winver_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char label[192]; // 3*64 to account for UTF-8
|
char label[192]; // 3*64 to account for UTF-8
|
||||||
char usb_label[192]; // converted USB label for workaround
|
char usb_label[192]; // converted USB label for workaround
|
||||||
|
@ -367,10 +374,12 @@ typedef struct {
|
||||||
BOOLEAN needs_syslinux_overwrite;
|
BOOLEAN needs_syslinux_overwrite;
|
||||||
BOOLEAN has_grub4dos;
|
BOOLEAN has_grub4dos;
|
||||||
BOOLEAN has_grub2;
|
BOOLEAN has_grub2;
|
||||||
|
BOOLEAN has_compatresources_dll;
|
||||||
BOOLEAN has_kolibrios;
|
BOOLEAN has_kolibrios;
|
||||||
BOOLEAN uses_casper;
|
BOOLEAN uses_casper;
|
||||||
BOOLEAN uses_minint;
|
BOOLEAN uses_minint;
|
||||||
BOOLEAN compression_type;
|
BOOLEAN compression_type;
|
||||||
|
winver_t win_version; // Windows ISO version
|
||||||
uint16_t sl_version; // Syslinux/Isolinux version
|
uint16_t sl_version; // Syslinux/Isolinux version
|
||||||
char sl_version_str[12];
|
char sl_version_str[12];
|
||||||
char sl_version_ext[32];
|
char sl_version_ext[32];
|
||||||
|
|
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.16.1830"
|
CAPTION "Rufus 3.16.1831"
|
||||||
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,16,1830,0
|
FILEVERSION 3,16,1831,0
|
||||||
PRODUCTVERSION 3,16,1830,0
|
PRODUCTVERSION 3,16,1831,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.16.1830"
|
VALUE "FileVersion", "3.16.1831"
|
||||||
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.16.exe"
|
VALUE "OriginalFilename", "rufus-3.16.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "3.16.1830"
|
VALUE "ProductVersion", "3.16.1831"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
Loading…
Reference in a new issue