/
IBootstrapperEngine.h
227 lines (190 loc) · 6.22 KB
/
IBootstrapperEngine.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
#pragma once
// 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.
#define IDERROR -1
#define IDNOACTION 0
#ifndef FACILITY_WIX
#define FACILITY_WIX 500
#endif
static const HRESULT E_SUSPECTED_AV_INTERFERENCE = MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIX, 2000);
#define IDDOWNLOAD 101 // Only valid as a return code from OnResolveSource() to instruct the engine to use the download source.
#define IDRESTART 102
#define IDSUSPEND 103
#define IDRELOAD_BOOTSTRAPPER 104
// Note that ordering of the enumeration values is important.
// Some code paths use < or > comparisions and simply reording values will break those comparisons.
enum BOOTSTRAPPER_ACTION
{
BOOTSTRAPPER_ACTION_UNKNOWN,
BOOTSTRAPPER_ACTION_HELP,
BOOTSTRAPPER_ACTION_LAYOUT,
BOOTSTRAPPER_ACTION_UNINSTALL,
BOOTSTRAPPER_ACTION_CACHE,
BOOTSTRAPPER_ACTION_INSTALL,
BOOTSTRAPPER_ACTION_MODIFY,
BOOTSTRAPPER_ACTION_REPAIR,
BOOTSTRAPPER_ACTION_UPDATE_REPLACE,
BOOTSTRAPPER_ACTION_UPDATE_REPLACE_EMBEDDED,
};
enum BOOTSTRAPPER_ACTION_STATE
{
BOOTSTRAPPER_ACTION_STATE_NONE,
BOOTSTRAPPER_ACTION_STATE_UNINSTALL,
BOOTSTRAPPER_ACTION_STATE_INSTALL,
BOOTSTRAPPER_ACTION_STATE_ADMIN_INSTALL,
BOOTSTRAPPER_ACTION_STATE_MODIFY,
BOOTSTRAPPER_ACTION_STATE_REPAIR,
BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE,
BOOTSTRAPPER_ACTION_STATE_MAJOR_UPGRADE,
BOOTSTRAPPER_ACTION_STATE_PATCH,
};
enum BOOTSTRAPPER_PACKAGE_STATE
{
BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN,
BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE,
BOOTSTRAPPER_PACKAGE_STATE_ABSENT,
BOOTSTRAPPER_PACKAGE_STATE_CACHED,
BOOTSTRAPPER_PACKAGE_STATE_PRESENT,
BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED,
};
enum BOOTSTRAPPER_REQUEST_STATE
{
BOOTSTRAPPER_REQUEST_STATE_NONE,
BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT,
BOOTSTRAPPER_REQUEST_STATE_ABSENT,
BOOTSTRAPPER_REQUEST_STATE_CACHE,
BOOTSTRAPPER_REQUEST_STATE_PRESENT,
BOOTSTRAPPER_REQUEST_STATE_REPAIR,
};
enum BOOTSTRAPPER_FEATURE_STATE
{
BOOTSTRAPPER_FEATURE_STATE_UNKNOWN,
BOOTSTRAPPER_FEATURE_STATE_ABSENT,
BOOTSTRAPPER_FEATURE_STATE_ADVERTISED,
BOOTSTRAPPER_FEATURE_STATE_LOCAL,
BOOTSTRAPPER_FEATURE_STATE_SOURCE,
};
enum BOOTSTRAPPER_FEATURE_ACTION
{
BOOTSTRAPPER_FEATURE_ACTION_NONE,
BOOTSTRAPPER_FEATURE_ACTION_ADDLOCAL,
BOOTSTRAPPER_FEATURE_ACTION_ADDSOURCE,
BOOTSTRAPPER_FEATURE_ACTION_ADDDEFAULT,
BOOTSTRAPPER_FEATURE_ACTION_REINSTALL,
BOOTSTRAPPER_FEATURE_ACTION_ADVERTISE,
BOOTSTRAPPER_FEATURE_ACTION_REMOVE,
};
enum BOOTSTRAPPER_LOG_LEVEL
{
BOOTSTRAPPER_LOG_LEVEL_NONE, // turns off report (only valid for XXXSetLevel())
BOOTSTRAPPER_LOG_LEVEL_STANDARD, // written if reporting is on
BOOTSTRAPPER_LOG_LEVEL_VERBOSE, // written only if verbose reporting is on
BOOTSTRAPPER_LOG_LEVEL_DEBUG, // reporting useful when debugging code
BOOTSTRAPPER_LOG_LEVEL_ERROR, // always gets reported, but can never be specified
};
enum BOOTSTRAPPER_UPDATE_HASH_TYPE
{
BOOTSTRAPPER_UPDATE_HASH_TYPE_NONE,
BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA1,
};
DECLARE_INTERFACE_IID_(IBootstrapperEngine, IUnknown, "6480D616-27A0-44D7-905B-81512C29C2FB")
{
STDMETHOD(GetPackageCount)(
__out DWORD* pcPackages
) = 0;
STDMETHOD(GetVariableNumeric)(
__in_z LPCWSTR wzVariable,
__out LONGLONG* pllValue
) = 0;
STDMETHOD(GetVariableString)(
__in_z LPCWSTR wzVariable,
__out_ecount_opt(*pcchValue) LPWSTR wzValue,
__inout DWORD* pcchValue
) = 0;
STDMETHOD(GetVariableVersion)(
__in_z LPCWSTR wzVariable,
__out DWORD64* pqwValue
) = 0;
STDMETHOD(FormatString)(
__in_z LPCWSTR wzIn,
__out_ecount_opt(*pcchOut) LPWSTR wzOut,
__inout DWORD* pcchOut
) = 0;
STDMETHOD(EscapeString)(
__in_z LPCWSTR wzIn,
__out_ecount_opt(*pcchOut) LPWSTR wzOut,
__inout DWORD* pcchOut
) = 0;
STDMETHOD(EvaluateCondition)(
__in_z LPCWSTR wzCondition,
__out BOOL* pf
) = 0;
STDMETHOD(Log)(
__in BOOTSTRAPPER_LOG_LEVEL level,
__in_z LPCWSTR wzMessage
) = 0;
STDMETHOD(SendEmbeddedError)(
__in DWORD dwErrorCode,
__in_z_opt LPCWSTR wzMessage,
__in DWORD dwUIHint,
__out int* pnResult
) = 0;
STDMETHOD(SendEmbeddedProgress)(
__in DWORD dwProgressPercentage,
__in DWORD dwOverallProgressPercentage,
__out int* pnResult
) = 0;
STDMETHOD(SetUpdate)(
__in_z_opt LPCWSTR wzLocalSource,
__in_z_opt LPCWSTR wzDownloadSource,
__in DWORD64 qwSize,
__in BOOTSTRAPPER_UPDATE_HASH_TYPE hashType,
__in_bcount_opt(cbHash) BYTE* rgbHash,
__in DWORD cbHash
) = 0;
STDMETHOD(SetLocalSource)(
__in_z LPCWSTR wzPackageOrContainerId,
__in_z_opt LPCWSTR wzPayloadId,
__in_z LPCWSTR wzPath
) = 0;
STDMETHOD(SetDownloadSource)(
__in_z LPCWSTR wzPackageOrContainerId,
__in_z_opt LPCWSTR wzPayloadId,
__in_z LPCWSTR wzUrl,
__in_z_opt LPCWSTR wzUser,
__in_z_opt LPCWSTR wzPassword
) = 0;
STDMETHOD(SetVariableNumeric)(
__in_z LPCWSTR wzVariable,
__in LONGLONG llValue
) = 0;
STDMETHOD(SetVariableString)(
__in_z LPCWSTR wzVariable,
__in_z_opt LPCWSTR wzValue
) = 0;
STDMETHOD(SetVariableVersion)(
__in_z LPCWSTR wzVariable,
__in DWORD64 qwValue
) = 0;
STDMETHOD(CloseSplashScreen)() = 0;
STDMETHOD(Detect)(
__in_opt HWND hwndParent = NULL
) = 0;
STDMETHOD(Plan)(
__in BOOTSTRAPPER_ACTION action
) = 0;
STDMETHOD(Elevate)(
__in_opt HWND hwndParent
) = 0;
STDMETHOD(Apply)(
__in_opt HWND hwndParent
) = 0;
STDMETHOD(Quit)(
__in DWORD dwExitCode
) = 0;
STDMETHOD(LaunchApprovedExe)(
__in_opt HWND hwndParent,
__in_z LPCWSTR wzApprovedExeForElevationId,
__in_z_opt LPCWSTR wzArguments,
__in DWORD dwWaitForInputIdleTimeout
) = 0;
};