From 4f4c85ed66f1b2dfb1bec76d54d7b50c637d5bfa Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Mon, 22 Feb 2021 16:16:12 -0600 Subject: Add patch target for slipstream MSI package even if not installed. Fixes #3897 --- src/engine/package.h | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/engine/package.h') diff --git a/src/engine/package.h b/src/engine/package.h index 3a243c7d..283afa57 100644 --- a/src/engine/package.h +++ b/src/engine/package.h @@ -14,6 +14,8 @@ typedef _BURN_PACKAGE BURN_PACKAGE; // constants +const DWORD BURN_PACKAGE_INVALID_PATCH_INDEX = 0x80000000; + enum BURN_EXE_EXIT_CODE_TYPE { BURN_EXE_EXIT_CODE_TYPE_NONE, @@ -116,7 +118,9 @@ typedef struct _BURN_MSPTARGETPRODUCT DWORD dwOrder; WCHAR wzTargetProductCode[39]; BURN_PACKAGE* pChainedTargetPackage; + BOOL fInstalled; BOOL fSlipstream; + BOOL fSlipstreamRequired; // this means the target product is not present on the machine, but is available in the chain as a slipstream target. BOOTSTRAPPER_PACKAGE_STATE patchPackageState; // only valid after Detect. BOOTSTRAPPER_REQUEST_STATE defaultRequested; // only valid during Plan. @@ -172,6 +176,18 @@ typedef struct _BURN_RELATED_MSI DWORD cLanguages; } BURN_RELATED_MSI; +typedef struct _BURN_CHAINED_PATCH +{ + BURN_PACKAGE* pMspPackage; + DWORD dwMspTargetProductIndex; // index into the Msp.rgTargetProducts +} BURN_CHAINED_PATCH; + +typedef struct _BURN_SLIPSTREAM_MSP +{ + BURN_PACKAGE* pMspPackage; + DWORD dwMsiChainedPatchIndex; // index into the Msi.rgChainedPatches +} BURN_SLIPSTREAM_MSP; + typedef struct _BURN_PACKAGE_PAYLOAD { BURN_PAYLOAD* pPayload; @@ -295,9 +311,12 @@ typedef struct _BURN_PACKAGE BURN_RELATED_MSI* rgRelatedMsis; DWORD cRelatedMsis; - _BURN_PACKAGE** rgpSlipstreamMspPackages; + BURN_SLIPSTREAM_MSP* rgSlipstreamMsps; LPWSTR* rgsczSlipstreamMspPackageIds; DWORD cSlipstreamMspPackages; + + BURN_CHAINED_PATCH* rgChainedPatches; + DWORD cChainedPatches; } Msi; struct { -- cgit v1.2.3-55-g6feb