diff options
author | Rob Mensching <rob@firegiant.com> | 2021-04-20 00:48:50 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2021-04-20 01:05:41 -0700 |
commit | d73c29407fe5ec6a0207af7d9c2547457ae0854c (patch) | |
tree | e073ba81b3d3b433624dbcbe3d1eef165e21deb1 | |
parent | 10a2a1740616715f367536b9515bad5ff6c645e1 (diff) | |
download | wix-d73c29407fe5ec6a0207af7d9c2547457ae0854c.tar.gz wix-d73c29407fe5ec6a0207af7d9c2547457ae0854c.tar.bz2 wix-d73c29407fe5ec6a0207af7d9c2547457ae0854c.zip |
Unport LocProbeForFileEx() as WiX v4 had better solution
-rw-r--r-- | src/dutil/inc/locutil.h | 12 | ||||
-rw-r--r-- | src/dutil/locutil.cpp | 29 |
2 files changed, 9 insertions, 32 deletions
diff --git a/src/dutil/inc/locutil.h b/src/dutil/inc/locutil.h index 626cb59e..38ddda20 100644 --- a/src/dutil/inc/locutil.h +++ b/src/dutil/inc/locutil.h | |||
@@ -50,18 +50,6 @@ HRESULT DAPI LocProbeForFile( | |||
50 | ); | 50 | ); |
51 | 51 | ||
52 | /******************************************************************** | 52 | /******************************************************************** |
53 | LocProbeForFileEx - Searches for a localization file on disk. | ||
54 | useUILanguage should be set to TRUE. | ||
55 | *******************************************************************/ | ||
56 | HRESULT DAPI LocProbeForFileEx( | ||
57 | __in_z LPCWSTR wzBasePath, | ||
58 | __in_z LPCWSTR wzLocFileName, | ||
59 | __in_z_opt LPCWSTR wzLanguage, | ||
60 | __inout LPWSTR* psczPath, | ||
61 | __in BOOL fUseUILanguage | ||
62 | ); | ||
63 | |||
64 | /******************************************************************** | ||
65 | LocLoadFromFile - Loads a localization file | 53 | LocLoadFromFile - Loads a localization file |
66 | 54 | ||
67 | *******************************************************************/ | 55 | *******************************************************************/ |
diff --git a/src/dutil/locutil.cpp b/src/dutil/locutil.cpp index 43e1bb5b..c4567c03 100644 --- a/src/dutil/locutil.cpp +++ b/src/dutil/locutil.cpp | |||
@@ -51,7 +51,7 @@ static HRESULT ParseWxlControl( | |||
51 | #ifndef MUI_MERGE_SYSTEM_FALLBACK | 51 | #ifndef MUI_MERGE_SYSTEM_FALLBACK |
52 | #define MUI_MERGE_SYSTEM_FALLBACK 0x10 // GetThreadPreferredUILanguages merges in parent and base languages | 52 | #define MUI_MERGE_SYSTEM_FALLBACK 0x10 // GetThreadPreferredUILanguages merges in parent and base languages |
53 | #endif | 53 | #endif |
54 | typedef WINBASEAPI BOOL (WINAPI *PFN_GET_THREAD_PREFERRED_UI_LANGUAGES) ( | 54 | typedef WINBASEAPI BOOL (WINAPI *GET_THREAD_PREFERRED_UI_LANGUAGES) ( |
55 | __in DWORD dwFlags, | 55 | __in DWORD dwFlags, |
56 | __out PULONG pulNumLanguages, | 56 | __out PULONG pulNumLanguages, |
57 | __out_ecount_opt(*pcchLanguagesBuffer) PZZWSTR pwszLanguagesBuffer, | 57 | __out_ecount_opt(*pcchLanguagesBuffer) PZZWSTR pwszLanguagesBuffer, |
@@ -65,25 +65,14 @@ extern "C" HRESULT DAPI LocProbeForFile( | |||
65 | __inout LPWSTR* psczPath | 65 | __inout LPWSTR* psczPath |
66 | ) | 66 | ) |
67 | { | 67 | { |
68 | return LocProbeForFileEx(wzBasePath, wzLocFileName, wzLanguage, psczPath, FALSE); | ||
69 | } | ||
70 | |||
71 | extern "C" HRESULT DAPI LocProbeForFileEx( | ||
72 | __in_z LPCWSTR wzBasePath, | ||
73 | __in_z LPCWSTR wzLocFileName, | ||
74 | __in_z_opt LPCWSTR wzLanguage, | ||
75 | __inout LPWSTR* psczPath, | ||
76 | __in BOOL fUseUILanguage | ||
77 | ) | ||
78 | { | ||
79 | HRESULT hr = S_OK; | 68 | HRESULT hr = S_OK; |
80 | LPWSTR sczProbePath = NULL; | 69 | LPWSTR sczProbePath = NULL; |
81 | LANGID langid = 0; | 70 | LANGID langid = 0; |
82 | LPWSTR sczLangIdFile = NULL; | 71 | LPWSTR sczLangIdFile = NULL; |
83 | LPWSTR sczLangsBuff = NULL; | 72 | LPWSTR sczLangsBuff = NULL; |
84 | PFN_GET_THREAD_PREFERRED_UI_LANGUAGES pfnGetThreadPreferredUILanguages = | 73 | GET_THREAD_PREFERRED_UI_LANGUAGES pvfnGetThreadPreferredUILanguages = |
85 | reinterpret_cast<PFN_GET_THREAD_PREFERRED_UI_LANGUAGES>( | 74 | reinterpret_cast<GET_THREAD_PREFERRED_UI_LANGUAGES>( |
86 | ::GetProcAddress(::GetModuleHandle("Kernel32.dll"), "GetThreadPreferredUILanguages")); | 75 | GetProcAddress(GetModuleHandle("Kernel32.dll"), "GetThreadPreferredUILanguages")); |
87 | 76 | ||
88 | // If a language was specified, look for a loc file in that as a directory. | 77 | // If a language was specified, look for a loc file in that as a directory. |
89 | if (wzLanguage && *wzLanguage) | 78 | if (wzLanguage && *wzLanguage) |
@@ -100,12 +89,12 @@ extern "C" HRESULT DAPI LocProbeForFileEx( | |||
100 | } | 89 | } |
101 | } | 90 | } |
102 | 91 | ||
103 | if (fUseUILanguage && pfnGetThreadPreferredUILanguages) | 92 | if (pvfnGetThreadPreferredUILanguages) |
104 | { | 93 | { |
105 | ULONG nLangs = 0; | 94 | ULONG nLangs; |
106 | ULONG cchLangs = 0; | 95 | ULONG cchLangs = 0; |
107 | DWORD dwFlags = MUI_LANGUAGE_ID | MUI_MERGE_USER_FALLBACK | MUI_MERGE_SYSTEM_FALLBACK; | 96 | DWORD dwFlags = MUI_LANGUAGE_ID | MUI_MERGE_USER_FALLBACK | MUI_MERGE_SYSTEM_FALLBACK; |
108 | if (!(*pfnGetThreadPreferredUILanguages)(dwFlags, &nLangs, NULL, &cchLangs)) | 97 | if (!(*pvfnGetThreadPreferredUILanguages)(dwFlags, &nLangs, NULL, &cchLangs)) |
109 | { | 98 | { |
110 | LocExitWithLastError(hr, "GetThreadPreferredUILanguages failed to return buffer size."); | 99 | LocExitWithLastError(hr, "GetThreadPreferredUILanguages failed to return buffer size."); |
111 | } | 100 | } |
@@ -114,7 +103,7 @@ extern "C" HRESULT DAPI LocProbeForFileEx( | |||
114 | LocExitOnFailure(hr, "Failed to allocate buffer for languages"); | 103 | LocExitOnFailure(hr, "Failed to allocate buffer for languages"); |
115 | 104 | ||
116 | nLangs = 0; | 105 | nLangs = 0; |
117 | if (!(*pfnGetThreadPreferredUILanguages)(dwFlags, &nLangs, sczLangsBuff, &cchLangs)) | 106 | if (!(*pvfnGetThreadPreferredUILanguages)(dwFlags, &nLangs, sczLangsBuff, &cchLangs)) |
118 | { | 107 | { |
119 | LocExitWithLastError(hr, "GetThreadPreferredUILanguages failed to return language list."); | 108 | LocExitWithLastError(hr, "GetThreadPreferredUILanguages failed to return language list."); |
120 | } | 109 | } |
@@ -140,7 +129,7 @@ extern "C" HRESULT DAPI LocProbeForFileEx( | |||
140 | } | 129 | } |
141 | } | 130 | } |
142 | 131 | ||
143 | langid = fUseUILanguage ? ::GetUserDefaultUILanguage() : ::GetUserDefaultLangID(); | 132 | langid = ::GetUserDefaultUILanguage(); |
144 | 133 | ||
145 | hr = StrAllocFormatted(&sczLangIdFile, L"%u\\%ls", langid, wzLocFileName); | 134 | hr = StrAllocFormatted(&sczLangIdFile, L"%u\\%ls", langid, wzLocFileName); |
146 | LocExitOnFailure(hr, "Failed to format user langid."); | 135 | LocExitOnFailure(hr, "Failed to format user langid."); |