1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include "shlxtmsi.hxx"
22 #include <systools/win32/uwinapi.h>
24 #if OSL_DEBUG_LEVEL >= 2
25 inline void OutputDebugStringFormatW( PCWSTR pFormat
, ... )
30 va_start( args
, pFormat
);
31 StringCchVPrintfW( buffer
, std::size(buffer
), pFormat
, args
);
32 OutputDebugStringW( buffer
);
36 static void OutputDebugStringFormatW( PCWSTR
, ... )
41 extern "C" __declspec(dllexport
) UINT __stdcall
CheckPatchList( MSIHANDLE handle
)
43 std::wstring sPatchList
= GetMsiPropertyW( handle
, L
"PATCH" );
44 std::wstring sRequiredPatch
= GetMsiPropertyW( handle
, L
"PREREQUIREDPATCH" );
46 OutputDebugStringFormatW( L
"CheckPatchList called with PATCH=%s and PRQ=%s\n", sPatchList
.c_str(), sRequiredPatch
.c_str() );
48 if ( ( sPatchList
.length() != 0 ) && ( sRequiredPatch
.length() != 0 ) )
50 if ( wcsstr( sPatchList
.c_str(), sRequiredPatch
.c_str() ) )
52 SetMsiPropertyW( handle
, L
"IGNOREPREREQUIREDPATCH", L
"1" );
53 OutputDebugStringFormatW( L
"Set Property IgnorePrerequiredPatch!\n" );
59 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */