Procházet zdrojové kódy

Issue 423 GetFileVersionInfo hack does not seem to be needed anymore

And it does not seem to be needed in XE6 either, so something must have changed even earlier in BCB.

Pre 4.2.2 translations (4.1.9) still do not work, so it does not seem to be a Windows fix that has resolved it

Source commit: 24b1f71a26c99d7fd19bb2a0280cadd1f301aebb
Martin Prikryl před 10 měsíci
rodič
revize
c20b10a314
1 změnil soubory, kde provedl 2 přidání a 151 odebrání
  1. 2 151
      source/core/FileInfo.cpp

+ 2 - 151
source/core/FileInfo.cpp

@@ -11,141 +11,6 @@
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 //---------------------------------------------------------------------------
-#define DWORD_ALIGN( base, ptr ) \
-    ( (LPBYTE)(base) + ((((LPBYTE)(ptr) - (LPBYTE)(base)) + 3) & ~3) )
-struct VS_VERSION_INFO_STRUCT32
-{
-  WORD  wLength;
-  WORD  wValueLength;
-  WORD  wType;
-  WCHAR szKey[1];
-};
-//---------------------------------------------------------------------------
-unsigned int VERSION_GetFileVersionInfo_PE(const wchar_t * FileName, unsigned int DataSize, void * Data)
-{
-  unsigned int Len;
-
-  bool NeedFree = false;
-  HMODULE Module = GetModuleHandle(FileName);
-  if (Module == NULL)
-  {
-    Module = LoadLibraryEx(FileName, 0, LOAD_LIBRARY_AS_DATAFILE);
-    NeedFree = true;
-  }
-  if (Module == NULL)
-  {
-    Len = 0;
-  }
-  else
-  {
-    try
-    {
-      HRSRC Rsrc = FindResource(Module, MAKEINTRESOURCE(VS_VERSION_INFO),
-        MAKEINTRESOURCE(VS_FILE_INFO));
-      if (Rsrc != NULL)
-      {
-        Len = SizeofResource(Module, Rsrc);
-        HANDLE Mem = LoadResource(Module, Rsrc);
-        if (Mem != NULL)
-        {
-          try
-          {
-            VS_VERSION_INFO_STRUCT32 * VersionInfo = (VS_VERSION_INFO_STRUCT32 *)LockResource(Mem);
-            const VS_FIXEDFILEINFO * FixedInfo =
-              (VS_FIXEDFILEINFO *)DWORD_ALIGN(VersionInfo, VersionInfo->szKey + wcslen(VersionInfo->szKey) + 1);
-
-            if (FixedInfo->dwSignature != VS_FFI_SIGNATURE)
-            {
-              Len = 0;
-            }
-            else
-            {
-              if (Data != NULL)
-              {
-                if (DataSize < Len)
-                {
-                  Len = DataSize;
-                }
-                if (Len > 0)
-                {
-                  memmove(Data, VersionInfo, Len);
-                }
-              }
-            }
-          }
-          __finally
-          {
-            FreeResource(Mem);
-          }
-        }
-      }
-    }
-    __finally
-    {
-      if (NeedFree)
-      {
-        FreeLibrary(Module);
-      }
-    }
-  }
-
-  return Len;
-}
-//---------------------------------------------------------------------------
-unsigned int GetFileVersionInfoSizeFix(const wchar_t * FileName, unsigned long * Handle)
-{
-  unsigned int Len;
-  if (IsWin7())
-  {
-    *Handle = 0;
-    Len = VERSION_GetFileVersionInfo_PE(FileName, 0, NULL);
-
-    if (Len != 0)
-    {
-      Len = (Len * 2) + 4;
-    }
-  }
-  else
-  {
-    Len = GetFileVersionInfoSize(FileName, Handle);
-  }
-
-  return Len;
-}
-//---------------------------------------------------------------------------
-bool GetFileVersionInfoFix(const wchar_t * FileName, unsigned long Handle,
-  unsigned int DataSize, void * Data)
-{
-  bool Result;
-
-  if (IsWin7())
-  {
-    VS_VERSION_INFO_STRUCT32 * VersionInfo = (VS_VERSION_INFO_STRUCT32*)Data;
-
-    unsigned int Len = VERSION_GetFileVersionInfo_PE(FileName, DataSize, Data);
-
-    Result = (Len != 0);
-    if (Result)
-    {
-      static const char Signature[] = "FE2X";
-      unsigned int BufSize = VersionInfo->wLength + strlen(Signature);
-      unsigned int ConvBuf;
-
-      if (DataSize >= BufSize)
-      {
-        ConvBuf = DataSize - VersionInfo->wLength;
-        memmove(((char*)(Data)) + VersionInfo->wLength, Signature, ConvBuf > 4 ? 4 : ConvBuf );
-      }
-    }
-  }
-  else
-  {
-    Result = GetFileVersionInfo(FileName, Handle, DataSize, Data);
-  }
-
-  return Result;
-}
-//---------------------------------------------------------------------------
 // Return pointer to file version info block
 void * __fastcall CreateFileInfo(UnicodeString FileName)
 {
@@ -154,13 +19,13 @@ void * __fastcall CreateFileInfo(UnicodeString FileName)
   void * Result = NULL;
 
   // Get file version info block size
-  Size = GetFileVersionInfoSizeFix(FileName.c_str(), &Handle);
+  Size = GetFileVersionInfoSize(FileName.c_str(), &Handle);
   // If size is valid
   if (Size > 0)
   {
     Result = new char[Size];
     // Get file version info block
-    if (!GetFileVersionInfoFix(FileName.c_str(), Handle, Size, Result))
+    if (!GetFileVersionInfo(FileName.c_str(), Handle, Size, Result))
     {
       delete[] Result;
       Result = NULL;
@@ -219,20 +84,6 @@ TTranslation __fastcall GetTranslation(void * FileInfo, unsigned i)
   return P[i];
 }
 //---------------------------------------------------------------------------
-// Return the name of the specified language
-UnicodeString __fastcall GetLanguage(Word Language)
-{
-  UINT Len;
-  wchar_t P[256];
-
-  Len = VerLanguageName(Language, P, LENOF(P));
-  if (Len > LENOF(P))
-  {
-    throw Exception(L"Language not available");
-  }
-  return UnicodeString(P, Len);
-}
-//---------------------------------------------------------------------------
 // Return the value of the specified file version info string using the
 // specified translation
 UnicodeString __fastcall GetFileInfoString(void * FileInfo,