aboutsummaryrefslogtreecommitdiff
path: root/src/engine/msiengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/engine/msiengine.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/engine/msiengine.cpp b/src/engine/msiengine.cpp
index e274df28..47211309 100644
--- a/src/engine/msiengine.cpp
+++ b/src/engine/msiengine.cpp
@@ -82,6 +82,11 @@ extern "C" HRESULT MsiEngineParsePackageFromXml(
82 hr = VerParseVersion(scz, 0, FALSE, &pPackage->Msi.pVersion); 82 hr = VerParseVersion(scz, 0, FALSE, &pPackage->Msi.pVersion);
83 ExitOnFailure(hr, "Failed to parse @Version: %ls", scz); 83 ExitOnFailure(hr, "Failed to parse @Version: %ls", scz);
84 84
85 if (pPackage->Msi.pVersion->fInvalid)
86 {
87 LogId(REPORT_WARNING, MSG_MANIFEST_INVALID_VERSION, scz);
88 }
89
85 // @UpgradeCode 90 // @UpgradeCode
86 hr = XmlGetAttributeEx(pixnMsiPackage, L"UpgradeCode", &pPackage->Msi.sczUpgradeCode); 91 hr = XmlGetAttributeEx(pixnMsiPackage, L"UpgradeCode", &pPackage->Msi.sczUpgradeCode);
87 if (E_NOTFOUND != hr) 92 if (E_NOTFOUND != hr)
@@ -420,6 +425,11 @@ extern "C" HRESULT MsiEngineDetectPackage(
420 hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pPackage->Msi.pInstalledVersion); 425 hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pPackage->Msi.pInstalledVersion);
421 ExitOnFailure(hr, "Failed to parse installed version: '%ls' for ProductCode: %ls", sczInstalledVersion, pPackage->Msi.sczProductCode); 426 ExitOnFailure(hr, "Failed to parse installed version: '%ls' for ProductCode: %ls", sczInstalledVersion, pPackage->Msi.sczProductCode);
422 427
428 if (pPackage->Msi.pInstalledVersion->fInvalid)
429 {
430 LogId(REPORT_WARNING, MSG_DETECTED_MSI_PACKAGE_INVALID_VERSION, pPackage->Msi.sczProductCode, sczInstalledVersion);
431 }
432
423 // compare versions 433 // compare versions
424 hr = VerCompareParsedVersions(pPackage->Msi.pVersion, pPackage->Msi.pInstalledVersion, &nCompareResult); 434 hr = VerCompareParsedVersions(pPackage->Msi.pVersion, pPackage->Msi.pInstalledVersion, &nCompareResult);
425 ExitOnFailure(hr, "Failed to compare version '%ls' to installed version: '%ls'", pPackage->Msi.pVersion->sczVersion, pPackage->Msi.pInstalledVersion->sczVersion); 435 ExitOnFailure(hr, "Failed to compare version '%ls' to installed version: '%ls'", pPackage->Msi.pVersion->sczVersion, pPackage->Msi.pInstalledVersion->sczVersion);
@@ -460,6 +470,11 @@ extern "C" HRESULT MsiEngineDetectPackage(
460 hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pVersion); 470 hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pVersion);
461 ExitOnFailure(hr, "Failed to parse dependency version: '%ls' for ProductCode: %ls", sczInstalledVersion, sczInstalledProductCode); 471 ExitOnFailure(hr, "Failed to parse dependency version: '%ls' for ProductCode: %ls", sczInstalledVersion, sczInstalledProductCode);
462 472
473 if (pVersion->fInvalid)
474 {
475 LogId(REPORT_WARNING, MSG_DETECTED_MSI_PACKAGE_INVALID_VERSION, sczInstalledProductCode, sczInstalledVersion);
476 }
477
463 // compare versions 478 // compare versions
464 hr = VerCompareParsedVersions(pPackage->Msi.pVersion, pVersion, &nCompareResult); 479 hr = VerCompareParsedVersions(pPackage->Msi.pVersion, pVersion, &nCompareResult);
465 ExitOnFailure(hr, "Failed to compare version '%ls' to dependency version: '%ls'", pPackage->Msi.pVersion->sczVersion, pVersion->sczVersion); 480 ExitOnFailure(hr, "Failed to compare version '%ls' to dependency version: '%ls'", pPackage->Msi.pVersion->sczVersion, pVersion->sczVersion);
@@ -536,6 +551,11 @@ extern "C" HRESULT MsiEngineDetectPackage(
536 hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pVersion); 551 hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pVersion);
537 ExitOnFailure(hr, "Failed to parse related installed version: '%ls' for ProductCode: %ls", sczInstalledVersion, wzProductCode); 552 ExitOnFailure(hr, "Failed to parse related installed version: '%ls' for ProductCode: %ls", sczInstalledVersion, wzProductCode);
538 553
554 if (pVersion->fInvalid)
555 {
556 LogId(REPORT_WARNING, MSG_DETECTED_MSI_PACKAGE_INVALID_VERSION, wzProductCode, sczInstalledVersion);
557 }
558
539 // compare versions 559 // compare versions
540 if (pRelatedMsi->fMinProvided) 560 if (pRelatedMsi->fMinProvided)
541 { 561 {
@@ -1052,6 +1072,11 @@ extern "C" HRESULT MsiEngineAddCompatiblePackage(
1052 1072
1053 hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pCompatiblePackage->Msi.pVersion); 1073 hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pCompatiblePackage->Msi.pVersion);
1054 ExitOnFailure(hr, "Failed to parse version: '%ls' for ProductCode: %ls", sczInstalledVersion, pCompatiblePackage->Msi.sczProductCode); 1074 ExitOnFailure(hr, "Failed to parse version: '%ls' for ProductCode: %ls", sczInstalledVersion, pCompatiblePackage->Msi.sczProductCode);
1075
1076 if (pCompatiblePackage->Msi.pVersion->fInvalid)
1077 {
1078 LogId(REPORT_WARNING, MSG_DETECTED_MSI_PACKAGE_INVALID_VERSION, pCompatiblePackage->Msi.sczProductCode, sczInstalledVersion);
1079 }
1055 } 1080 }
1056 1081
1057 // For now, copy enough information to support uninstalling the newer, compatible package. 1082 // For now, copy enough information to support uninstalling the newer, compatible package.
@@ -1506,6 +1531,11 @@ static HRESULT ParseRelatedMsiFromXml(
1506 hr = VerParseVersion(scz, 0, FALSE, &pRelatedMsi->pMinVersion); 1531 hr = VerParseVersion(scz, 0, FALSE, &pRelatedMsi->pMinVersion);
1507 ExitOnFailure(hr, "Failed to parse @MinVersion: %ls", scz); 1532 ExitOnFailure(hr, "Failed to parse @MinVersion: %ls", scz);
1508 1533
1534 if (pRelatedMsi->pMinVersion->fInvalid)
1535 {
1536 LogId(REPORT_WARNING, MSG_MANIFEST_INVALID_VERSION, scz);
1537 }
1538
1509 // flag that we have a min version 1539 // flag that we have a min version
1510 pRelatedMsi->fMinProvided = TRUE; 1540 pRelatedMsi->fMinProvided = TRUE;
1511 1541
@@ -1523,6 +1553,11 @@ static HRESULT ParseRelatedMsiFromXml(
1523 hr = VerParseVersion(scz, 0, FALSE, &pRelatedMsi->pMaxVersion); 1553 hr = VerParseVersion(scz, 0, FALSE, &pRelatedMsi->pMaxVersion);
1524 ExitOnFailure(hr, "Failed to parse @MaxVersion: %ls", scz); 1554 ExitOnFailure(hr, "Failed to parse @MaxVersion: %ls", scz);
1525 1555
1556 if (pRelatedMsi->pMaxVersion->fInvalid)
1557 {
1558 LogId(REPORT_WARNING, MSG_MANIFEST_INVALID_VERSION, scz);
1559 }
1560
1526 // flag that we have a max version 1561 // flag that we have a max version
1527 pRelatedMsi->fMaxProvided = TRUE; 1562 pRelatedMsi->fMaxProvided = TRUE;
1528 1563