aboutsummaryrefslogtreecommitdiff
path: root/src/engine/variable.h
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2018-12-29 22:12:08 -0600
committerSean Hall <r.sean.hall@gmail.com>2018-12-29 22:12:08 -0600
commit61847dddd4fd497057c780658e383c4627de19ec (patch)
treef85a845182922538ab9aa6ee85b0db3ab40c1f6e /src/engine/variable.h
parent8295f5f8fd28042e1a0a172d5afbba79178064c2 (diff)
downloadwix-61847dddd4fd497057c780658e383c4627de19ec.tar.gz
wix-61847dddd4fd497057c780658e383c4627de19ec.tar.bz2
wix-61847dddd4fd497057c780658e383c4627de19ec.zip
Import code from old v4 repo
Diffstat (limited to 'src/engine/variable.h')
-rw-r--r--src/engine/variable.h190
1 files changed, 190 insertions, 0 deletions
diff --git a/src/engine/variable.h b/src/engine/variable.h
new file mode 100644
index 00000000..c48e0160
--- /dev/null
+++ b/src/engine/variable.h
@@ -0,0 +1,190 @@
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#if defined(__cplusplus)
6extern "C" {
7#endif
8
9
10// constants
11
12const LPCWSTR VARIABLE_DATE = L"Date";
13const LPCWSTR VARIABLE_LOGONUSER = L"LogonUser";
14const LPCWSTR VARIABLE_INSTALLERNAME = L"InstallerName";
15const LPCWSTR VARIABLE_INSTALLERVERSION = L"InstallerVersion";
16
17
18// typedefs
19
20typedef HRESULT (*PFN_INITIALIZEVARIABLE)(
21 __in DWORD_PTR dwpData,
22 __inout BURN_VARIANT* pValue
23 );
24
25
26// constants
27
28enum BURN_VARIABLE_INTERNAL_TYPE
29{
30 BURN_VARIABLE_INTERNAL_TYPE_NORMAL, // the BA can set this variable.
31 BURN_VARIABLE_INTERNAL_TYPE_OVERRIDABLE_BUILTIN, // the BA can't set this variable, but the unelevated process can serialize it to the elevated process.
32 BURN_VARIABLE_INTERNAL_TYPE_BUILTIN, // the BA can't set this variable, and the unelevated process can't serialize it to the elevated process.
33};
34
35
36// structs
37
38typedef struct _BURN_VARIABLE
39{
40 LPWSTR sczName;
41 BURN_VARIANT Value;
42 BOOL fHidden;
43 BOOL fLiteral; // if fLiteral, then when formatting this variable its value should be used as is (don't continue recursively formatting).
44 BOOL fPersisted;
45
46 // used for late initialization of built-in variables
47 BURN_VARIABLE_INTERNAL_TYPE internalType;
48 PFN_INITIALIZEVARIABLE pfnInitialize;
49 DWORD_PTR dwpInitializeData;
50} BURN_VARIABLE;
51
52typedef struct _BURN_VARIABLES
53{
54 CRITICAL_SECTION csAccess;
55 DWORD dwMaxVariables;
56 DWORD cVariables;
57 BURN_VARIABLE* rgVariables;
58} BURN_VARIABLES;
59
60
61// function declarations
62
63HRESULT VariableInitialize(
64 __in BURN_VARIABLES* pVariables
65 );
66HRESULT VariablesParseFromXml(
67 __in BURN_VARIABLES* pVariables,
68 __in IXMLDOMNode* pixnBundle
69 );
70void VariablesUninitialize(
71 __in BURN_VARIABLES* pVariables
72 );
73void VariablesDump(
74 __in BURN_VARIABLES* pVariables
75 );
76HRESULT VariableGetNumeric(
77 __in BURN_VARIABLES* pVariables,
78 __in_z LPCWSTR wzVariable,
79 __out LONGLONG* pllValue
80 );
81HRESULT VariableGetString(
82 __in BURN_VARIABLES* pVariables,
83 __in_z LPCWSTR wzVariable,
84 __out_z LPWSTR* psczValue
85 );
86HRESULT VariableGetVersion(
87 __in BURN_VARIABLES* pVariables,
88 __in_z LPCWSTR wzVariable,
89 __in DWORD64* pqwValue
90 );
91HRESULT VariableGetVariant(
92 __in BURN_VARIABLES* pVariables,
93 __in_z LPCWSTR wzVariable,
94 __in BURN_VARIANT* pValue
95 );
96HRESULT VariableGetFormatted(
97 __in BURN_VARIABLES* pVariables,
98 __in_z LPCWSTR wzVariable,
99 __out_z LPWSTR* psczValue
100 );
101HRESULT VariableSetNumeric(
102 __in BURN_VARIABLES* pVariables,
103 __in_z LPCWSTR wzVariable,
104 __in LONGLONG llValue,
105 __in BOOL fOverwriteBuiltIn
106 );
107HRESULT VariableSetLiteralString(
108 __in BURN_VARIABLES* pVariables,
109 __in_z LPCWSTR wzVariable,
110 __in_z_opt LPCWSTR wzValue,
111 __in BOOL fOverwriteBuiltIn
112 );
113HRESULT VariableSetString(
114 __in BURN_VARIABLES* pVariables,
115 __in_z LPCWSTR wzVariable,
116 __in_z_opt LPCWSTR wzValue,
117 __in BOOL fOverwriteBuiltIn
118 );
119HRESULT VariableSetVersion(
120 __in BURN_VARIABLES* pVariables,
121 __in_z LPCWSTR wzVariable,
122 __in DWORD64 qwValue,
123 __in BOOL fOverwriteBuiltIn
124 );
125HRESULT VariableSetLiteralVariant(
126 __in BURN_VARIABLES* pVariables,
127 __in_z LPCWSTR wzVariable,
128 __in BURN_VARIANT* pVariant
129 );
130HRESULT VariableFormatString(
131 __in BURN_VARIABLES* pVariables,
132 __in_z LPCWSTR wzIn,
133 __out_z_opt LPWSTR* psczOut,
134 __out_opt DWORD* pcchOut
135 );
136HRESULT VariableFormatStringObfuscated(
137 __in BURN_VARIABLES* pVariables,
138 __in_z LPCWSTR wzIn,
139 __out_z_opt LPWSTR* psczOut,
140 __out_opt DWORD* pcchOut
141 );
142HRESULT VariableEscapeString(
143 __in_z LPCWSTR wzIn,
144 __out_z LPWSTR* psczOut
145 );
146HRESULT VariableSerialize(
147 __in BURN_VARIABLES* pVariables,
148 __in BOOL fPersisting,
149 __inout BYTE** ppbBuffer,
150 __inout SIZE_T* piBuffer
151 );
152HRESULT VariableDeserialize(
153 __in BURN_VARIABLES* pVariables,
154 __in BOOL fWasPersisted,
155 __in_bcount(cbBuffer) BYTE* pbBuffer,
156 __in SIZE_T cbBuffer,
157 __inout SIZE_T* piBuffer
158 );
159HRESULT VariableStrAlloc(
160 __in BOOL fZeroOnRealloc,
161 __deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
162 __in DWORD_PTR cch
163 );
164HRESULT VariableStrAllocString(
165 __in BOOL fZeroOnRealloc,
166 __deref_out_ecount_z(cchSource + 1) LPWSTR* ppwz,
167 __in_z LPCWSTR wzSource,
168 __in DWORD_PTR cchSource
169 );
170HRESULT VariableStrAllocConcat(
171 __in BOOL fZeroOnRealloc,
172 __deref_out_z LPWSTR* ppwz,
173 __in_z LPCWSTR wzSource,
174 __in DWORD_PTR cchSource
175 );
176HRESULT __cdecl VariableStrAllocFormatted(
177 __in BOOL fZeroOnRealloc,
178 __deref_out_z LPWSTR* ppwz,
179 __in __format_string LPCWSTR wzFormat,
180 ...
181 );
182HRESULT VariableIsHidden(
183 __in BURN_VARIABLES* pVariables,
184 __in_z LPCWSTR wzVariable,
185 __out BOOL* pfHidden
186 );
187
188#if defined(__cplusplus)
189}
190#endif