@joebigelow / wix / commits / d73c2940

Unport LocProbeForFileEx() as WiX v4 had better solution

Rob Mensching committed Apr 20, 2021 at 00:48 UTC d73c29407fe5ec6a0207af7d9c2547457ae0854c
2 files changed +9 -32
src/dutil/inc/locutil.h
-12
@@ -49,18 +49,6 @@ HRESULT DAPI LocProbeForFile(
49 __inout LPWSTR* psczPath
50 );
51
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 -
52 /********************************************************************
53 LocLoadFromFile - Loads a localization file
54
src/dutil/locutil.cpp
+9 -20
@@ -51,7 +51,7 @@ static HRESULT ParseWxlControl(
51 #ifndef MUI_MERGE_SYSTEM_FALLBACK
52 #define MUI_MERGE_SYSTEM_FALLBACK 0x10 // GetThreadPreferredUILanguages merges in parent and base languages
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,
56 __out PULONG pulNumLanguages,
57 __out_ecount_opt(*pcchLanguagesBuffer) PZZWSTR pwszLanguagesBuffer,
@@ -64,26 +64,15 @@ extern "C" HRESULT DAPI LocProbeForFile(
64 __in_z_opt LPCWSTR wzLanguage,
65 __inout LPWSTR* psczPath
66 )
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 - )
67 {
68 HRESULT hr = S_OK;
69 LPWSTR sczProbePath = NULL;
70 LANGID langid = 0;
71 LPWSTR sczLangIdFile = NULL;
72 LPWSTR sczLangsBuff = NULL;
84 - PFN_GET_THREAD_PREFERRED_UI_LANGUAGES pfnGetThreadPreferredUILanguages =
85 - reinterpret_cast<PFN_GET_THREAD_PREFERRED_UI_LANGUAGES>(
86 - ::GetProcAddress(::GetModuleHandle("Kernel32.dll"), "GetThreadPreferredUILanguages"));
73 + GET_THREAD_PREFERRED_UI_LANGUAGES pvfnGetThreadPreferredUILanguages =
74 + reinterpret_cast<GET_THREAD_PREFERRED_UI_LANGUAGES>(
75 + GetProcAddress(GetModuleHandle("Kernel32.dll"), "GetThreadPreferredUILanguages"));
76
77 // If a language was specified, look for a loc file in that as a directory.
78 if (wzLanguage && *wzLanguage)
@@ -100,12 +89,12 @@ extern "C" HRESULT DAPI LocProbeForFileEx(
89 }
90 }
91
103 - if (fUseUILanguage && pfnGetThreadPreferredUILanguages)
92 + if (pvfnGetThreadPreferredUILanguages)
93 {
105 - ULONG nLangs = 0;
94 + ULONG nLangs;
95 ULONG cchLangs = 0;
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))
98 {
99 LocExitWithLastError(hr, "GetThreadPreferredUILanguages failed to return buffer size.");
100 }
@@ -114,7 +103,7 @@ extern "C" HRESULT DAPI LocProbeForFileEx(
103 LocExitOnFailure(hr, "Failed to allocate buffer for languages");
104
105 nLangs = 0;
117 - if (!(*pfnGetThreadPreferredUILanguages)(dwFlags, &nLangs, sczLangsBuff, &cchLangs))
106 + if (!(*pvfnGetThreadPreferredUILanguages)(dwFlags, &nLangs, sczLangsBuff, &cchLangs))
107 {
108 LocExitWithLastError(hr, "GetThreadPreferredUILanguages failed to return language list.");
109 }
@@ -140,7 +129,7 @@ extern "C" HRESULT DAPI LocProbeForFileEx(
129 }
130 }
131
143 - langid = fUseUILanguage ? ::GetUserDefaultUILanguage() : ::GetUserDefaultLangID();
132 + langid = ::GetUserDefaultUILanguage();
133
134 hr = StrAllocFormatted(&sczLangIdFile, L"%u\\%ls", langid, wzLocFileName);
135 LocExitOnFailure(hr, "Failed to format user langid.");