diff options
Diffstat (limited to 'src/wcautil/inc/wcautil.h')
-rw-r--r-- | src/wcautil/inc/wcautil.h | 384 |
1 files changed, 384 insertions, 0 deletions
diff --git a/src/wcautil/inc/wcautil.h b/src/wcautil/inc/wcautil.h new file mode 100644 index 00000000..8139a7ca --- /dev/null +++ b/src/wcautil/inc/wcautil.h | |||
@@ -0,0 +1,384 @@ | |||
1 | #pragma once | ||
2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
3 | |||
4 | |||
5 | #ifdef __cplusplus | ||
6 | extern "C" { | ||
7 | #endif | ||
8 | |||
9 | #define WIXAPI __stdcall | ||
10 | #define ExitTrace WcaLogError | ||
11 | |||
12 | #include "dutil.h" | ||
13 | |||
14 | #define MessageExitOnLastError(x, e, s, ...) { x = ::GetLastError(); x = HRESULT_FROM_WIN32(x); if (FAILED(x)) { ExitTrace(x, "%s", s, __VA_ARGS__); WcaErrorMessage(e, x, MB_OK, -1, __VA_ARGS__); goto LExit; } } | ||
15 | #define MessageExitOnFailure(x, e, s, ...) if (FAILED(x)) { ExitTrace(x, "%s", s, __VA_ARGS__); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, -1, __VA_ARGS__); goto LExit; } | ||
16 | #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, __VA_ARGS__); WcaErrorMessage(e, x, MB_OK, -1, __VA_ARGS__); goto LExit; } | ||
17 | |||
18 | // Generic action enum. | ||
19 | typedef enum WCA_ACTION | ||
20 | { | ||
21 | WCA_ACTION_NONE, | ||
22 | WCA_ACTION_INSTALL, | ||
23 | WCA_ACTION_UNINSTALL, | ||
24 | } WCA_ACTION; | ||
25 | |||
26 | typedef enum WCA_CASCRIPT | ||
27 | { | ||
28 | WCA_CASCRIPT_SCHEDULED, | ||
29 | WCA_CASCRIPT_ROLLBACK, | ||
30 | } WCA_CASCRIPT; | ||
31 | |||
32 | typedef enum WCA_CASCRIPT_CLOSE | ||
33 | { | ||
34 | WCA_CASCRIPT_CLOSE_PRESERVE, | ||
35 | WCA_CASCRIPT_CLOSE_DELETE, | ||
36 | } WCA_CASCRIPT_CLOSE; | ||
37 | |||
38 | typedef enum WCA_TODO | ||
39 | { | ||
40 | WCA_TODO_UNKNOWN, | ||
41 | WCA_TODO_INSTALL, | ||
42 | WCA_TODO_UNINSTALL, | ||
43 | WCA_TODO_REINSTALL, | ||
44 | } WCA_TODO; | ||
45 | |||
46 | typedef struct WCA_CASCRIPT_STRUCT | ||
47 | { | ||
48 | LPWSTR pwzScriptPath; | ||
49 | HANDLE hScriptFile; | ||
50 | } *WCA_CASCRIPT_HANDLE; | ||
51 | |||
52 | typedef enum WCA_ENCODING | ||
53 | { | ||
54 | WCA_ENCODING_UNKNOWN, | ||
55 | WCA_ENCODING_UTF_16, | ||
56 | WCA_ENCODING_UTF_8, | ||
57 | WCA_ENCODING_ANSI, | ||
58 | } WCA_ENCODING; | ||
59 | |||
60 | void WIXAPI WcaGlobalInitialize( | ||
61 | __in HINSTANCE hInst | ||
62 | ); | ||
63 | void WIXAPI WcaGlobalFinalize(); | ||
64 | |||
65 | HRESULT WIXAPI WcaInitialize( | ||
66 | __in MSIHANDLE hInstall, | ||
67 | __in_z PCSTR szCustomActionLogName | ||
68 | ); | ||
69 | UINT WIXAPI WcaFinalize( | ||
70 | __in UINT iReturnValue | ||
71 | ); | ||
72 | BOOL WIXAPI WcaIsInitialized(); | ||
73 | |||
74 | MSIHANDLE WIXAPI WcaGetInstallHandle(); | ||
75 | MSIHANDLE WIXAPI WcaGetDatabaseHandle(); | ||
76 | |||
77 | const char* WIXAPI WcaGetLogName(); | ||
78 | |||
79 | void WIXAPI WcaSetReturnValue( | ||
80 | __in UINT iReturnValue | ||
81 | ); | ||
82 | BOOL WIXAPI WcaCancelDetected(); | ||
83 | |||
84 | #define LOG_BUFFER 2048 | ||
85 | typedef enum LOGLEVEL | ||
86 | { | ||
87 | LOGMSG_TRACEONLY, // Never written to the log file (except in DEBUG builds) | ||
88 | LOGMSG_VERBOSE, // Written to log when LOGVERBOSE | ||
89 | LOGMSG_STANDARD // Written to log whenever informational logging is enabled | ||
90 | } LOGLEVEL; | ||
91 | |||
92 | void __cdecl WcaLog( | ||
93 | __in LOGLEVEL llv, | ||
94 | __in_z __format_string PCSTR fmt, ... | ||
95 | ); | ||
96 | BOOL WIXAPI WcaDisplayAssert( | ||
97 | __in LPCSTR sz | ||
98 | ); | ||
99 | void __cdecl WcaLogError( | ||
100 | __in HRESULT hr, | ||
101 | __in LPCSTR szMessage, | ||
102 | ... | ||
103 | ); | ||
104 | |||
105 | UINT WIXAPI WcaProcessMessage( | ||
106 | __in INSTALLMESSAGE eMessageType, | ||
107 | __in MSIHANDLE hRecord | ||
108 | ); | ||
109 | UINT __cdecl WcaErrorMessage( | ||
110 | __in int iError, | ||
111 | __in HRESULT hrError, | ||
112 | __in UINT uiType, | ||
113 | __in INT cArgs, | ||
114 | ... | ||
115 | ); | ||
116 | HRESULT WIXAPI WcaProgressMessage( | ||
117 | __in UINT uiCost, | ||
118 | __in BOOL fExtendProgressBar | ||
119 | ); | ||
120 | |||
121 | BOOL WIXAPI WcaIsInstalling( | ||
122 | __in INSTALLSTATE isInstalled, | ||
123 | __in INSTALLSTATE isAction | ||
124 | ); | ||
125 | BOOL WIXAPI WcaIsReInstalling( | ||
126 | __in INSTALLSTATE isInstalled, | ||
127 | __in INSTALLSTATE isAction | ||
128 | ); | ||
129 | BOOL WIXAPI WcaIsUninstalling( | ||
130 | __in INSTALLSTATE isInstalled, | ||
131 | __in INSTALLSTATE isAction | ||
132 | ); | ||
133 | |||
134 | HRESULT WIXAPI WcaSetComponentState( | ||
135 | __in_z LPCWSTR wzComponent, | ||
136 | __in INSTALLSTATE isState | ||
137 | ); | ||
138 | |||
139 | HRESULT WIXAPI WcaTableExists( | ||
140 | __in_z LPCWSTR wzTable | ||
141 | ); | ||
142 | |||
143 | HRESULT WIXAPI WcaOpenView( | ||
144 | __in_z LPCWSTR wzSql, | ||
145 | __out MSIHANDLE* phView | ||
146 | ); | ||
147 | HRESULT WIXAPI WcaExecuteView( | ||
148 | __in MSIHANDLE hView, | ||
149 | __in MSIHANDLE hRec | ||
150 | ); | ||
151 | HRESULT WIXAPI WcaOpenExecuteView( | ||
152 | __in_z LPCWSTR wzSql, | ||
153 | __out MSIHANDLE* phView | ||
154 | ); | ||
155 | HRESULT WIXAPI WcaFetchRecord( | ||
156 | __in MSIHANDLE hView, | ||
157 | __out MSIHANDLE* phRec | ||
158 | ); | ||
159 | HRESULT WIXAPI WcaFetchSingleRecord( | ||
160 | __in MSIHANDLE hView, | ||
161 | __out MSIHANDLE* phRec | ||
162 | ); | ||
163 | |||
164 | HRESULT WIXAPI WcaGetProperty( | ||
165 | __in_z LPCWSTR wzProperty, | ||
166 | __inout LPWSTR* ppwzData | ||
167 | ); | ||
168 | HRESULT WIXAPI WcaGetFormattedProperty( | ||
169 | __in_z LPCWSTR wzProperty, | ||
170 | __out LPWSTR* ppwzData | ||
171 | ); | ||
172 | HRESULT WIXAPI WcaGetFormattedString( | ||
173 | __in_z LPCWSTR wzString, | ||
174 | __out LPWSTR* ppwzData | ||
175 | ); | ||
176 | HRESULT WIXAPI WcaGetIntProperty( | ||
177 | __in_z LPCWSTR wzProperty, | ||
178 | __inout int* piData | ||
179 | ); | ||
180 | HRESULT WIXAPI WcaGetTargetPath( | ||
181 | __in_z LPCWSTR wzFolder, | ||
182 | __out LPWSTR* ppwzData | ||
183 | ); | ||
184 | HRESULT WIXAPI WcaSetProperty( | ||
185 | __in_z LPCWSTR wzPropertyName, | ||
186 | __in_z LPCWSTR wzPropertyValue | ||
187 | ); | ||
188 | HRESULT WIXAPI WcaSetIntProperty( | ||
189 | __in_z LPCWSTR wzPropertyName, | ||
190 | __in int nPropertyValue | ||
191 | ); | ||
192 | BOOL WIXAPI WcaIsPropertySet( | ||
193 | __in LPCSTR szProperty | ||
194 | ); | ||
195 | BOOL WIXAPI WcaIsUnicodePropertySet( | ||
196 | __in LPCWSTR wzProperty | ||
197 | ); | ||
198 | |||
199 | HRESULT WIXAPI WcaGetRecordInteger( | ||
200 | __in MSIHANDLE hRec, | ||
201 | __in UINT uiField, | ||
202 | __inout int* piData | ||
203 | ); | ||
204 | HRESULT WIXAPI WcaGetRecordString( | ||
205 | __in MSIHANDLE hRec, | ||
206 | __in UINT uiField, | ||
207 | __inout LPWSTR* ppwzData | ||
208 | ); | ||
209 | HRESULT WIXAPI WcaGetRecordFormattedInteger( | ||
210 | __in MSIHANDLE hRec, | ||
211 | __in UINT uiField, | ||
212 | __out int* piData | ||
213 | ); | ||
214 | HRESULT WIXAPI WcaGetRecordFormattedString( | ||
215 | __in MSIHANDLE hRec, | ||
216 | __in UINT uiField, | ||
217 | __inout LPWSTR* ppwzData | ||
218 | ); | ||
219 | |||
220 | HRESULT WIXAPI WcaAllocStream( | ||
221 | __deref_out_bcount_part(cbData, 0) BYTE** ppbData, | ||
222 | __in DWORD cbData | ||
223 | ); | ||
224 | HRESULT WIXAPI WcaFreeStream( | ||
225 | __in BYTE* pbData | ||
226 | ); | ||
227 | |||
228 | HRESULT WIXAPI WcaGetRecordStream( | ||
229 | __in MSIHANDLE hRecBinary, | ||
230 | __in UINT uiField, | ||
231 | __deref_out_bcount_full(*pcbData) BYTE** ppbData, | ||
232 | __out DWORD* pcbData | ||
233 | ); | ||
234 | HRESULT WIXAPI WcaSetRecordString( | ||
235 | __in MSIHANDLE hRec, | ||
236 | __in UINT uiField, | ||
237 | __in_z LPCWSTR wzData | ||
238 | ); | ||
239 | HRESULT WIXAPI WcaSetRecordInteger( | ||
240 | __in MSIHANDLE hRec, | ||
241 | __in UINT uiField, | ||
242 | __in int iValue | ||
243 | ); | ||
244 | |||
245 | HRESULT WIXAPI WcaDoDeferredAction( | ||
246 | __in_z LPCWSTR wzAction, | ||
247 | __in_z LPCWSTR wzCustomActionData, | ||
248 | __in UINT uiCost | ||
249 | ); | ||
250 | DWORD WIXAPI WcaCountOfCustomActionDataRecords( | ||
251 | __in_z LPCWSTR wzData | ||
252 | ); | ||
253 | |||
254 | HRESULT WIXAPI WcaReadStringFromCaData( | ||
255 | __deref_in LPWSTR* ppwzCustomActionData, | ||
256 | __deref_out_z LPWSTR* ppwzString | ||
257 | ); | ||
258 | HRESULT WIXAPI WcaReadIntegerFromCaData( | ||
259 | __deref_in LPWSTR* ppwzCustomActionData, | ||
260 | __out int* piResult | ||
261 | ); | ||
262 | HRESULT WIXAPI WcaReadStreamFromCaData( | ||
263 | __deref_in LPWSTR* ppwzCustomActionData, | ||
264 | __deref_out_bcount(*pcbData) BYTE** ppbData, | ||
265 | __out DWORD_PTR* pcbData | ||
266 | ); | ||
267 | HRESULT WIXAPI WcaWriteStringToCaData( | ||
268 | __in_z LPCWSTR wzString, | ||
269 | __deref_inout_z LPWSTR* ppwzCustomActionData | ||
270 | ); | ||
271 | HRESULT WIXAPI WcaWriteIntegerToCaData( | ||
272 | __in int i, | ||
273 | __deref_out_z_opt LPWSTR* ppwzCustomActionData | ||
274 | ); | ||
275 | HRESULT WIXAPI WcaWriteStreamToCaData( | ||
276 | __in_bcount(cbData) const BYTE* pbData, | ||
277 | __in DWORD cbData, | ||
278 | __deref_inout_z_opt LPWSTR* ppwzCustomActionData | ||
279 | ); | ||
280 | |||
281 | HRESULT __cdecl WcaAddTempRecord( | ||
282 | __inout MSIHANDLE* phTableView, | ||
283 | __inout MSIHANDLE* phColumns, | ||
284 | __in_z LPCWSTR wzTable, | ||
285 | __out_opt MSIDBERROR* pdbError, | ||
286 | __in UINT uiUniquifyColumn, | ||
287 | __in UINT cColumns, | ||
288 | ... | ||
289 | ); | ||
290 | |||
291 | HRESULT WIXAPI WcaDumpTable( | ||
292 | __in_z LPCWSTR wzTable | ||
293 | ); | ||
294 | |||
295 | HRESULT WIXAPI WcaDeferredActionRequiresReboot(); | ||
296 | BOOL WIXAPI WcaDidDeferredActionRequireReboot(); | ||
297 | |||
298 | HRESULT WIXAPI WcaCaScriptCreateKey( | ||
299 | __out LPWSTR* ppwzScriptKey | ||
300 | ); | ||
301 | |||
302 | HRESULT WIXAPI WcaCaScriptCreate( | ||
303 | __in WCA_ACTION action, | ||
304 | __in WCA_CASCRIPT script, | ||
305 | __in BOOL fImpersonated, | ||
306 | __in_z LPCWSTR wzScriptKey, | ||
307 | __in BOOL fAppend, | ||
308 | __out WCA_CASCRIPT_HANDLE* phScript | ||
309 | ); | ||
310 | |||
311 | HRESULT WIXAPI WcaCaScriptOpen( | ||
312 | __in WCA_ACTION action, | ||
313 | __in WCA_CASCRIPT script, | ||
314 | __in BOOL fImpersonated, | ||
315 | __in_z LPCWSTR wzScriptKey, | ||
316 | __out WCA_CASCRIPT_HANDLE* phScript | ||
317 | ); | ||
318 | |||
319 | void WIXAPI WcaCaScriptClose( | ||
320 | __in_opt WCA_CASCRIPT_HANDLE hScript, | ||
321 | __in WCA_CASCRIPT_CLOSE closeOperation | ||
322 | ); | ||
323 | |||
324 | HRESULT WIXAPI WcaCaScriptReadAsCustomActionData( | ||
325 | __in WCA_CASCRIPT_HANDLE hScript, | ||
326 | __out LPWSTR* ppwzCustomActionData | ||
327 | ); | ||
328 | |||
329 | HRESULT WIXAPI WcaCaScriptWriteString( | ||
330 | __in WCA_CASCRIPT_HANDLE hScript, | ||
331 | __in_z LPCWSTR wzValue | ||
332 | ); | ||
333 | |||
334 | HRESULT WIXAPI WcaCaScriptWriteNumber( | ||
335 | __in WCA_CASCRIPT_HANDLE hScript, | ||
336 | __in DWORD dwValue | ||
337 | ); | ||
338 | |||
339 | void WIXAPI WcaCaScriptFlush( | ||
340 | __in WCA_CASCRIPT_HANDLE hScript | ||
341 | ); | ||
342 | |||
343 | void WIXAPI WcaCaScriptCleanup( | ||
344 | __in_z LPCWSTR wzProductCode, | ||
345 | __in BOOL fImpersonated | ||
346 | ); | ||
347 | |||
348 | HRESULT WIXAPI QuietExec( | ||
349 | __inout_z LPWSTR wzCommand, | ||
350 | __in DWORD dwTimeout, | ||
351 | __in BOOL fLogCommand, | ||
352 | __in BOOL fLogOutput | ||
353 | ); | ||
354 | |||
355 | HRESULT WIXAPI QuietExecCapture( | ||
356 | __inout_z LPWSTR wzCommand, | ||
357 | __in DWORD dwTimeout, | ||
358 | __in BOOL fLogCommand, | ||
359 | __in BOOL fLogOutput, | ||
360 | __out_z_opt LPWSTR* psczOutput | ||
361 | ); | ||
362 | |||
363 | WCA_TODO WIXAPI WcaGetComponentToDo( | ||
364 | __in_z LPCWSTR wzComponentId | ||
365 | ); | ||
366 | |||
367 | HRESULT WIXAPI WcaExtractBinaryToBuffer( | ||
368 | __in LPCWSTR wzBinaryId, | ||
369 | __out BYTE** pbData, | ||
370 | __out DWORD* pcbData | ||
371 | ); | ||
372 | HRESULT WIXAPI WcaExtractBinaryToFile( | ||
373 | __in LPCWSTR wzBinaryId, | ||
374 | __in LPCWSTR wzPath | ||
375 | ); | ||
376 | HRESULT WIXAPI WcaExtractBinaryToString( | ||
377 | __in LPCWSTR wzBinaryId, | ||
378 | __deref_out_z LPWSTR* psczOutput, | ||
379 | __out WCA_ENCODING* encoding | ||
380 | ); | ||
381 | |||
382 | #ifdef __cplusplus | ||
383 | } | ||
384 | #endif | ||