diff options
Diffstat (limited to 'src/burn/engine/pseudobundle.cpp')
-rw-r--r-- | src/burn/engine/pseudobundle.cpp | 13 |
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 | ||
6 | extern "C" HRESULT PseudoBundleInitialize( | 6 | extern "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 | ||