summaryrefslogtreecommitdiff
path: root/src/burn/engine/package.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/package.cpp')
-rw-r--r--src/burn/engine/package.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/burn/engine/package.cpp b/src/burn/engine/package.cpp
index 8a80194e..89203ada 100644
--- a/src/burn/engine/package.cpp
+++ b/src/burn/engine/package.cpp
@@ -87,7 +87,7 @@ extern "C" HRESULT PackagesParseFromXml(
87 ReleaseNullObject(pixnNodes); // done with the RollbackBoundary elements. 87 ReleaseNullObject(pixnNodes); // done with the RollbackBoundary elements.
88 88
89 // select package nodes 89 // select package nodes
90 hr = XmlSelectNodes(pixnBundle, L"Chain/ExePackage|Chain/MsiPackage|Chain/MspPackage|Chain/MsuPackage", &pixnNodes); 90 hr = XmlSelectNodes(pixnBundle, L"Chain/BundlePackage|Chain/ExePackage|Chain/MsiPackage|Chain/MspPackage|Chain/MsuPackage", &pixnNodes);
91 ExitOnFailure(hr, "Failed to select package nodes."); 91 ExitOnFailure(hr, "Failed to select package nodes.");
92 92
93 // get package node count 93 // get package node count
@@ -199,7 +199,14 @@ extern "C" HRESULT PackagesParseFromXml(
199 } 199 }
200 200
201 // read type specific attributes 201 // read type specific attributes
202 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, bstrNodeName, -1, L"ExePackage", -1)) 202 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, bstrNodeName, -1, L"BundlePackage", -1))
203 {
204 pPackage->type = BURN_PACKAGE_TYPE_BUNDLE;
205
206 hr = BundlePackageEngineParsePackageFromXml(pixnNode, pPackage); // TODO: Modularization
207 ExitOnFailure(hr, "Failed to parse BUNDLE package.");
208 }
209 else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, bstrNodeName, -1, L"ExePackage", -1))
203 { 210 {
204 pPackage->type = BURN_PACKAGE_TYPE_EXE; 211 pPackage->type = BURN_PACKAGE_TYPE_EXE;
205 212
@@ -231,7 +238,7 @@ extern "C" HRESULT PackagesParseFromXml(
231 } 238 }
232 else 239 else
233 { 240 {
234 // ignore other package types for now 241 ExitWithRootFailure(hr, E_UNEXPECTED, "Invalid package type: %ls", bstrNodeName);
235 } 242 }
236 243
237 if (!pPackage->fPermanent) 244 if (!pPackage->fPermanent)
@@ -371,7 +378,7 @@ extern "C" void PackageUninitialize(
371 switch (pPackage->type) 378 switch (pPackage->type)
372 { 379 {
373 case BURN_PACKAGE_TYPE_BUNDLE: 380 case BURN_PACKAGE_TYPE_BUNDLE:
374 BundlePackageEnginePackageUninitialize(pPackage); 381 BundlePackageEnginePackageUninitialize(pPackage); // TODO: Modularization
375 break; 382 break;
376 case BURN_PACKAGE_TYPE_EXE: 383 case BURN_PACKAGE_TYPE_EXE:
377 ExeEnginePackageUninitialize(pPackage); // TODO: Modularization 384 ExeEnginePackageUninitialize(pPackage); // TODO: Modularization
@@ -648,7 +655,6 @@ static HRESULT ParsePatchTargetCode(
648 IXMLDOMNodeList* pixnNodes = NULL; 655 IXMLDOMNodeList* pixnNodes = NULL;
649 IXMLDOMNode* pixnNode = NULL; 656 IXMLDOMNode* pixnNode = NULL;
650 DWORD cNodes = 0; 657 DWORD cNodes = 0;
651 BSTR bstrNodeText = NULL;
652 BOOL fProduct; 658 BOOL fProduct;
653 659
654 hr = XmlSelectNodes(pixnBundle, L"PatchTargetCode", &pixnNodes); 660 hr = XmlSelectNodes(pixnBundle, L"PatchTargetCode", &pixnNodes);
@@ -688,12 +694,10 @@ static HRESULT ParsePatchTargetCode(
688 pTargetCode->type = fProduct ? BURN_PATCH_TARGETCODE_TYPE_PRODUCT : BURN_PATCH_TARGETCODE_TYPE_UPGRADE; 694 pTargetCode->type = fProduct ? BURN_PATCH_TARGETCODE_TYPE_PRODUCT : BURN_PATCH_TARGETCODE_TYPE_UPGRADE;
689 695
690 // prepare next iteration 696 // prepare next iteration
691 ReleaseNullBSTR(bstrNodeText);
692 ReleaseNullObject(pixnNode); 697 ReleaseNullObject(pixnNode);
693 } 698 }
694 699
695LExit: 700LExit:
696 ReleaseBSTR(bstrNodeText);
697 ReleaseObject(pixnNode); 701 ReleaseObject(pixnNode);
698 ReleaseObject(pixnNodes); 702 ReleaseObject(pixnNodes);
699 703