PageRenderTime 25ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/Util/Wix35/sdk/inc/wcautil.h

http://github.com/IronLanguages/main
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
  1. #pragma once
  2. //-------------------------------------------------------------------------------------------------
  3. // <copyright file="wcautil.h" company="Microsoft">
  4. // Copyright (c) Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are covered by the
  7. // Common Public License 1.0 (http://opensource.org/licenses/cpl1.0.php)
  8. // which can be found in the file CPL.TXT at the root of this distribution.
  9. // By using this software in any fashion, you are agreeing to be bound by
  10. // the terms of this license.
  11. //
  12. // You must not remove this notice, or any other, from this software.
  13. // </copyright>
  14. //
  15. // <summary>
  16. // Windows Installer XML CustomAction utility library.
  17. // </summary>
  18. //-------------------------------------------------------------------------------------------------
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. #define WIXAPI __stdcall
  23. #define ExitTrace WcaLogError
  24. #define ExitTrace1 WcaLogError
  25. #define ExitTrace2 WcaLogError
  26. #define ExitTrace3 WcaLogError
  27. #include "dutil.h"
  28. #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; } }
  29. #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; } }
  30. #define MessageExitOnFailure(x, e, s) if (FAILED(x)) { ExitTrace(x, "%s", s); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 0); goto LExit; }
  31. #define MessageExitOnFailure1(x, e, f, s) if (FAILED(x)) { ExitTrace1(x, f, s); WcaErrorMessage(e, x, INSTALLMESSAGE_ERROR | MB_OK, 1, s); goto LExit; }
  32. #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; }
  33. #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; }
  34. #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; }
  35. #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; }
  36. #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; }
  37. // Generic action enum.
  38. enum WCA_ACTION
  39. {
  40. WCA_ACTION_NONE,
  41. WCA_ACTION_INSTALL,
  42. WCA_ACTION_UNINSTALL,
  43. };
  44. enum WCA_CASCRIPT
  45. {
  46. WCA_CASCRIPT_SCHEDULED,
  47. WCA_CASCRIPT_ROLLBACK,
  48. };
  49. enum WCA_CASCRIPT_CLOSE
  50. {
  51. WCA_CASCRIPT_CLOSE_PRESERVE,
  52. WCA_CASCRIPT_CLOSE_DELETE,
  53. };
  54. enum WCA_TODO
  55. {
  56. WCA_TODO_UNKNOWN,
  57. WCA_TODO_INSTALL,
  58. WCA_TODO_UNINSTALL,
  59. WCA_TODO_REINSTALL,
  60. };
  61. typedef struct WCA_CASCRIPT_STRUCT
  62. {
  63. LPWSTR pwzScriptPath;
  64. HANDLE hScriptFile;
  65. } *WCA_CASCRIPT_HANDLE;
  66. void WIXAPI WcaGlobalInitialize(
  67. __in HINSTANCE hInst
  68. );
  69. void WIXAPI WcaGlobalFinalize();
  70. HRESULT WIXAPI WcaInitialize(
  71. __in MSIHANDLE hInstall,
  72. __in_z PCSTR szCustomActionLogName
  73. );
  74. UINT WIXAPI WcaFinalize(
  75. __in UINT iReturnValue
  76. );
  77. BOOL WIXAPI WcaIsInitialized();
  78. MSIHANDLE WIXAPI WcaGetInstallHandle();
  79. MSIHANDLE WIXAPI WcaGetDatabaseHandle();
  80. const char* WIXAPI WcaGetLogName();
  81. void WIXAPI WcaSetReturnValue(
  82. __in UINT iReturnValue
  83. );
  84. BOOL WIXAPI WcaCancelDetected();
  85. const int LOG_BUFFER = 2048;
  86. enum LOGLEVEL
  87. {
  88. LOGMSG_TRACEONLY, // Never written to the log file (except in DEBUG builds)
  89. LOGMSG_VERBOSE, // Written to log when LOGVERBOSE
  90. LOGMSG_STANDARD // Written to log whenever informational logging is enabled
  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. UINT WIXAPI WcaProcessMessage(
  105. __in INSTALLMESSAGE eMessageType,
  106. __in MSIHANDLE hRecord
  107. );
  108. UINT __cdecl WcaErrorMessage(
  109. __in int iError,
  110. __in HRESULT hrError,
  111. __in UINT uiType,
  112. __in DWORD cArgs,
  113. ...
  114. );
  115. HRESULT WIXAPI WcaProgressMessage(
  116. __in UINT uiCost,
  117. __in BOOL fExtendProgressBar
  118. );
  119. BOOL WIXAPI WcaIsInstalling(
  120. __in INSTALLSTATE isInstalled,
  121. __in INSTALLSTATE isAction
  122. );
  123. BOOL WIXAPI WcaIsReInstalling(
  124. __in INSTALLSTATE isInstalled,
  125. __in INSTALLSTATE isAction
  126. );
  127. BOOL WIXAPI WcaIsUninstalling(
  128. __in INSTALLSTATE isInstalled,
  129. __in INSTALLSTATE isAction
  130. );
  131. HRESULT WIXAPI WcaSetComponentState(
  132. __in_z LPCWSTR wzComponent,
  133. __in INSTALLSTATE isState
  134. );
  135. HRESULT WIXAPI WcaTableExists(
  136. __in_z LPCWSTR wzTable
  137. );
  138. HRESULT WIXAPI WcaOpenView(
  139. __in_z LPCWSTR wzSql,
  140. __out MSIHANDLE* phView
  141. );
  142. HRESULT WIXAPI WcaExecuteView(
  143. __in MSIHANDLE hView,
  144. __in MSIHANDLE hRec
  145. );
  146. HRESULT WIXAPI WcaOpenExecuteView(
  147. __in_z LPCWSTR wzSql,
  148. __out MSIHANDLE* phView
  149. );
  150. HRESULT WIXAPI WcaFetchRecord(
  151. __in MSIHANDLE hView,
  152. __out MSIHANDLE* phRec
  153. );
  154. HRESULT WIXAPI WcaFetchSingleRecord(
  155. __in MSIHANDLE hView,
  156. __out MSIHANDLE* phRec
  157. );
  158. HRESULT WIXAPI WcaGetProperty(
  159. __in_z LPCWSTR wzProperty,
  160. __inout LPWSTR* ppwzData
  161. );
  162. HRESULT WIXAPI WcaGetFormattedProperty(
  163. __in_z LPCWSTR wzProperty,
  164. __out LPWSTR* ppwzData
  165. );
  166. HRESULT WIXAPI WcaGetFormattedString(
  167. __in_z LPCWSTR wzString,
  168. __out LPWSTR* ppwzData
  169. );
  170. HRESULT WIXAPI WcaGetIntProperty(
  171. __in_z LPCWSTR wzProperty,
  172. __inout int* piData
  173. );
  174. HRESULT WIXAPI WcaGetTargetPath(
  175. __in_z LPCWSTR wzFolder,
  176. __out LPWSTR* ppwzData
  177. );
  178. HRESULT WIXAPI WcaSetProperty(
  179. __in_z LPCWSTR wzPropertyName,
  180. __in_z LPCWSTR wzPropertyValue
  181. );
  182. HRESULT WIXAPI WcaSetIntProperty(
  183. __in_z LPCWSTR wzPropertyName,
  184. __in int nPropertyValue
  185. );
  186. BOOL WIXAPI WcaIsPropertySet(
  187. __in LPCSTR szProperty
  188. );
  189. HRESULT WIXAPI WcaGetRecordInteger(
  190. __in MSIHANDLE hRec,
  191. __in UINT uiField,
  192. __inout int* piData
  193. );
  194. HRESULT WIXAPI WcaGetRecordString(
  195. __in MSIHANDLE hRec,
  196. __in UINT uiField,
  197. __inout LPWSTR* ppwzData
  198. );
  199. HRESULT WIXAPI WcaGetRecordFormattedInteger(
  200. __in MSIHANDLE hRec,
  201. __in UINT uiField,
  202. __out int* piData
  203. );
  204. HRESULT WIXAPI WcaGetRecordFormattedString(
  205. __in MSIHANDLE hRec,
  206. __in UINT uiField,
  207. __inout LPWSTR* ppwzData
  208. );
  209. HRESULT WIXAPI WcaAllocStream(
  210. __deref_out_bcount_part(cbData, 0) BYTE** ppbData,
  211. __in DWORD cbData
  212. );
  213. HRESULT WIXAPI WcaFreeStream(
  214. __in BYTE* pbData
  215. );
  216. HRESULT WIXAPI WcaGetRecordStream(
  217. __in MSIHANDLE hRecBinary,
  218. __in UINT uiField,
  219. __deref_out_bcount_full(*pcbData) BYTE** ppbData,
  220. __out DWORD* pcbData
  221. );
  222. HRESULT WIXAPI WcaSetRecordString(
  223. __in MSIHANDLE hRec,
  224. __in UINT uiField,
  225. __in_z LPCWSTR wzData
  226. );
  227. HRESULT WIXAPI WcaSetRecordInteger(
  228. __in MSIHANDLE hRec,
  229. __in UINT uiField,
  230. __in int iValue
  231. );
  232. HRESULT WIXAPI WcaDoDeferredAction(
  233. __in_z LPCWSTR wzAction,
  234. __in_z LPCWSTR wzCustomActionData,
  235. __in UINT uiCost
  236. );
  237. DWORD WIXAPI WcaCountOfCustomActionDataRecords(
  238. __in_z LPCWSTR wzData
  239. );
  240. void WIXAPI RevertCustomActionData(
  241. __in LPWSTR wzRevertTo,
  242. __in LPCWSTR wzRevertFrom
  243. );
  244. HRESULT WIXAPI WcaReadStringFromCaData(
  245. __deref_in LPWSTR* ppwzCustomActionData,
  246. __deref_out_z LPWSTR* ppwzString
  247. );
  248. HRESULT WIXAPI WcaReadIntegerFromCaData(
  249. __deref_in LPWSTR* ppwzCustomActionData,
  250. __out int* piResult
  251. );
  252. HRESULT WIXAPI WcaReadStreamFromCaData(
  253. __deref_in LPWSTR* ppwzCustomActionData,
  254. __deref_out_bcount(*pcbData) BYTE** ppbData,
  255. __out DWORD_PTR* pcbData
  256. );
  257. HRESULT WIXAPI WcaWriteStringToCaData(
  258. __in_z LPCWSTR wzString,
  259. __deref_inout_z LPWSTR* ppwzCustomActionData
  260. );
  261. HRESULT WIXAPI WcaWriteIntegerToCaData(
  262. __in int i,
  263. __deref_inout_z LPWSTR* ppwzCustomActionData
  264. );
  265. HRESULT WIXAPI WcaWriteStreamToCaData(
  266. __in_bcount(cbData) const BYTE* pbData,
  267. __in DWORD cbData,
  268. __deref_inout_z LPWSTR* ppwzCustomActionData
  269. );
  270. HRESULT __cdecl WcaAddTempRecord(
  271. __inout MSIHANDLE* phTableView,
  272. __inout MSIHANDLE* phColumns,
  273. __in_z LPCWSTR wzTable,
  274. __out_opt MSIDBERROR* pdbError,
  275. __in UINT uiUniquifyColumn,
  276. __in UINT cColumns,
  277. ...
  278. );
  279. HRESULT WIXAPI WcaDumpTable(
  280. __in_z LPCWSTR wzTable
  281. );
  282. HRESULT WIXAPI WcaDeferredActionRequiresReboot();
  283. BOOL WIXAPI WcaDidDeferredActionRequireReboot();
  284. HRESULT WIXAPI WcaCaScriptCreateKey(
  285. __out LPWSTR* ppwzScriptKey
  286. );
  287. HRESULT WIXAPI WcaCaScriptCreate(
  288. __in WCA_ACTION action,
  289. __in WCA_CASCRIPT script,
  290. __in BOOL fImpersonated,
  291. __in_z LPCWSTR wzScriptKey,
  292. __in BOOL fAppend,
  293. __out WCA_CASCRIPT_HANDLE* phScript
  294. );
  295. HRESULT WIXAPI WcaCaScriptOpen(
  296. __in WCA_ACTION action,
  297. __in WCA_CASCRIPT script,
  298. __in BOOL fImpersonated,
  299. __in_z LPCWSTR wzScriptKey,
  300. __out WCA_CASCRIPT_HANDLE* phScript
  301. );
  302. void WIXAPI WcaCaScriptClose(
  303. __in_opt WCA_CASCRIPT_HANDLE hScript,
  304. __in WCA_CASCRIPT_CLOSE closeOperation
  305. );
  306. HRESULT WIXAPI WcaCaScriptReadAsCustomActionData(
  307. __in WCA_CASCRIPT_HANDLE hScript,
  308. __out LPWSTR* ppwzCustomActionData
  309. );
  310. HRESULT WIXAPI WcaCaScriptWriteString(
  311. __in WCA_CASCRIPT_HANDLE hScript,
  312. __in_z LPCWSTR wzValue
  313. );
  314. HRESULT WIXAPI WcaCaScriptWriteNumber(
  315. __in WCA_CASCRIPT_HANDLE hScript,
  316. __in DWORD dwValue
  317. );
  318. void WIXAPI WcaCaScriptFlush(
  319. __in WCA_CASCRIPT_HANDLE hScript
  320. );
  321. void WIXAPI WcaCaScriptCleanup(
  322. __in_z LPCWSTR wzProductCode,
  323. __in BOOL fImpersonated
  324. );
  325. HRESULT WIXAPI QuietExec(
  326. __inout_z LPWSTR wzCommand,
  327. __in DWORD dwTimeout
  328. );
  329. WCA_TODO WIXAPI WcaGetComponentToDo(
  330. __in_z LPCWSTR wzComponentId
  331. );
  332. #ifdef __cplusplus
  333. }
  334. #endif