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.");