diff options
Diffstat (limited to '')
-rw-r--r-- | src/engine/package.h | 336 |
1 files changed, 336 insertions, 0 deletions
diff --git a/src/engine/package.h b/src/engine/package.h new file mode 100644 index 00000000..c295378e --- /dev/null +++ b/src/engine/package.h | |||
@@ -0,0 +1,336 @@ | |||
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) | ||
6 | extern "C" { | ||
7 | #endif | ||
8 | |||
9 | struct _BURN_RELATED_BUNDLES; | ||
10 | typedef _BURN_RELATED_BUNDLES BURN_RELATED_BUNDLES; | ||
11 | |||
12 | struct _BURN_PACKAGE; | ||
13 | typedef _BURN_PACKAGE BURN_PACKAGE; | ||
14 | |||
15 | // constants | ||
16 | |||
17 | enum BURN_EXE_EXIT_CODE_TYPE | ||
18 | { | ||
19 | BURN_EXE_EXIT_CODE_TYPE_NONE, | ||
20 | BURN_EXE_EXIT_CODE_TYPE_SUCCESS, | ||
21 | BURN_EXE_EXIT_CODE_TYPE_ERROR, | ||
22 | BURN_EXE_EXIT_CODE_TYPE_SCHEDULE_REBOOT, | ||
23 | BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT, | ||
24 | }; | ||
25 | |||
26 | enum BURN_EXE_PROTOCOL_TYPE | ||
27 | { | ||
28 | BURN_EXE_PROTOCOL_TYPE_NONE, | ||
29 | BURN_EXE_PROTOCOL_TYPE_BURN, | ||
30 | BURN_EXE_PROTOCOL_TYPE_NETFX4, | ||
31 | }; | ||
32 | |||
33 | enum BURN_PACKAGE_TYPE | ||
34 | { | ||
35 | BURN_PACKAGE_TYPE_NONE, | ||
36 | BURN_PACKAGE_TYPE_EXE, | ||
37 | BURN_PACKAGE_TYPE_MSI, | ||
38 | BURN_PACKAGE_TYPE_MSP, | ||
39 | BURN_PACKAGE_TYPE_MSU, | ||
40 | }; | ||
41 | |||
42 | enum BURN_CACHE_STATE | ||
43 | { | ||
44 | BURN_CACHE_STATE_NONE, | ||
45 | BURN_CACHE_STATE_PARTIAL, | ||
46 | BURN_CACHE_STATE_COMPLETE, | ||
47 | }; | ||
48 | |||
49 | enum BURN_CACHE_TYPE | ||
50 | { | ||
51 | BURN_CACHE_TYPE_NO, | ||
52 | BURN_CACHE_TYPE_YES, | ||
53 | BURN_CACHE_TYPE_ALWAYS, | ||
54 | }; | ||
55 | |||
56 | enum BURN_DEPENDENCY_ACTION | ||
57 | { | ||
58 | BURN_DEPENDENCY_ACTION_NONE, | ||
59 | BURN_DEPENDENCY_ACTION_REGISTER, | ||
60 | BURN_DEPENDENCY_ACTION_UNREGISTER, | ||
61 | }; | ||
62 | |||
63 | enum BURN_PATCH_TARGETCODE_TYPE | ||
64 | { | ||
65 | BURN_PATCH_TARGETCODE_TYPE_UNKNOWN, | ||
66 | BURN_PATCH_TARGETCODE_TYPE_PRODUCT, | ||
67 | BURN_PATCH_TARGETCODE_TYPE_UPGRADE, | ||
68 | }; | ||
69 | |||
70 | // structs | ||
71 | |||
72 | typedef struct _BURN_EXE_EXIT_CODE | ||
73 | { | ||
74 | BURN_EXE_EXIT_CODE_TYPE type; | ||
75 | DWORD dwCode; | ||
76 | BOOL fWildcard; | ||
77 | } BURN_EXE_EXIT_CODE; | ||
78 | |||
79 | typedef struct _BURN_EXE_COMMAND_LINE_ARGUMENT | ||
80 | { | ||
81 | LPWSTR sczInstallArgument; | ||
82 | LPWSTR sczUninstallArgument; | ||
83 | LPWSTR sczRepairArgument; | ||
84 | LPWSTR sczCondition; | ||
85 | } BURN_EXE_COMMAND_LINE_ARGUMENT; | ||
86 | |||
87 | typedef struct _BURN_MSPTARGETPRODUCT | ||
88 | { | ||
89 | MSIINSTALLCONTEXT context; | ||
90 | DWORD dwOrder; | ||
91 | WCHAR wzTargetProductCode[39]; | ||
92 | BURN_PACKAGE* pChainedTargetPackage; | ||
93 | BOOL fSlipstream; | ||
94 | |||
95 | BOOTSTRAPPER_PACKAGE_STATE patchPackageState; // only valid after Detect. | ||
96 | BOOTSTRAPPER_ACTION_STATE execute; // only valid during Plan. | ||
97 | BOOTSTRAPPER_ACTION_STATE rollback; // only valid during Plan. | ||
98 | } BURN_MSPTARGETPRODUCT; | ||
99 | |||
100 | typedef struct _BURN_MSIPROPERTY | ||
101 | { | ||
102 | LPWSTR sczId; | ||
103 | LPWSTR sczValue; // used during forward execution | ||
104 | LPWSTR sczRollbackValue; // used during rollback | ||
105 | LPWSTR sczCondition; | ||
106 | } BURN_MSIPROPERTY; | ||
107 | |||
108 | typedef struct _BURN_MSIFEATURE | ||
109 | { | ||
110 | LPWSTR sczId; | ||
111 | LPWSTR sczAddLocalCondition; | ||
112 | LPWSTR sczAddSourceCondition; | ||
113 | LPWSTR sczAdvertiseCondition; | ||
114 | LPWSTR sczRollbackAddLocalCondition; | ||
115 | LPWSTR sczRollbackAddSourceCondition; | ||
116 | LPWSTR sczRollbackAdvertiseCondition; | ||
117 | |||
118 | BOOTSTRAPPER_FEATURE_STATE currentState; // only valid after Detect. | ||
119 | BOOTSTRAPPER_FEATURE_ACTION execute; // only valid during Plan. | ||
120 | BOOTSTRAPPER_FEATURE_ACTION rollback; // only valid during Plan. | ||
121 | } BURN_MSIFEATURE; | ||
122 | |||
123 | typedef struct _BURN_RELATED_MSI | ||
124 | { | ||
125 | LPWSTR sczUpgradeCode; | ||
126 | DWORD64 qwMinVersion; | ||
127 | DWORD64 qwMaxVersion; | ||
128 | BOOL fMinProvided; | ||
129 | BOOL fMaxProvided; | ||
130 | BOOL fMinInclusive; | ||
131 | BOOL fMaxInclusive; | ||
132 | BOOL fOnlyDetect; | ||
133 | BOOL fLangInclusive; | ||
134 | |||
135 | DWORD* rgdwLanguages; | ||
136 | DWORD cLanguages; | ||
137 | } BURN_RELATED_MSI; | ||
138 | |||
139 | typedef struct _BURN_PACKAGE_PAYLOAD | ||
140 | { | ||
141 | BURN_PAYLOAD* pPayload; | ||
142 | BOOL fCached; | ||
143 | } BURN_PACKAGE_PAYLOAD; | ||
144 | |||
145 | typedef struct _BURN_DEPENDENCY_PROVIDER | ||
146 | { | ||
147 | LPWSTR sczKey; | ||
148 | LPWSTR sczVersion; | ||
149 | LPWSTR sczDisplayName; | ||
150 | BOOL fImported; | ||
151 | } BURN_DEPENDENCY_PROVIDER; | ||
152 | |||
153 | typedef struct _BURN_ROLLBACK_BOUNDARY | ||
154 | { | ||
155 | LPWSTR sczId; | ||
156 | BOOL fVital; | ||
157 | BOOL fTransaction; | ||
158 | } BURN_ROLLBACK_BOUNDARY; | ||
159 | |||
160 | typedef struct _BURN_PATCH_TARGETCODE | ||
161 | { | ||
162 | LPWSTR sczTargetCode; | ||
163 | BURN_PATCH_TARGETCODE_TYPE type; | ||
164 | } BURN_PATCH_TARGETCODE; | ||
165 | |||
166 | typedef struct _BURN_PACKAGE | ||
167 | { | ||
168 | LPWSTR sczId; | ||
169 | |||
170 | LPWSTR sczLogPathVariable; // name of the variable that will be set to the log path. | ||
171 | LPWSTR sczRollbackLogPathVariable; // name of the variable that will be set to the rollback path. | ||
172 | |||
173 | LPWSTR sczInstallCondition; | ||
174 | LPWSTR sczRollbackInstallCondition; | ||
175 | BOOL fPerMachine; | ||
176 | BOOL fUninstallable; | ||
177 | BOOL fVital; | ||
178 | |||
179 | BURN_CACHE_TYPE cacheType; | ||
180 | LPWSTR sczCacheId; | ||
181 | |||
182 | DWORD64 qwInstallSize; | ||
183 | DWORD64 qwSize; | ||
184 | |||
185 | BURN_ROLLBACK_BOUNDARY* pRollbackBoundaryForward; // used during install and repair. | ||
186 | BURN_ROLLBACK_BOUNDARY* pRollbackBoundaryBackward; // used during uninstall. | ||
187 | |||
188 | BOOTSTRAPPER_PACKAGE_STATE currentState; // only valid after Detect. | ||
189 | BURN_CACHE_STATE cache; // only valid after Detect. | ||
190 | BOOTSTRAPPER_PACKAGE_STATE expected; // only valid during Plan. | ||
191 | BOOTSTRAPPER_REQUEST_STATE defaultRequested;// only valid during Plan. | ||
192 | BOOTSTRAPPER_REQUEST_STATE requested; // only valid during Plan. | ||
193 | BOOL fAcquire; // only valid during Plan. | ||
194 | BOOL fUncache; // only valid during Plan. | ||
195 | BOOTSTRAPPER_ACTION_STATE execute; // only valid during Plan. | ||
196 | BOOTSTRAPPER_ACTION_STATE rollback; // only valid during Plan. | ||
197 | BURN_DEPENDENCY_ACTION providerExecute; // only valid during Plan. | ||
198 | BURN_DEPENDENCY_ACTION providerRollback; // only valid during Plan. | ||
199 | BURN_DEPENDENCY_ACTION dependencyExecute; // only valid during Plan. | ||
200 | BURN_DEPENDENCY_ACTION dependencyRollback; // only valid during Plan. | ||
201 | BOOL fDependencyManagerWasHere; // only valid during Plan. | ||
202 | HRESULT hrCacheResult; // only valid during Apply. | ||
203 | |||
204 | BURN_PACKAGE_PAYLOAD* rgPayloads; | ||
205 | DWORD cPayloads; | ||
206 | |||
207 | BURN_DEPENDENCY_PROVIDER* rgDependencyProviders; | ||
208 | DWORD cDependencyProviders; | ||
209 | |||
210 | BURN_PACKAGE_TYPE type; | ||
211 | union | ||
212 | { | ||
213 | struct | ||
214 | { | ||
215 | LPWSTR sczDetectCondition; | ||
216 | LPWSTR sczInstallArguments; | ||
217 | LPWSTR sczRepairArguments; | ||
218 | LPWSTR sczUninstallArguments; | ||
219 | LPWSTR sczIgnoreDependencies; | ||
220 | LPWSTR sczAncestors; | ||
221 | |||
222 | BOOL fPseudoBundle; | ||
223 | |||
224 | BOOL fRepairable; | ||
225 | BURN_EXE_PROTOCOL_TYPE protocol; | ||
226 | |||
227 | BOOL fSupportsAncestors; | ||
228 | |||
229 | BURN_EXE_EXIT_CODE* rgExitCodes; | ||
230 | DWORD cExitCodes; | ||
231 | |||
232 | BURN_EXE_COMMAND_LINE_ARGUMENT* rgCommandLineArguments; | ||
233 | DWORD cCommandLineArguments; | ||
234 | } Exe; | ||
235 | struct | ||
236 | { | ||
237 | LPWSTR sczProductCode; | ||
238 | DWORD dwLanguage; | ||
239 | DWORD64 qwVersion; | ||
240 | LPWSTR sczInstalledProductCode; | ||
241 | DWORD64 qwInstalledVersion; | ||
242 | BOOL fDisplayInternalUI; | ||
243 | LPWSTR sczUpgradeCode; | ||
244 | |||
245 | BURN_MSIPROPERTY* rgProperties; | ||
246 | DWORD cProperties; | ||
247 | |||
248 | BURN_MSIFEATURE* rgFeatures; | ||
249 | DWORD cFeatures; | ||
250 | |||
251 | BURN_RELATED_MSI* rgRelatedMsis; | ||
252 | DWORD cRelatedMsis; | ||
253 | |||
254 | _BURN_PACKAGE** rgpSlipstreamMspPackages; | ||
255 | LPWSTR* rgsczSlipstreamMspPackageIds; | ||
256 | DWORD cSlipstreamMspPackages; | ||
257 | |||
258 | BOOL fCompatibleInstalled; | ||
259 | } Msi; | ||
260 | struct | ||
261 | { | ||
262 | LPWSTR sczPatchCode; | ||
263 | LPWSTR sczApplicabilityXml; | ||
264 | BOOL fDisplayInternalUI; | ||
265 | |||
266 | BURN_MSIPROPERTY* rgProperties; | ||
267 | DWORD cProperties; | ||
268 | |||
269 | BURN_MSPTARGETPRODUCT* rgTargetProducts; | ||
270 | DWORD cTargetProductCodes; | ||
271 | } Msp; | ||
272 | struct | ||
273 | { | ||
274 | LPWSTR sczDetectCondition; | ||
275 | LPWSTR sczKB; | ||
276 | } Msu; | ||
277 | }; | ||
278 | } BURN_PACKAGE; | ||
279 | |||
280 | typedef struct _BURN_PACKAGES | ||
281 | { | ||
282 | BURN_ROLLBACK_BOUNDARY* rgRollbackBoundaries; | ||
283 | DWORD cRollbackBoundaries; | ||
284 | |||
285 | BURN_PACKAGE* rgPackages; | ||
286 | DWORD cPackages; | ||
287 | |||
288 | BURN_PACKAGE* rgCompatiblePackages; | ||
289 | DWORD cCompatiblePackages; | ||
290 | |||
291 | BURN_PATCH_TARGETCODE* rgPatchTargetCodes; | ||
292 | DWORD cPatchTargetCodes; | ||
293 | |||
294 | MSIPATCHSEQUENCEINFOW* rgPatchInfo; | ||
295 | BURN_PACKAGE** rgPatchInfoToPackage; // direct lookup from patch information to the (MSP) package it describes. | ||
296 | // Thus this array is the exact same size as rgPatchInfo. | ||
297 | DWORD cPatchInfo; | ||
298 | } BURN_PACKAGES; | ||
299 | |||
300 | |||
301 | // function declarations | ||
302 | |||
303 | HRESULT PackagesParseFromXml( | ||
304 | __in BURN_PACKAGES* pPackages, | ||
305 | __in BURN_PAYLOADS* pPayloads, | ||
306 | __in IXMLDOMNode* pixnBundle | ||
307 | ); | ||
308 | void PackageUninitialize( | ||
309 | __in BURN_PACKAGE* pPackage | ||
310 | ); | ||
311 | void PackagesUninitialize( | ||
312 | __in BURN_PACKAGES* pPackages | ||
313 | ); | ||
314 | HRESULT PackageFindById( | ||
315 | __in BURN_PACKAGES* pPackages, | ||
316 | __in_z LPCWSTR wzId, | ||
317 | __out BURN_PACKAGE** ppPackage | ||
318 | ); | ||
319 | HRESULT PackageFindRelatedById( | ||
320 | __in BURN_RELATED_BUNDLES* pRelatedBundles, | ||
321 | __in_z LPCWSTR wzId, | ||
322 | __out BURN_PACKAGE** ppPackage | ||
323 | ); | ||
324 | HRESULT PackageGetProperty( | ||
325 | __in const BURN_PACKAGE* pPackage, | ||
326 | __in_z LPCWSTR wzProperty, | ||
327 | __out_z_opt LPWSTR* psczValue | ||
328 | ); | ||
329 | HRESULT PackageEnsureCompatiblePackagesArray( | ||
330 | __in BURN_PACKAGES* pPackages | ||
331 | ); | ||
332 | |||
333 | |||
334 | #if defined(__cplusplus) | ||
335 | } | ||
336 | #endif | ||