James Hawkins : msi: Read the language info from the file.

Alexandre Julliard julliard at winehq.org
Tue Feb 12 16:46:15 CST 2008


Module: wine
Branch: master
Commit: 4cc569cce6cdbf7c2053e1eee979b9e8e6619b42
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4cc569cce6cdbf7c2053e1eee979b9e8e6619b42

Author: James Hawkins <truiken at gmail.com>
Date:   Tue Feb 12 01:36:34 2008 -0600

msi: Read the language info from the file.

---

 dlls/msi/msi.c |   26 ++++++++++++++++++--------
 1 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index bee273d..7840a4c 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -1622,11 +1622,15 @@ UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath, LPWSTR lpVersionBuf,
     static const WCHAR szVersionResource[] = {'\\',0};
     static const WCHAR szVersionFormat[] = {
         '%','d','.','%','d','.','%','d','.','%','d',0};
+    static const WCHAR szLangResource[] = {
+        '\\','V','a','r','F','i','l','e','I','n','f','o','\\',
+        'T','r','a','n','s','l','a','t','i','o','n',0};
     static const WCHAR szLangFormat[] = {'%','d',0};
     UINT ret = 0;
     DWORD dwVerLen, gle;
     LPVOID lpVer = NULL;
     VS_FIXEDFILEINFO *ffi;
+    USHORT *lang;
     UINT puLen;
     WCHAR tmp[32];
 
@@ -1687,16 +1691,22 @@ UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath, LPWSTR lpVersionBuf,
 
     if (pcchLangBuf)
     {
-        DWORD lang = GetUserDefaultLangID();
-
-        FIXME("Retrieve language from file\n");
-        wsprintfW(tmp, szLangFormat, lang);
-        if (lpLangBuf) lstrcpynW(lpLangBuf, tmp, *pcchLangBuf);
+        if (VerQueryValueW(lpVer, szLangResource, (LPVOID*)&lang, &puLen) &&
+            (puLen > 0))
+        {
+            wsprintfW(tmp, szLangFormat, *lang);
+            if (lpLangBuf) lstrcpynW(lpLangBuf, tmp, *pcchLangBuf);
 
-        if (lstrlenW(tmp) >= *pcchLangBuf)
-            ret = ERROR_MORE_DATA;
+            if (lstrlenW(tmp) >= *pcchLangBuf)
+                ret = ERROR_MORE_DATA;
 
-        *pcchLangBuf = lstrlenW(tmp);
+            *pcchLangBuf = lstrlenW(tmp);
+        }
+        else
+        {
+            if (lpLangBuf) *lpLangBuf = 0;
+            *pcchLangBuf = 0;
+        }
     }
 
 end:




More information about the wine-cvs mailing list