diff options
Diffstat (limited to 'src/burn/engine/registration.cpp')
| -rw-r--r-- | src/burn/engine/registration.cpp | 87 |
1 files changed, 1 insertions, 86 deletions
diff --git a/src/burn/engine/registration.cpp b/src/burn/engine/registration.cpp index 78f8eeb1..f2b8383d 100644 --- a/src/burn/engine/registration.cpp +++ b/src/burn/engine/registration.cpp | |||
| @@ -71,10 +71,6 @@ static HRESULT UpdateResumeMode( | |||
| 71 | __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType, | 71 | __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType, |
| 72 | __in BOOL fRestartInitiated | 72 | __in BOOL fRestartInitiated |
| 73 | ); | 73 | ); |
| 74 | static HRESULT ParseRelatedCodes( | ||
| 75 | __in BURN_REGISTRATION* pRegistration, | ||
| 76 | __in IXMLDOMNode* pixnBundle | ||
| 77 | ); | ||
| 78 | static HRESULT FormatUpdateRegistrationKey( | 74 | static HRESULT FormatUpdateRegistrationKey( |
| 79 | __in BURN_REGISTRATION* pRegistration, | 75 | __in BURN_REGISTRATION* pRegistration, |
| 80 | __out_z LPWSTR* psczKey | 76 | __out_z LPWSTR* psczKey |
| @@ -143,7 +139,7 @@ extern "C" HRESULT RegistrationParseFromXml( | |||
| 143 | hr = XmlGetAttributeEx(pixnRegistrationNode, L"Tag", &pRegistration->sczTag); | 139 | hr = XmlGetAttributeEx(pixnRegistrationNode, L"Tag", &pRegistration->sczTag); |
| 144 | ExitOnFailure(hr, "Failed to get @Tag."); | 140 | ExitOnFailure(hr, "Failed to get @Tag."); |
| 145 | 141 | ||
| 146 | hr = ParseRelatedCodes(pRegistration, pixnBundle); | 142 | hr = BundlePackageEngineParseRelatedCodes(pixnBundle, &pRegistration->rgsczDetectCodes, &pRegistration->cDetectCodes, &pRegistration->rgsczUpgradeCodes, &pRegistration->cUpgradeCodes, &pRegistration->rgsczAddonCodes, &pRegistration->cAddonCodes, &pRegistration->rgsczPatchCodes, &pRegistration->cPatchCodes); |
| 147 | ExitOnFailure(hr, "Failed to parse related bundles"); | 143 | ExitOnFailure(hr, "Failed to parse related bundles"); |
| 148 | 144 | ||
| 149 | // @Version | 145 | // @Version |
| @@ -1395,87 +1391,6 @@ LExit: | |||
| 1395 | return hr; | 1391 | return hr; |
| 1396 | } | 1392 | } |
| 1397 | 1393 | ||
| 1398 | static HRESULT ParseRelatedCodes( | ||
| 1399 | __in BURN_REGISTRATION* pRegistration, | ||
| 1400 | __in IXMLDOMNode* pixnBundle | ||
| 1401 | ) | ||
| 1402 | { | ||
| 1403 | HRESULT hr = S_OK; | ||
| 1404 | IXMLDOMNodeList* pixnNodes = NULL; | ||
| 1405 | IXMLDOMNode* pixnElement = NULL; | ||
| 1406 | LPWSTR sczAction = NULL; | ||
| 1407 | LPWSTR sczId = NULL; | ||
| 1408 | DWORD cElements = 0; | ||
| 1409 | |||
| 1410 | hr = XmlSelectNodes(pixnBundle, L"RelatedBundle", &pixnNodes); | ||
| 1411 | ExitOnFailure(hr, "Failed to get RelatedBundle nodes"); | ||
| 1412 | |||
| 1413 | hr = pixnNodes->get_length((long*)&cElements); | ||
| 1414 | ExitOnFailure(hr, "Failed to get RelatedBundle element count."); | ||
| 1415 | |||
| 1416 | for (DWORD i = 0; i < cElements; ++i) | ||
| 1417 | { | ||
| 1418 | hr = XmlNextElement(pixnNodes, &pixnElement, NULL); | ||
| 1419 | ExitOnFailure(hr, "Failed to get next RelatedBundle element."); | ||
| 1420 | |||
| 1421 | hr = XmlGetAttributeEx(pixnElement, L"Action", &sczAction); | ||
| 1422 | ExitOnFailure(hr, "Failed to get @Action."); | ||
| 1423 | |||
| 1424 | hr = XmlGetAttributeEx(pixnElement, L"Id", &sczId); | ||
| 1425 | ExitOnFailure(hr, "Failed to get @Id."); | ||
| 1426 | |||
| 1427 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczAction, -1, L"Detect", -1)) | ||
| 1428 | { | ||
| 1429 | hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(&pRegistration->rgsczDetectCodes), pRegistration->cDetectCodes + 1, sizeof(LPWSTR), 5); | ||
| 1430 | ExitOnFailure(hr, "Failed to resize Detect code array in registration"); | ||
| 1431 | |||
| 1432 | pRegistration->rgsczDetectCodes[pRegistration->cDetectCodes] = sczId; | ||
| 1433 | sczId = NULL; | ||
| 1434 | ++pRegistration->cDetectCodes; | ||
| 1435 | } | ||
| 1436 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczAction, -1, L"Upgrade", -1)) | ||
| 1437 | { | ||
| 1438 | hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(&pRegistration->rgsczUpgradeCodes), pRegistration->cUpgradeCodes + 1, sizeof(LPWSTR), 5); | ||
| 1439 | ExitOnFailure(hr, "Failed to resize Upgrade code array in registration"); | ||
| 1440 | |||
| 1441 | pRegistration->rgsczUpgradeCodes[pRegistration->cUpgradeCodes] = sczId; | ||
| 1442 | sczId = NULL; | ||
| 1443 | ++pRegistration->cUpgradeCodes; | ||
| 1444 | } | ||
| 1445 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczAction, -1, L"Addon", -1)) | ||
| 1446 | { | ||
| 1447 | hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(&pRegistration->rgsczAddonCodes), pRegistration->cAddonCodes + 1, sizeof(LPWSTR), 5); | ||
| 1448 | ExitOnFailure(hr, "Failed to resize Addon code array in registration"); | ||
| 1449 | |||
| 1450 | pRegistration->rgsczAddonCodes[pRegistration->cAddonCodes] = sczId; | ||
| 1451 | sczId = NULL; | ||
| 1452 | ++pRegistration->cAddonCodes; | ||
| 1453 | } | ||
| 1454 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, sczAction, -1, L"Patch", -1)) | ||
| 1455 | { | ||
| 1456 | hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(&pRegistration->rgsczPatchCodes), pRegistration->cPatchCodes + 1, sizeof(LPWSTR), 5); | ||
| 1457 | ExitOnFailure(hr, "Failed to resize Patch code array in registration"); | ||
| 1458 | |||
| 1459 | pRegistration->rgsczPatchCodes[pRegistration->cPatchCodes] = sczId; | ||
| 1460 | sczId = NULL; | ||
| 1461 | ++pRegistration->cPatchCodes; | ||
| 1462 | } | ||
| 1463 | else | ||
| 1464 | { | ||
| 1465 | hr = E_INVALIDARG; | ||
| 1466 | ExitOnFailure(hr, "Invalid value for @Action: %ls", sczAction); | ||
| 1467 | } | ||
| 1468 | } | ||
| 1469 | |||
| 1470 | LExit: | ||
| 1471 | ReleaseObject(pixnNodes); | ||
| 1472 | ReleaseObject(pixnElement); | ||
| 1473 | ReleaseStr(sczAction); | ||
| 1474 | ReleaseStr(sczId); | ||
| 1475 | |||
| 1476 | return hr; | ||
| 1477 | } | ||
| 1478 | |||
| 1479 | static HRESULT FormatUpdateRegistrationKey( | 1394 | static HRESULT FormatUpdateRegistrationKey( |
| 1480 | __in BURN_REGISTRATION* pRegistration, | 1395 | __in BURN_REGISTRATION* pRegistration, |
| 1481 | __out_z LPWSTR* psczKey | 1396 | __out_z LPWSTR* psczKey |
