summaryrefslogtreecommitdiff
path: root/setup_native/source/win32/customactions/shellextensions/checkpatches.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'setup_native/source/win32/customactions/shellextensions/checkpatches.cxx')
-rw-r--r--setup_native/source/win32/customactions/shellextensions/checkpatches.cxx64
1 files changed, 12 insertions, 52 deletions
diff --git a/setup_native/source/win32/customactions/shellextensions/checkpatches.cxx b/setup_native/source/win32/customactions/shellextensions/checkpatches.cxx
index 33ad29fab7e8..f8a28f7ad2f2 100644
--- a/setup_native/source/win32/customactions/shellextensions/checkpatches.cxx
+++ b/setup_native/source/win32/customactions/shellextensions/checkpatches.cxx
@@ -17,87 +17,47 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifdef _MSC_VER
-#pragma warning(push, 1) /* disable warnings within system headers */
-#endif
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <msiquery.h>
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
+#include "shlxtmsi.hxx"
#include <malloc.h>
#include <assert.h>
-#ifdef UNICODE
-#define _UNICODE
-#define _tstring wstring
-#else
-#define _tstring string
-#endif
-#include <tchar.h>
-#include <string>
#include <queue>
#include <stdio.h>
#include <strsafe.h>
#include <systools/win32/uwinapi.h>
-
#ifdef DEBUG
-inline void OutputDebugStringFormat( LPCSTR pFormat, ... )
+inline void OutputDebugStringFormatW( PCWSTR pFormat, ... )
{
- CHAR buffer[1024];
+ WCHAR buffer[1024];
va_list args;
va_start( args, pFormat );
- StringCchVPrintfA( buffer, sizeof(buffer), pFormat, args );
- OutputDebugStringA( buffer );
+ StringCchVPrintfW( buffer, sizeof(buffer)/sizeof(buffer[0]), pFormat, args );
+ OutputDebugStringW( buffer );
va_end(args);
}
#else
-static inline void OutputDebugStringFormat( LPCSTR, ... )
+static inline void OutputDebugStringFormatW( PCWSTR, ... )
{
}
#endif
-static std::_tstring GetMsiProperty( MSIHANDLE handle, const std::_tstring& sProperty )
-{
- std::_tstring result;
- TCHAR szDummy[1] = TEXT("");
- DWORD nChars = 0;
-
- if ( MsiGetProperty( handle, sProperty.c_str(), szDummy, &nChars ) == ERROR_MORE_DATA )
- {
- DWORD nBytes = ++nChars * sizeof(TCHAR);
- LPTSTR buffer = reinterpret_cast<LPTSTR>(_alloca(nBytes));
- ZeroMemory( buffer, nBytes );
- MsiGetProperty(handle, sProperty.c_str(), buffer, &nChars);
- result = buffer;
- }
-
- return result;
-}
-
-static void SetMsiProperty( MSIHANDLE handle, const std::_tstring& sProperty )
-{
- MsiSetProperty( handle, sProperty.c_str(), TEXT("1") );
-}
-
extern "C" UINT __stdcall CheckPatchList( MSIHANDLE handle )
{
- std::_tstring sPatchList = GetMsiProperty( handle, TEXT("PATCH") );
- std::_tstring sRequiredPatch = GetMsiProperty( handle, TEXT("PREREQUIREDPATCH") );
+ std::wstring sPatchList = GetMsiPropertyW( handle, L"PATCH" );
+ std::wstring sRequiredPatch = GetMsiPropertyW( handle, L"PREREQUIREDPATCH" );
- OutputDebugStringFormat( "CheckPatchList called with PATCH=%s and PRQ= %s\n", sPatchList.c_str(), sRequiredPatch.c_str() );
+ OutputDebugStringFormatW( L"CheckPatchList called with PATCH=%s and PRQ=%s\n", sPatchList.c_str(), sRequiredPatch.c_str() );
if ( ( sPatchList.length() != 0 ) && ( sRequiredPatch.length() != 0 ) )
{
- if ( _tcsstr( sPatchList.c_str(), sRequiredPatch.c_str() ) )
+ if ( wcsstr( sPatchList.c_str(), sRequiredPatch.c_str() ) )
{
- SetMsiProperty( handle, TEXT("IGNOREPREREQUIREDPATCH") );
- OutputDebugStringFormat( "Set Property IgnorePrerequiredPatch!\n" );
+ SetMsiPropertyW( handle, L"IGNOREPREREQUIREDPATCH", L"1" );
+ OutputDebugStringFormatW( L"Set Property IgnorePrerequiredPatch!\n" );
}
}
return ERROR_SUCCESS;