aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/pseudobundle.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-12-30 15:12:26 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-12-30 18:40:49 -0600
commit84a1b0f8ffe40a26916b1dfb3e1b59b6b0c31ad4 (patch)
treebb830b599bf014c1e93f319b4d8a349d60eb8b53 /src/burn/engine/pseudobundle.cpp
parentc86f75bcc104d5dc457fa2900a3ebb9c38f6ff65 (diff)
downloadwix-84a1b0f8ffe40a26916b1dfb3e1b59b6b0c31ad4.tar.gz
wix-84a1b0f8ffe40a26916b1dfb3e1b59b6b0c31ad4.tar.bz2
wix-84a1b0f8ffe40a26916b1dfb3e1b59b6b0c31ad4.zip
Add BURN_PROTOCOL_VERSION in registration to avoid version checks.
Also, old versions of Burn should ignore ancestors if they doesn't support them.
Diffstat (limited to 'src/burn/engine/pseudobundle.cpp')
-rw-r--r--src/burn/engine/pseudobundle.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/burn/engine/pseudobundle.cpp b/src/burn/engine/pseudobundle.cpp
index 91c6c14f..14dd2b77 100644
--- a/src/burn/engine/pseudobundle.cpp
+++ b/src/burn/engine/pseudobundle.cpp
@@ -4,8 +4,8 @@
4 4
5 5
6extern "C" HRESULT PseudoBundleInitialize( 6extern "C" HRESULT PseudoBundleInitialize(
7 __in DWORD64 qwEngineVersion,
8 __in BURN_PACKAGE* pPackage, 7 __in BURN_PACKAGE* pPackage,
8 __in BOOL fSupportsBurnProtocol,
9 __in BOOL fPerMachine, 9 __in BOOL fPerMachine,
10 __in_z LPCWSTR wzId, 10 __in_z LPCWSTR wzId,
11 __in BOOTSTRAPPER_RELATION_TYPE relationType, 11 __in BOOTSTRAPPER_RELATION_TYPE relationType,
@@ -84,6 +84,9 @@ extern "C" HRESULT PseudoBundleInitialize(
84 pPackage->qwSize = qwSize; 84 pPackage->qwSize = qwSize;
85 pPackage->fVital = fVital; 85 pPackage->fVital = fVital;
86 86
87 pPackage->Exe.protocol = fSupportsBurnProtocol ? BURN_EXE_PROTOCOL_TYPE_BURN : BURN_EXE_PROTOCOL_TYPE_NONE;
88 pPackage->Exe.fSupportsAncestors = TRUE;
89
87 hr = StrAllocString(&pPackage->sczId, wzId, 0); 90 hr = StrAllocString(&pPackage->sczId, wzId, 0);
88 ExitOnFailure(hr, "Failed to copy key for pseudo bundle."); 91 ExitOnFailure(hr, "Failed to copy key for pseudo bundle.");
89 92
@@ -131,12 +134,6 @@ extern "C" HRESULT PseudoBundleInitialize(
131 pPackage->fUninstallable = TRUE; 134 pPackage->fUninstallable = TRUE;
132 } 135 }
133 136
134 // Only support progress from engines that are compatible (aka: version greater than or equal to last protocol breaking change *and* versions that are older or the same as this engine).
135 pPackage->Exe.protocol = (FILEMAKEVERSION(3, 6, 2221, 0) <= qwEngineVersion && qwEngineVersion <= FILEMAKEVERSION(rmj, rmm, rup, rpr)) ? BURN_EXE_PROTOCOL_TYPE_BURN : BURN_EXE_PROTOCOL_TYPE_NONE;
136
137 // All versions of Burn past v3.9 RTM support suppressing ancestors.
138 pPackage->Exe.fSupportsAncestors = FILEMAKEVERSION(3, 9, 1006, 0) <= qwEngineVersion;
139
140 if (pDependencyProvider) 137 if (pDependencyProvider)
141 { 138 {
142 pPackage->rgDependencyProviders = (BURN_DEPENDENCY_PROVIDER*)MemAlloc(sizeof(BURN_DEPENDENCY_PROVIDER), TRUE); 139 pPackage->rgDependencyProviders = (BURN_DEPENDENCY_PROVIDER*)MemAlloc(sizeof(BURN_DEPENDENCY_PROVIDER), TRUE);
@@ -310,7 +307,7 @@ extern "C" HRESULT PseudoBundleInitializeUpdateBundle(
310 hr = StrAllocString(&pPackage->Exe.sczInstallArguments, wzInstallArguments, 0); 307 hr = StrAllocString(&pPackage->Exe.sczInstallArguments, wzInstallArguments, 0);
311 ExitOnFailure(hr, "Failed to copy install arguments for update bundle package"); 308 ExitOnFailure(hr, "Failed to copy install arguments for update bundle package");
312 309
313 // Assume the update bundle has the same engine version as this one. 310 // Trust the BA to only use UPDATE_REPLACE_EMBEDDED when appropriate.
314 pPackage->Exe.protocol = BURN_EXE_PROTOCOL_TYPE_BURN; 311 pPackage->Exe.protocol = BURN_EXE_PROTOCOL_TYPE_BURN;
315 pPackage->Exe.fSupportsAncestors = TRUE; 312 pPackage->Exe.fSupportsAncestors = TRUE;
316 313