aboutsummaryrefslogtreecommitdiff
path: root/src/engine/plan.h
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-11-15 21:38:57 -0600
committerSean Hall <r.sean.hall@gmail.com>2020-11-17 19:06:00 -0600
commite71de85e4ec2899ecd01ac236603cf1dddc4a6c7 (patch)
treeb1537ce17314dc073a9fd3d7d4925f215990be13 /src/engine/plan.h
parent846f5a033d346c1bac51c56d4936cd3118ebea7a (diff)
downloadwix-e71de85e4ec2899ecd01ac236603cf1dddc4a6c7.tar.gz
wix-e71de85e4ec2899ecd01ac236603cf1dddc4a6c7.tar.bz2
wix-e71de85e4ec2899ecd01ac236603cf1dddc4a6c7.zip
Use plan to decide when to begin, commit, or rollback MSI transactions
Diffstat (limited to 'src/engine/plan.h')
-rw-r--r--src/engine/plan.h20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/engine/plan.h b/src/engine/plan.h
index 5fddd72f..407c1d48 100644
--- a/src/engine/plan.h
+++ b/src/engine/plan.h
@@ -68,6 +68,8 @@ enum BURN_EXECUTE_ACTION_TYPE
68 BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY, 68 BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY,
69 BURN_EXECUTE_ACTION_TYPE_REGISTRATION, 69 BURN_EXECUTE_ACTION_TYPE_REGISTRATION,
70 BURN_EXECUTE_ACTION_TYPE_COMPATIBLE_PACKAGE, 70 BURN_EXECUTE_ACTION_TYPE_COMPATIBLE_PACKAGE,
71 BURN_EXECUTE_ACTION_TYPE_BEGIN_MSI_TRANSACTION,
72 BURN_EXECUTE_ACTION_TYPE_COMMIT_MSI_TRANSACTION,
71}; 73};
72 74
73enum BURN_CLEAN_ACTION_TYPE 75enum BURN_CLEAN_ACTION_TYPE
@@ -214,16 +216,19 @@ typedef struct _BURN_ORDERED_PATCHES
214 BURN_PACKAGE* pPackage; 216 BURN_PACKAGE* pPackage;
215} BURN_ORDERED_PATCHES; 217} BURN_ORDERED_PATCHES;
216 218
219typedef struct _BURN_EXECUTE_ACTION_CHECKPOINT
220{
221 DWORD dwId;
222 BURN_ROLLBACK_BOUNDARY* pActiveRollbackBoundary;
223} BURN_EXECUTE_ACTION_CHECKPOINT;
224
217typedef struct _BURN_EXECUTE_ACTION 225typedef struct _BURN_EXECUTE_ACTION
218{ 226{
219 BURN_EXECUTE_ACTION_TYPE type; 227 BURN_EXECUTE_ACTION_TYPE type;
220 BOOL fDeleted; // used to skip an action after it was planned since deleting actions out of the plan is too hard. 228 BOOL fDeleted; // used to skip an action after it was planned since deleting actions out of the plan is too hard.
221 union 229 union
222 { 230 {
223 struct 231 BURN_EXECUTE_ACTION_CHECKPOINT checkpoint;
224 {
225 DWORD dwId;
226 } checkpoint;
227 struct 232 struct
228 { 233 {
229 HANDLE hEvent; 234 HANDLE hEvent;
@@ -307,6 +312,10 @@ typedef struct _BURN_EXECUTE_ACTION
307 LPWSTR sczInstalledProductCode; 312 LPWSTR sczInstalledProductCode;
308 VERUTIL_VERSION* pInstalledVersion; 313 VERUTIL_VERSION* pInstalledVersion;
309 } compatiblePackage; 314 } compatiblePackage;
315 struct
316 {
317 BURN_ROLLBACK_BOUNDARY* pRollbackBoundary;
318 } msiTransaction;
310 }; 319 };
311} BURN_EXECUTE_ACTION; 320} BURN_EXECUTE_ACTION;
312 321
@@ -368,7 +377,8 @@ typedef struct _BURN_PLAN
368 DWORD cPayloadProgress; 377 DWORD cPayloadProgress;
369 STRINGDICT_HANDLE shPayloadProgress; 378 STRINGDICT_HANDLE shPayloadProgress;
370 379
371 DWORD dwNextCheckpointId; 380 DWORD dwNextCheckpointId; // for plan internal use
381 BURN_ROLLBACK_BOUNDARY* pActiveRollbackBoundary; // for plan internal use
372} BURN_PLAN; 382} BURN_PLAN;
373 383
374 384