/Util/Wix35/sdk/inc/wcautil.h
C Header | 379 lines | 316 code | 45 blank | 18 comment | 15 complexity | 744f624f4e7b922978967c5892324264 MD5 | raw file
Possible License(s): CPL-1.0, BSD-3-Clause, ISC, GPL-2.0, MPL-2.0-no-copyleft-exception
- #pragma once
- //-------------------------------------------------------------------------------------------------
- // <copyright file="wcautil.h" company="Microsoft">
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //
- // The use and distribution terms for this software are covered by the
- // Common Public License 1.0 (http://opensource.org/licenses/cpl1.0.php)
- // which can be found in the file CPL.TXT at the root of this distribution.
- // By using this software in any fashion, you are agreeing to be bound by
- // the terms of this license.
- //
- // You must not remove this notice, or any other, from this software.
- // </copyright>
- //
- // <summary>
- // Windows Installer XML CustomAction utility library.
- // </summary>
- //-------------------------------------------------------------------------------------------------
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define WIXAPI __stdcall
- #define ExitTrace WcaLogError
- #define ExitTrace1 WcaLogError
- #define ExitTrace2 WcaLogError
- #define ExitTrace3 WcaLogError
- #include "dutil.h"
- #define MessageExitOnLastError(x, e, s) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ExitTrace(x, "%s", s); WcaErrorMessage(e, x, MB_OK, 0); goto LExit; } }
- #define MessageExitOnLastError1(x, e, f, s) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ExitTrace1(x, f, s); WcaErrorMessage(e, x, MB_OK, 1, s); goto LExit; } }
- #define MessageExitOnFailure(x, e, s) if (FAILED(x)) { ExitTrace(x, "%s", s); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 0); goto LExit; }
- #define MessageExitOnFailure1(x, e, f, s) if (FAILED(x)) { ExitTrace1(x, f, s); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 1, s); goto LExit; }
- #define MessageExitOnFailure2(x, e, f, s, t) if (FAILED(x)) { ExitTrace2(x, f, s, t); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 2, s, t); goto LExit; }
- #define MessageExitOnFailure3(x, e, f, s, t, u) if (FAILED(x)) { ExitTrace2(x, f, s, t, u); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 3, s, t, u); goto LExit; }
- #define MessageExitOnNullWithLastError(p, x, e, s) if (NULL == p) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (!FAILED(x)) { x = E_FAIL; } ExitTrace(x, "%s", s); WcaErrorMessage(e, x, MB_OK, 0); goto LExit; }
- #define MessageExitOnNullWithLastError1(p, x, e, f, s) if (NULL == p) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (!FAILED(x)) { x = E_FAIL; } ExitTrace(x, f, s); WcaErrorMessage(e, x, MB_OK, 1, s); goto LExit; }
- #define MessageExitOnNullWithLastError2(p, x, e, f, s, t) if (NULL == p) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (!FAILED(x)) { x = E_FAIL; } ExitTrace(x, f, s, t); WcaErrorMessage(e, x, MB_OK, 2, s, t); goto LExit; }
- // Generic action enum.
- enum WCA_ACTION
- {
- WCA_ACTION_NONE,
- WCA_ACTION_INSTALL,
- WCA_ACTION_UNINSTALL,
- };
- enum WCA_CASCRIPT
- {
- WCA_CASCRIPT_SCHEDULED,
- WCA_CASCRIPT_ROLLBACK,
- };
- enum WCA_CASCRIPT_CLOSE
- {
- WCA_CASCRIPT_CLOSE_PRESERVE,
- WCA_CASCRIPT_CLOSE_DELETE,
- };
- enum WCA_TODO
- {
- WCA_TODO_UNKNOWN,
- WCA_TODO_INSTALL,
- WCA_TODO_UNINSTALL,
- WCA_TODO_REINSTALL,
- };
- typedef struct WCA_CASCRIPT_STRUCT
- {
- LPWSTR pwzScriptPath;
- HANDLE hScriptFile;
- } *WCA_CASCRIPT_HANDLE;
- void WIXAPI WcaGlobalInitialize(
- __in HINSTANCE hInst
- );
- void WIXAPI WcaGlobalFinalize();
- HRESULT WIXAPI WcaInitialize(
- __in MSIHANDLE hInstall,
- __in_z PCSTR szCustomActionLogName
- );
- UINT WIXAPI WcaFinalize(
- __in UINT iReturnValue
- );
- BOOL WIXAPI WcaIsInitialized();
- MSIHANDLE WIXAPI WcaGetInstallHandle();
- MSIHANDLE WIXAPI WcaGetDatabaseHandle();
- const char* WIXAPI WcaGetLogName();
- void WIXAPI WcaSetReturnValue(
- __in UINT iReturnValue
- );
- BOOL WIXAPI WcaCancelDetected();
- const int LOG_BUFFER = 2048;
- enum LOGLEVEL
- {
- LOGMSG_TRACEONLY, // Never written to the log file (except in DEBUG builds)
- LOGMSG_VERBOSE, // Written to log when LOGVERBOSE
- LOGMSG_STANDARD // Written to log whenever informational logging is enabled
- };
- void __cdecl WcaLog(
- __in LOGLEVEL llv,
- __in_z __format_string PCSTR fmt, ...
- );
- BOOL WIXAPI WcaDisplayAssert(
- __in LPCSTR sz
- );
- void __cdecl WcaLogError(
- __in HRESULT hr,
- __in LPCSTR szMessage,
- ...
- );
- UINT WIXAPI WcaProcessMessage(
- __in INSTALLMESSAGE eMessageType,
- __in MSIHANDLE hRecord
- );
- UINT __cdecl WcaErrorMessage(
- __in int iError,
- __in HRESULT hrError,
- __in UINT uiType,
- __in DWORD cArgs,
- ...
- );
- HRESULT WIXAPI WcaProgressMessage(
- __in UINT uiCost,
- __in BOOL fExtendProgressBar
- );
- BOOL WIXAPI WcaIsInstalling(
- __in INSTALLSTATE isInstalled,
- __in INSTALLSTATE isAction
- );
- BOOL WIXAPI WcaIsReInstalling(
- __in INSTALLSTATE isInstalled,
- __in INSTALLSTATE isAction
- );
- BOOL WIXAPI WcaIsUninstalling(
- __in INSTALLSTATE isInstalled,
- __in INSTALLSTATE isAction
- );
- HRESULT WIXAPI WcaSetComponentState(
- __in_z LPCWSTR wzComponent,
- __in INSTALLSTATE isState
- );
- HRESULT WIXAPI WcaTableExists(
- __in_z LPCWSTR wzTable
- );
- HRESULT WIXAPI WcaOpenView(
- __in_z LPCWSTR wzSql,
- __out MSIHANDLE* phView
- );
- HRESULT WIXAPI WcaExecuteView(
- __in MSIHANDLE hView,
- __in MSIHANDLE hRec
- );
- HRESULT WIXAPI WcaOpenExecuteView(
- __in_z LPCWSTR wzSql,
- __out MSIHANDLE* phView
- );
- HRESULT WIXAPI WcaFetchRecord(
- __in MSIHANDLE hView,
- __out MSIHANDLE* phRec
- );
- HRESULT WIXAPI WcaFetchSingleRecord(
- __in MSIHANDLE hView,
- __out MSIHANDLE* phRec
- );
- HRESULT WIXAPI WcaGetProperty(
- __in_z LPCWSTR wzProperty,
- __inout LPWSTR* ppwzData
- );
- HRESULT WIXAPI WcaGetFormattedProperty(
- __in_z LPCWSTR wzProperty,
- __out LPWSTR* ppwzData
- );
- HRESULT WIXAPI WcaGetFormattedString(
- __in_z LPCWSTR wzString,
- __out LPWSTR* ppwzData
- );
- HRESULT WIXAPI WcaGetIntProperty(
- __in_z LPCWSTR wzProperty,
- __inout int* piData
- );
- HRESULT WIXAPI WcaGetTargetPath(
- __in_z LPCWSTR wzFolder,
- __out LPWSTR* ppwzData
- );
- HRESULT WIXAPI WcaSetProperty(
- __in_z LPCWSTR wzPropertyName,
- __in_z LPCWSTR wzPropertyValue
- );
- HRESULT WIXAPI WcaSetIntProperty(
- __in_z LPCWSTR wzPropertyName,
- __in int nPropertyValue
- );
- BOOL WIXAPI WcaIsPropertySet(
- __in LPCSTR szProperty
- );
- HRESULT WIXAPI WcaGetRecordInteger(
- __in MSIHANDLE hRec,
- __in UINT uiField,
- __inout int* piData
- );
- HRESULT WIXAPI WcaGetRecordString(
- __in MSIHANDLE hRec,
- __in UINT uiField,
- __inout LPWSTR* ppwzData
- );
- HRESULT WIXAPI WcaGetRecordFormattedInteger(
- __in MSIHANDLE hRec,
- __in UINT uiField,
- __out int* piData
- );
- HRESULT WIXAPI WcaGetRecordFormattedString(
- __in MSIHANDLE hRec,
- __in UINT uiField,
- __inout LPWSTR* ppwzData
- );
- HRESULT WIXAPI WcaAllocStream(
- __deref_out_bcount_part(cbData, 0) BYTE** ppbData,
- __in DWORD cbData
- );
- HRESULT WIXAPI WcaFreeStream(
- __in BYTE* pbData
- );
- HRESULT WIXAPI WcaGetRecordStream(
- __in MSIHANDLE hRecBinary,
- __in UINT uiField,
- __deref_out_bcount_full(*pcbData) BYTE** ppbData,
- __out DWORD* pcbData
- );
- HRESULT WIXAPI WcaSetRecordString(
- __in MSIHANDLE hRec,
- __in UINT uiField,
- __in_z LPCWSTR wzData
- );
- HRESULT WIXAPI WcaSetRecordInteger(
- __in MSIHANDLE hRec,
- __in UINT uiField,
- __in int iValue
- );
- HRESULT WIXAPI WcaDoDeferredAction(
- __in_z LPCWSTR wzAction,
- __in_z LPCWSTR wzCustomActionData,
- __in UINT uiCost
- );
- DWORD WIXAPI WcaCountOfCustomActionDataRecords(
- __in_z LPCWSTR wzData
- );
- void WIXAPI RevertCustomActionData(
- __in LPWSTR wzRevertTo,
- __in LPCWSTR wzRevertFrom
- );
- HRESULT WIXAPI WcaReadStringFromCaData(
- __deref_in LPWSTR* ppwzCustomActionData,
- __deref_out_z LPWSTR* ppwzString
- );
- HRESULT WIXAPI WcaReadIntegerFromCaData(
- __deref_in LPWSTR* ppwzCustomActionData,
- __out int* piResult
- );
- HRESULT WIXAPI WcaReadStreamFromCaData(
- __deref_in LPWSTR* ppwzCustomActionData,
- __deref_out_bcount(*pcbData) BYTE** ppbData,
- __out DWORD_PTR* pcbData
- );
- HRESULT WIXAPI WcaWriteStringToCaData(
- __in_z LPCWSTR wzString,
- __deref_inout_z LPWSTR* ppwzCustomActionData
- );
- HRESULT WIXAPI WcaWriteIntegerToCaData(
- __in int i,
- __deref_inout_z LPWSTR* ppwzCustomActionData
- );
- HRESULT WIXAPI WcaWriteStreamToCaData(
- __in_bcount(cbData) const BYTE* pbData,
- __in DWORD cbData,
- __deref_inout_z LPWSTR* ppwzCustomActionData
- );
- HRESULT __cdecl WcaAddTempRecord(
- __inout MSIHANDLE* phTableView,
- __inout MSIHANDLE* phColumns,
- __in_z LPCWSTR wzTable,
- __out_opt MSIDBERROR* pdbError,
- __in UINT uiUniquifyColumn,
- __in UINT cColumns,
- ...
- );
- HRESULT WIXAPI WcaDumpTable(
- __in_z LPCWSTR wzTable
- );
- HRESULT WIXAPI WcaDeferredActionRequiresReboot();
- BOOL WIXAPI WcaDidDeferredActionRequireReboot();
- HRESULT WIXAPI WcaCaScriptCreateKey(
- __out LPWSTR* ppwzScriptKey
- );
- HRESULT WIXAPI WcaCaScriptCreate(
- __in WCA_ACTION action,
- __in WCA_CASCRIPT script,
- __in BOOL fImpersonated,
- __in_z LPCWSTR wzScriptKey,
- __in BOOL fAppend,
- __out WCA_CASCRIPT_HANDLE* phScript
- );
- HRESULT WIXAPI WcaCaScriptOpen(
- __in WCA_ACTION action,
- __in WCA_CASCRIPT script,
- __in BOOL fImpersonated,
- __in_z LPCWSTR wzScriptKey,
- __out WCA_CASCRIPT_HANDLE* phScript
- );
- void WIXAPI WcaCaScriptClose(
- __in_opt WCA_CASCRIPT_HANDLE hScript,
- __in WCA_CASCRIPT_CLOSE closeOperation
- );
- HRESULT WIXAPI WcaCaScriptReadAsCustomActionData(
- __in WCA_CASCRIPT_HANDLE hScript,
- __out LPWSTR* ppwzCustomActionData
- );
- HRESULT WIXAPI WcaCaScriptWriteString(
- __in WCA_CASCRIPT_HANDLE hScript,
- __in_z LPCWSTR wzValue
- );
- HRESULT WIXAPI WcaCaScriptWriteNumber(
- __in WCA_CASCRIPT_HANDLE hScript,
- __in DWORD dwValue
- );
- void WIXAPI WcaCaScriptFlush(
- __in WCA_CASCRIPT_HANDLE hScript
- );
- void WIXAPI WcaCaScriptCleanup(
- __in_z LPCWSTR wzProductCode,
- __in BOOL fImpersonated
- );
- HRESULT WIXAPI QuietExec(
- __inout_z LPWSTR wzCommand,
- __in DWORD dwTimeout
- );
- WCA_TODO WIXAPI WcaGetComponentToDo(
- __in_z LPCWSTR wzComponentId
- );
- #ifdef __cplusplus
- }
- #endif