diff --git a/doc/FAQ.html b/doc/FAQ.html
index c4aeae9f..9d4ee220 100644
--- a/doc/FAQ.html
+++ b/doc/FAQ.html
@@ -46,6 +46,7 @@ a:visited { color: #0000EE; }
Why do I get the error 'The procedure entry point De/EncodePointer could not be located' on startup?
Why do I get the error 'LameXP.exe is not a valid Win32 application' on startup?
Why do I get the error 'A device attached to the system is not functioning' on startup?
+Why do I get the error 'File ´tool_foobar.exe´ could not be locked!' on startup?
How can I translate LameXP to my language or improve an existing translation?
Where can I download the latest version of LameXP?
Where can I submit bug reports or feature requests?
@@ -565,6 +566,21 @@ Remark: Executables compiled with Microsoft Visual Studio 2010 won't run on Wind
+Why do I get the error 'File ´tool_foobar.exe´ could not be locked!' on startup?
+
+This error indicates that LameXP was unable to open/read a required file - one that it just has extracted
+itself. Generally this should never happen, but we have reports that some bogus "anti-vrius" software might
+trigger this kind of errors. Of course there is nothing we can do on our side, if the error is induced by
+proprietary third-party software (such as faulty "anti-virus" software). So please try to temporarily(!)
+uninstall/disable your anti-virus software. If the problem goes away, you can be sure it was caused by the
+anti-virus software. In that case report the bug to the support team of your anti-virus software as soon as
+possible. Or, if they don't fix the bug (in due time), switch to a better anti-virus product!
+
+See also:
+My anti-virus program raises an alarm when I try to download/install/launch LameXP. Why is that?
+
+
+
How can I translate LameXP to my language or improve an existing translation?
Please see the guide for translators at:
diff --git a/src/Config.h b/src/Config.h
index 11ebdb21..689fd034 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -27,10 +27,10 @@
#define VER_LAMEXP_MAJOR 4
#define VER_LAMEXP_MINOR_HI 0
-#define VER_LAMEXP_MINOR_LO 2
-#define VER_LAMEXP_TYPE Final
+#define VER_LAMEXP_MINOR_LO 3
+#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 1
-#define VER_LAMEXP_BUILD 578
+#define VER_LAMEXP_BUILD 579
///////////////////////////////////////////////////////////////////////////////
// Tools versions
diff --git a/src/LockedFile.cpp b/src/LockedFile.cpp
index 53773ed4..8a7f3c5b 100644
--- a/src/LockedFile.cpp
+++ b/src/LockedFile.cpp
@@ -57,10 +57,16 @@ LockedFile::LockedFile(const QString &resourcePath, const QString &outPath, cons
throw error_msg;
}
- //Now lock the file
- m_fileHandle = CreateFileW(QWCHAR(QDir::toNativeSeparators(m_filePath)), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
-
- if(m_fileHandle == INVALID_HANDLE_VALUE)
+ //Now lock the file!
+ for(int i = 0; i < 1000; i++)
+ {
+ if((m_fileHandle = CreateFileW(QWCHAR(QDir::toNativeSeparators(m_filePath)), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL)) != INVALID_HANDLE_VALUE)
+ {
+ break;
+ }
+ Sleep(100);
+ }
+ if((m_fileHandle == NULL) || (m_fileHandle == INVALID_HANDLE_VALUE))
{
QFile::remove(QFileInfo(outFile).canonicalFilePath());
char error_msg[512];
@@ -76,6 +82,13 @@ LockedFile::LockedFile(const QString &resourcePath, const QString &outPath, cons
fileHash.addData(outFile.readAll());
outFile.close();
}
+ else
+ {
+ QFile::remove(QFileInfo(outFile).canonicalFilePath());
+ char error_msg[512];
+ strcpy_s(error_msg, 512, QString("File '%1' could not be read!").arg(QFileInfo(outFile).fileName()).toLatin1().constData());
+ throw error_msg;
+ }
//Compare hashes
if(_stricmp(fileHash.result().toHex().constData(), expectedHash.constData()))