mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[mbr] added mbr detection
* also added write_data() for Windows in file.h * also merged/removed fat16/32 includes * also removed disk-signature for zeroed MBR detection
This commit is contained in:
parent
2d8a674b88
commit
88143701ed
13 changed files with 116 additions and 105 deletions
|
@ -173,10 +173,7 @@
|
||||||
<ClInclude Include="..\inc\br_fat32_0x52.h" />
|
<ClInclude Include="..\inc\br_fat32_0x52.h" />
|
||||||
<ClInclude Include="..\inc\fat12.h" />
|
<ClInclude Include="..\inc\fat12.h" />
|
||||||
<ClInclude Include="..\inc\fat16.h" />
|
<ClInclude Include="..\inc\fat16.h" />
|
||||||
<ClInclude Include="..\inc\fat16fd.h" />
|
|
||||||
<ClInclude Include="..\inc\fat32.h" />
|
<ClInclude Include="..\inc\fat32.h" />
|
||||||
<ClInclude Include="..\inc\fat32fd.h" />
|
|
||||||
<ClInclude Include="..\inc\fat32nt.h" />
|
|
||||||
<ClInclude Include="..\inc\file.h" />
|
<ClInclude Include="..\inc\file.h" />
|
||||||
<ClInclude Include="..\inc\label_11_char.h" />
|
<ClInclude Include="..\inc\label_11_char.h" />
|
||||||
<ClInclude Include="..\inc\mbr_2000.h" />
|
<ClInclude Include="..\inc\mbr_2000.h" />
|
||||||
|
|
|
@ -110,18 +110,9 @@
|
||||||
<ClInclude Include="..\inc\fat16.h">
|
<ClInclude Include="..\inc\fat16.h">
|
||||||
<Filter>Header Files\inc</Filter>
|
<Filter>Header Files\inc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\inc\fat16fd.h">
|
|
||||||
<Filter>Header Files\inc</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\inc\fat32.h">
|
<ClInclude Include="..\inc\fat32.h">
|
||||||
<Filter>Header Files\inc</Filter>
|
<Filter>Header Files\inc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\inc\fat32fd.h">
|
|
||||||
<Filter>Header Files\inc</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\inc\fat32nt.h">
|
|
||||||
<Filter>Header Files\inc</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\inc\file.h">
|
<ClInclude Include="..\inc\file.h">
|
||||||
<Filter>Header Files\inc</Filter>
|
<Filter>Header Files\inc</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
1
fat16.c
1
fat16.c
|
@ -20,7 +20,6 @@
|
||||||
|
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "fat16.h"
|
#include "fat16.h"
|
||||||
#include "fat16fd.h"
|
|
||||||
|
|
||||||
int is_fat_16_fs(FILE *fp)
|
int is_fat_16_fs(FILE *fp)
|
||||||
{
|
{
|
||||||
|
|
2
fat32.c
2
fat32.c
|
@ -20,8 +20,6 @@
|
||||||
|
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
#include "fat32.h"
|
#include "fat32.h"
|
||||||
#include "fat32fd.h"
|
|
||||||
#include "fat32nt.h"
|
|
||||||
|
|
||||||
int is_fat_32_fs(FILE *fp)
|
int is_fat_32_fs(FILE *fp)
|
||||||
{
|
{
|
||||||
|
|
53
file.c
53
file.c
|
@ -1,6 +1,6 @@
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
Copyright (C) 2009 Henrik Carlqvist
|
Copyright (C) 2009 Henrik Carlqvist
|
||||||
Modified for Windows/Rufus (C) 2011 Pete Batard
|
Modified for Rufus/Windows (C) 2011 Pete Batard
|
||||||
|
|
||||||
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
|
||||||
|
@ -106,38 +106,37 @@ int contains_data(FILE *fp, unsigned long ulPosition,
|
||||||
if(memcmp(pData, &aucBuf[ulPosition - ulStartSector*ulSectorSize], uiLen))
|
if(memcmp(pData, &aucBuf[ulPosition - ulStartSector*ulSectorSize], uiLen))
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/*
|
|
||||||
// ONLY WORKS IN SECTORS!!!
|
|
||||||
ptr.QuadPart = ulPosition;
|
|
||||||
uprintf("HANDLE = %p\n", (HANDLE)fp);
|
|
||||||
if (!SetFilePointerEx((HANDLE)fp, ptr, NULL, FILE_BEGIN))
|
|
||||||
{
|
|
||||||
uprintf("Could not access byte %d - %s\n", ulPosition, WindowsErrorString());
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
uprintf("SEEK to %d OK\n", WindowsErrorString());
|
|
||||||
|
|
||||||
uiLen = 512;
|
|
||||||
if ((!ReadFile((HANDLE)fp, aucBuf, (DWORD)uiLen, &size, NULL)) || (size != (DWORD)uiLen)) {
|
|
||||||
uprintf("Read error (size = %d vs %d) - %s\n", size, (DWORD)uiLen, WindowsErrorString());
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
uiLen = 2;
|
|
||||||
uprintf("aucBuf[0] = %02X, aucBuf[1] = %02X\n", aucBuf[0], aucBuf[1]);
|
|
||||||
if(memcmp(pData, aucBuf, uiLen))
|
|
||||||
return 0;
|
|
||||||
return 1;
|
|
||||||
*/
|
|
||||||
} /* contains_data */
|
} /* contains_data */
|
||||||
|
|
||||||
|
/* May read/write the same sector many times, but compatible with existing ms-sys */
|
||||||
int write_data(FILE *fp, unsigned long ulPosition,
|
int write_data(FILE *fp, unsigned long ulPosition,
|
||||||
const void *pData, unsigned int uiLen)
|
const void *pData, unsigned int uiLen)
|
||||||
{
|
{
|
||||||
if(fseek(fp, ulPosition, SEEK_SET))
|
unsigned char aucBuf[MAX_DATA_LEN];
|
||||||
|
HANDLE hDrive = (HANDLE)fp->_ptr;
|
||||||
|
unsigned long ulSectorSize = (unsigned long)fp->_bufsiz;
|
||||||
|
unsigned long ulStartSector, ulEndSector, ulNumSectors;
|
||||||
|
|
||||||
|
ulStartSector = ulPosition/ulSectorSize;
|
||||||
|
ulEndSector = (ulPosition+uiLen+ulSectorSize-1)/ulSectorSize;
|
||||||
|
ulNumSectors = ulEndSector - ulStartSector;
|
||||||
|
|
||||||
|
if((ulNumSectors*ulSectorSize) > MAX_DATA_LEN)
|
||||||
|
{
|
||||||
|
uprintf("Please increase MAX_DATA_LEN in file.h\n");
|
||||||
return 0;
|
return 0;
|
||||||
if(!fwrite(pData, uiLen, 1, fp))
|
}
|
||||||
|
|
||||||
|
/* Data to write may not be aligned on a sector boundary => read into a sector buffer first */
|
||||||
|
if(!read_sectors(hDrive, ulSectorSize, ulStartSector,
|
||||||
|
ulNumSectors, aucBuf, sizeof(aucBuf)))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if(!memcpy(&aucBuf[ulPosition - ulStartSector*ulSectorSize], pData, uiLen))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if(!write_sectors(hDrive, ulSectorSize, ulStartSector,
|
||||||
|
ulNumSectors, aucBuf, sizeof(aucBuf)))
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
} /* write_data */
|
} /* write_data */
|
||||||
|
|
|
@ -20,4 +20,13 @@ int entire_fat_16_br_matches(FILE *fp);
|
||||||
FALSE */
|
FALSE */
|
||||||
int write_fat_16_br(FILE *fp, int bKeepLabel);
|
int write_fat_16_br(FILE *fp, int bKeepLabel);
|
||||||
|
|
||||||
|
/* returns TRUE if the file has an exact match ot the FAT16 boot record this
|
||||||
|
program would create for FreeDOS, otherwise FALSE.
|
||||||
|
The file position will change when this function is called! */
|
||||||
|
int entire_fat_16_fd_br_matches(FILE *fp);
|
||||||
|
|
||||||
|
/* Writes a FAT16 FreeDOS boot record to a file, returns TRUE on success,
|
||||||
|
otherwise FALSE */
|
||||||
|
int write_fat_16_fd_br(FILE *fp, int bKeepLabel);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
#ifndef FAT16FD_H
|
|
||||||
#define FAT16FD_H
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* returns TRUE if the file has an exact match ot the FAT16 boot record this
|
|
||||||
program would create for FreeDOS, otherwise FALSE.
|
|
||||||
The file position will change when this function is called! */
|
|
||||||
int entire_fat_16_fd_br_matches(FILE *fp);
|
|
||||||
|
|
||||||
/* Writes a FAT16 FreeDOS boot record to a file, returns TRUE on success,
|
|
||||||
otherwise FALSE */
|
|
||||||
int write_fat_16_fd_br(FILE *fp, int bKeepLabel);
|
|
||||||
|
|
||||||
#endif
|
|
18
inc/fat32.h
18
inc/fat32.h
|
@ -20,4 +20,22 @@ int entire_fat_32_br_matches(FILE *fp);
|
||||||
FALSE */
|
FALSE */
|
||||||
int write_fat_32_br(FILE *fp, int bKeepLabel);
|
int write_fat_32_br(FILE *fp, int bKeepLabel);
|
||||||
|
|
||||||
|
/* returns TRUE if the file has an exact match ot the FAT32 boot record this
|
||||||
|
program would create for FreeDOS, otherwise FALSE.
|
||||||
|
The file position will change when this function is called! */
|
||||||
|
int entire_fat_32_fd_br_matches(FILE *fp);
|
||||||
|
|
||||||
|
/* Writes a FAT32 FreeDOS boot record to a file, returns TRUE on success,
|
||||||
|
otherwise FALSE */
|
||||||
|
int write_fat_32_fd_br(FILE *fp, int bKeepLabel);
|
||||||
|
|
||||||
|
/* returns TRUE if the file has an exact match ot the FAT32 boot record this
|
||||||
|
program would create for NT, otherwise FALSE.
|
||||||
|
The file position will change when this function is called! */
|
||||||
|
int entire_fat_32_nt_br_matches(FILE *fp);
|
||||||
|
|
||||||
|
/* Writes a FAT32 NT boot record to a file, returns TRUE on success, otherwise
|
||||||
|
FALSE */
|
||||||
|
int write_fat_32_nt_br(FILE *fp, int bKeepLabel);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
#ifndef FAT32FD_H
|
|
||||||
#define FAT32FD_H
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* returns TRUE if the file has an exact match ot the FAT32 boot record this
|
|
||||||
program would create for FreeDOS, otherwise FALSE.
|
|
||||||
The file position will change when this function is called! */
|
|
||||||
int entire_fat_32_fd_br_matches(FILE *fp);
|
|
||||||
|
|
||||||
/* Writes a FAT32 FreeDOS boot record to a file, returns TRUE on success,
|
|
||||||
otherwise FALSE */
|
|
||||||
int write_fat_32_fd_br(FILE *fp, int bKeepLabel);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,15 +0,0 @@
|
||||||
#ifndef FAT32NT_H
|
|
||||||
#define FAT32NT_H
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* returns TRUE if the file has an exact match ot the FAT32 boot record this
|
|
||||||
program would create for NT, otherwise FALSE.
|
|
||||||
The file position will change when this function is called! */
|
|
||||||
int entire_fat_32_nt_br_matches(FILE *fp);
|
|
||||||
|
|
||||||
/* Writes a FAT32 NT boot record to a file, returns TRUE on success, otherwise
|
|
||||||
FALSE */
|
|
||||||
int write_fat_32_nt_br(FILE *fp, int bKeepLabel);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* First 446 bytes of a zeroed MBR*/
|
/* First 440 bytes of a zeroed MBR (disk signature is excluded) */
|
||||||
unsigned char mbr_zero_0x0[] = {
|
unsigned char mbr_zero_0x0[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
@ -36,6 +36,4 @@ unsigned char mbr_zero_0x0[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||||
0x00, 0x00
|
|
||||||
};
|
|
||||||
|
|
63
rufus.c
63
rufus.c
|
@ -49,6 +49,7 @@
|
||||||
#include "rufus.h"
|
#include "rufus.h"
|
||||||
#include "sys_types.h"
|
#include "sys_types.h"
|
||||||
#include "br.h"
|
#include "br.h"
|
||||||
|
#include "fat16.h"
|
||||||
#include "fat32.h"
|
#include "fat32.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
|
@ -646,14 +647,63 @@ out:
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL AnalyzeMBR(HANDLE hPhysicalDrive)
|
||||||
|
{
|
||||||
|
FILE fake_fd;
|
||||||
|
|
||||||
|
fake_fd._ptr = (char*)hPhysicalDrive;
|
||||||
|
fake_fd._bufsiz = SelectedDrive.Geometry.BytesPerSector;
|
||||||
|
|
||||||
|
// TODO: Apply this detection before partitioning
|
||||||
|
// TODO: since we detect all these, might as well give some MBR choice to the user?
|
||||||
|
if (is_br(&fake_fd)) {
|
||||||
|
uprintf("Drive has an x86 boot sector\n");
|
||||||
|
} else{
|
||||||
|
uprintf("Drive is missing an x86 boot sector!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
// TODO: Add/Eliminate FAT12?
|
||||||
|
if (is_fat_16_br(&fake_fd) || is_fat_32_br(&fake_fd)) {
|
||||||
|
if (entire_fat_16_br_matches(&fake_fd)) {
|
||||||
|
uprintf("Exact FAT16 DOS boot record match\n");
|
||||||
|
} else if (entire_fat_16_fd_br_matches(&fake_fd)) {
|
||||||
|
uprintf("Exact FAT16 FreeDOS boot record match\n");
|
||||||
|
} else if (entire_fat_32_br_matches(&fake_fd)) {
|
||||||
|
uprintf("Exact FAT32 DOS boot record match\n");
|
||||||
|
} else if (entire_fat_32_nt_br_matches(&fake_fd)) {
|
||||||
|
uprintf("Exact FAT32 NT boot record match\n");
|
||||||
|
} else if (entire_fat_32_fd_br_matches(&fake_fd)) {
|
||||||
|
uprintf("Exactly FAT32 FreeDOS boot record match\n");
|
||||||
|
} else {
|
||||||
|
uprintf("Unknown FAT16 or FAT32 boot record\n");
|
||||||
|
}
|
||||||
|
} else if (is_dos_mbr(&fake_fd)) {
|
||||||
|
uprintf("Microsoft DOS/NT/95A master boot record match\n");
|
||||||
|
} else if (is_dos_f2_mbr(&fake_fd)) {
|
||||||
|
uprintf("Microsoft DOS/NT/95A master boot record with the undocumented\n");
|
||||||
|
uprintf("F2 instruction match\n");
|
||||||
|
} else if (is_95b_mbr(&fake_fd)) {
|
||||||
|
uprintf("Microsoft 95B/98/98SE/ME master boot record match\n");
|
||||||
|
} else if (is_2000_mbr(&fake_fd)) {
|
||||||
|
uprintf("Microsoft 2000/XP/2003 master boot record match\n");
|
||||||
|
} else if (is_vista_mbr(&fake_fd)) {
|
||||||
|
uprintf("Microsoft Vista master boot record match\n");
|
||||||
|
} else if (is_win7_mbr(&fake_fd)) {
|
||||||
|
uprintf("Microsoft 7 master boot record match\n");
|
||||||
|
} else if (is_zero_mbr(&fake_fd)) {
|
||||||
|
uprintf("Zeroed non-bootable master boot record match\n");
|
||||||
|
} else {
|
||||||
|
uprintf("Unknown boot record\n");
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Process the MBR
|
* Process the MBR
|
||||||
*/
|
*/
|
||||||
static BOOL ProcessMBR(HANDLE hPhysicalDrive)
|
static BOOL ProcessMBR(HANDLE hPhysicalDrive)
|
||||||
{
|
{
|
||||||
BOOL r = FALSE;
|
BOOL r = FALSE;
|
||||||
HANDLE hDrive = hPhysicalDrive;
|
|
||||||
FILE fake_fd;
|
|
||||||
unsigned char* buf = NULL;
|
unsigned char* buf = NULL;
|
||||||
size_t SecSize = SelectedDrive.Geometry.BytesPerSector;
|
size_t SecSize = SelectedDrive.Geometry.BytesPerSector;
|
||||||
size_t nSecs = 0x200/min(0x200, SelectedDrive.Geometry.BytesPerSector);
|
size_t nSecs = 0x200/min(0x200, SelectedDrive.Geometry.BytesPerSector);
|
||||||
|
@ -665,10 +715,7 @@ static BOOL ProcessMBR(HANDLE hPhysicalDrive)
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintStatus("Processing MBR...\n");
|
PrintStatus("Processing MBR...\n");
|
||||||
|
if (!AnalyzeMBR(hPhysicalDrive)) return FALSE;
|
||||||
fake_fd._ptr = (char*)hPhysicalDrive;
|
|
||||||
fake_fd._bufsiz = SelectedDrive.Geometry.BytesPerSector;
|
|
||||||
uprintf("I'm %sa boot record\n", is_br(&fake_fd)?"":"NOT ");
|
|
||||||
|
|
||||||
// FormatEx rewrites the MBR and removes the LBA attribute of FAT16
|
// FormatEx rewrites the MBR and removes the LBA attribute of FAT16
|
||||||
// and FAT32 partitions - we need to correct this in the MBR
|
// and FAT32 partitions - we need to correct this in the MBR
|
||||||
|
@ -680,7 +727,7 @@ static BOOL ProcessMBR(HANDLE hPhysicalDrive)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!read_sectors(hDrive, SelectedDrive.Geometry.BytesPerSector, 0, nSecs, buf, SecSize)) {
|
if (!read_sectors(hPhysicalDrive, SelectedDrive.Geometry.BytesPerSector, 0, nSecs, buf, SecSize)) {
|
||||||
uprintf("Could not read MBR\n");
|
uprintf("Could not read MBR\n");
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_READ_FAULT;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_READ_FAULT;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -696,7 +743,7 @@ static BOOL ProcessMBR(HANDLE hPhysicalDrive)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!write_sectors(hDrive, SelectedDrive.Geometry.BytesPerSector, 0, nSecs, buf, SecSize)) {
|
if (!write_sectors(hPhysicalDrive, SelectedDrive.Geometry.BytesPerSector, 0, nSecs, buf, SecSize)) {
|
||||||
uprintf("Could not write MBR\n");
|
uprintf("Could not write MBR\n");
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
||||||
goto out;
|
goto out;
|
||||||
|
|
12
rufus.rc
12
rufus.rc
|
@ -63,7 +63,7 @@ BEGIN
|
||||||
DEFPUSHBUTTON "OK",IDOK,231,175,50,14,WS_GROUP
|
DEFPUSHBUTTON "OK",IDOK,231,175,50,14,WS_GROUP
|
||||||
CONTROL "<a href=""https://github.com/pbatard/rufus/wiki/Rufus"">https://github.com/pbatard/rufus</a>",IDC_ABOUT_RUFUS_URL,
|
CONTROL "<a href=""https://github.com/pbatard/rufus/wiki/Rufus"">https://github.com/pbatard/rufus</a>",IDC_ABOUT_RUFUS_URL,
|
||||||
"SysLink",WS_TABSTOP,46,47,114,9
|
"SysLink",WS_TABSTOP,46,47,114,9
|
||||||
LTEXT "Version 1.0.0 (Build 48)",IDC_STATIC,46,19,78,8
|
LTEXT "Version 1.0.0 (Build 49)",IDC_STATIC,46,19,78,8
|
||||||
PUSHBUTTON "License...",IDC_ABOUT_LICENSE,46,175,50,14,WS_GROUP
|
PUSHBUTTON "License...",IDC_ABOUT_LICENSE,46,175,50,14,WS_GROUP
|
||||||
EDITTEXT IDC_ABOUT_COPYRIGHTS,46,107,235,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
EDITTEXT IDC_ABOUT_COPYRIGHTS,46,107,235,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
||||||
LTEXT "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8
|
LTEXT "Report bugs or request enhancements at:",IDC_STATIC,46,66,187,8
|
||||||
|
@ -162,8 +162,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,0,0,48
|
FILEVERSION 1,0,0,49
|
||||||
PRODUCTVERSION 1,0,0,48
|
PRODUCTVERSION 1,0,0,49
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -180,13 +180,13 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "akeo.ie"
|
VALUE "CompanyName", "akeo.ie"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "1.0.0.48"
|
VALUE "FileVersion", "1.0.0.49"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011 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.0.0.48"
|
VALUE "ProductVersion", "1.0.0.49"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -212,7 +212,7 @@ IDI_ICON ICON "rufus.ico"
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_VERSION "Rufus v1.0.0.48"
|
IDS_VERSION "Rufus v1.0.0.49"
|
||||||
END
|
END
|
||||||
|
|
||||||
#endif // English resources
|
#endif // English resources
|
||||||
|
|
Loading…
Reference in a new issue