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 | ||
