diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2022-02-11 13:05:23 -0600 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-02-12 22:56:39 -0600 |
| commit | 1f422997c701625a53d08648521de709e280f4af (patch) | |
| tree | a04ab5c32983c297dbd354725b479065cdf5c3bf /src | |
| parent | 40492973be6075efbfbd231aed7168194d36cc73 (diff) | |
| download | wix-1f422997c701625a53d08648521de709e280f4af.tar.gz wix-1f422997c701625a53d08648521de709e280f4af.tar.bz2 wix-1f422997c701625a53d08648521de709e280f4af.zip | |
Detect MinorUpgrade MsiPackages independently of the base product.
Fixes #6535
Diffstat (limited to 'src')
| -rw-r--r-- | src/burn/engine/detect.cpp | 2 | ||||
| -rw-r--r-- | src/burn/engine/msiengine.cpp | 57 | ||||
| -rw-r--r-- | src/burn/engine/package.h | 3 | ||||
| -rw-r--r-- | src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs | 30 | ||||
| -rw-r--r-- | src/wix/WixToolset.Core.Burn/Bind/ProcessDependencyProvidersCommand.cs | 2 | ||||
| -rw-r--r-- | src/wix/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs | 4 |
6 files changed, 46 insertions, 52 deletions
diff --git a/src/burn/engine/detect.cpp b/src/burn/engine/detect.cpp index e251871c..3bd39784 100644 --- a/src/burn/engine/detect.cpp +++ b/src/burn/engine/detect.cpp | |||
| @@ -64,6 +64,8 @@ extern "C" void DetectReset( | |||
| 64 | 64 | ||
| 65 | if (BURN_PACKAGE_TYPE_MSI == pPackage->type) | 65 | if (BURN_PACKAGE_TYPE_MSI == pPackage->type) |
| 66 | { | 66 | { |
| 67 | pPackage->Msi.operation = BOOTSTRAPPER_RELATED_OPERATION_NONE; | ||
| 68 | |||
| 67 | for (DWORD iFeature = 0; iFeature < pPackage->Msi.cFeatures; ++iFeature) | 69 | for (DWORD iFeature = 0; iFeature < pPackage->Msi.cFeatures; ++iFeature) |
| 68 | { | 70 | { |
| 69 | BURN_MSIFEATURE* pFeature = pPackage->Msi.rgFeatures + iFeature; | 71 | BURN_MSIFEATURE* pFeature = pPackage->Msi.rgFeatures + iFeature; |
diff --git a/src/burn/engine/msiengine.cpp b/src/burn/engine/msiengine.cpp index c8f68184..c27dd8c2 100644 --- a/src/burn/engine/msiengine.cpp +++ b/src/burn/engine/msiengine.cpp | |||
| @@ -443,7 +443,6 @@ extern "C" HRESULT MsiEngineDetectPackage( | |||
| 443 | LPWSTR sczInstalledVersion = NULL; | 443 | LPWSTR sczInstalledVersion = NULL; |
| 444 | LPWSTR sczInstalledLanguage = NULL; | 444 | LPWSTR sczInstalledLanguage = NULL; |
| 445 | INSTALLSTATE installState = INSTALLSTATE_UNKNOWN; | 445 | INSTALLSTATE installState = INSTALLSTATE_UNKNOWN; |
| 446 | BOOTSTRAPPER_RELATED_OPERATION operation = BOOTSTRAPPER_RELATED_OPERATION_NONE; | ||
| 447 | BOOTSTRAPPER_RELATED_OPERATION relatedMsiOperation = BOOTSTRAPPER_RELATED_OPERATION_NONE; | 446 | BOOTSTRAPPER_RELATED_OPERATION relatedMsiOperation = BOOTSTRAPPER_RELATED_OPERATION_NONE; |
| 448 | WCHAR wzProductCode[MAX_GUID_CHARS + 1] = { }; | 447 | WCHAR wzProductCode[MAX_GUID_CHARS + 1] = { }; |
| 449 | VERUTIL_VERSION* pVersion = NULL; | 448 | VERUTIL_VERSION* pVersion = NULL; |
| @@ -455,39 +454,39 @@ extern "C" HRESULT MsiEngineDetectPackage( | |||
| 455 | hr = WiuGetProductInfoEx(pPackage->Msi.sczProductCode, NULL, pPackage->fPerMachine ? MSIINSTALLCONTEXT_MACHINE : MSIINSTALLCONTEXT_USERUNMANAGED, INSTALLPROPERTY_VERSIONSTRING, &sczInstalledVersion); | 454 | hr = WiuGetProductInfoEx(pPackage->Msi.sczProductCode, NULL, pPackage->fPerMachine ? MSIINSTALLCONTEXT_MACHINE : MSIINSTALLCONTEXT_USERUNMANAGED, INSTALLPROPERTY_VERSIONSTRING, &sczInstalledVersion); |
| 456 | if (SUCCEEDED(hr)) | 455 | if (SUCCEEDED(hr)) |
| 457 | { | 456 | { |
| 458 | hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pPackage->Msi.pInstalledVersion); | 457 | hr = VerParseVersion(sczInstalledVersion, 0, FALSE, &pVersion); |
| 459 | ExitOnFailure(hr, "Failed to parse installed version: '%ls' for ProductCode: %ls", sczInstalledVersion, pPackage->Msi.sczProductCode); | 458 | ExitOnFailure(hr, "Failed to parse installed version: '%ls' for ProductCode: %ls", sczInstalledVersion, pPackage->Msi.sczProductCode); |
| 460 | 459 | ||
| 461 | if (pPackage->Msi.pInstalledVersion->fInvalid) | 460 | if (pVersion->fInvalid) |
| 462 | { | 461 | { |
| 463 | LogId(REPORT_WARNING, MSG_DETECTED_MSI_PACKAGE_INVALID_VERSION, pPackage->Msi.sczProductCode, sczInstalledVersion); | 462 | LogId(REPORT_WARNING, MSG_DETECTED_MSI_PACKAGE_INVALID_VERSION, pPackage->Msi.sczProductCode, sczInstalledVersion); |
| 464 | } | 463 | } |
| 465 | 464 | ||
| 466 | // compare versions | 465 | // compare versions |
| 467 | hr = VerCompareParsedVersions(pPackage->Msi.pVersion, pPackage->Msi.pInstalledVersion, &nCompareResult); | 466 | hr = VerCompareParsedVersions(pPackage->Msi.pVersion, pVersion, &nCompareResult); |
| 468 | ExitOnFailure(hr, "Failed to compare version '%ls' to installed version: '%ls'", pPackage->Msi.pVersion->sczVersion, pPackage->Msi.pInstalledVersion->sczVersion); | 467 | ExitOnFailure(hr, "Failed to compare version '%ls' to installed version: '%ls'", pPackage->Msi.pVersion->sczVersion, pVersion->sczVersion); |
| 469 | 468 | ||
| 470 | if (nCompareResult < 0) | 469 | if (nCompareResult < 0) |
| 471 | { | 470 | { |
| 472 | operation = BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE; | 471 | pPackage->Msi.operation = BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE; |
| 473 | pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED; | 472 | pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED; |
| 474 | } | 473 | } |
| 474 | else if (nCompareResult > 0) | ||
| 475 | { | ||
| 476 | pPackage->Msi.operation = BOOTSTRAPPER_RELATED_OPERATION_MINOR_UPDATE; | ||
| 477 | pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_ABSENT; | ||
| 478 | } | ||
| 475 | else | 479 | else |
| 476 | { | 480 | { |
| 477 | if (nCompareResult > 0) | ||
| 478 | { | ||
| 479 | operation = BOOTSTRAPPER_RELATED_OPERATION_MINOR_UPDATE; | ||
| 480 | } | ||
| 481 | |||
| 482 | pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_PRESENT; | 481 | pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_PRESENT; |
| 483 | } | 482 | } |
| 484 | 483 | ||
| 485 | // Report related MSI package to BA. | 484 | // Report related MSI package to BA. |
| 486 | if (BOOTSTRAPPER_RELATED_OPERATION_NONE != operation) | 485 | if (BOOTSTRAPPER_RELATED_OPERATION_NONE != pPackage->Msi.operation) |
| 487 | { | 486 | { |
| 488 | LogId(REPORT_STANDARD, MSG_DETECTED_RELATED_PACKAGE, pPackage->Msi.sczProductCode, LoggingPerMachineToString(pPackage->fPerMachine), pPackage->Msi.pInstalledVersion->sczVersion, pPackage->Msi.dwLanguage, LoggingRelatedOperationToString(operation)); | 487 | LogId(REPORT_STANDARD, MSG_DETECTED_RELATED_PACKAGE, pPackage->Msi.sczProductCode, LoggingPerMachineToString(pPackage->fPerMachine), pVersion->sczVersion, pPackage->Msi.dwLanguage, LoggingRelatedOperationToString(pPackage->Msi.operation)); |
| 489 | 488 | ||
| 490 | hr = UserExperienceOnDetectRelatedMsiPackage(pUserExperience, pPackage->sczId, pPackage->Msi.sczUpgradeCode, pPackage->Msi.sczProductCode, pPackage->fPerMachine, pPackage->Msi.pInstalledVersion, operation); | 489 | hr = UserExperienceOnDetectRelatedMsiPackage(pUserExperience, pPackage->sczId, pPackage->Msi.sczUpgradeCode, pPackage->Msi.sczProductCode, pPackage->fPerMachine, pVersion, pPackage->Msi.operation); |
| 491 | ExitOnRootFailure(hr, "BA aborted detect related MSI package."); | 490 | ExitOnRootFailure(hr, "BA aborted detect related MSI package."); |
| 492 | } | 491 | } |
| 493 | } | 492 | } |
| @@ -623,7 +622,7 @@ extern "C" HRESULT MsiEngineDetectPackage( | |||
| 623 | { | 622 | { |
| 624 | // If we've already detected a major upgrade that trumps any guesses that the detect is a downgrade | 623 | // If we've already detected a major upgrade that trumps any guesses that the detect is a downgrade |
| 625 | // or even something else. | 624 | // or even something else. |
| 626 | if (BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE == operation) | 625 | if (BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE == pPackage->Msi.operation) |
| 627 | { | 626 | { |
| 628 | relatedMsiOperation = BOOTSTRAPPER_RELATED_OPERATION_NONE; | 627 | relatedMsiOperation = BOOTSTRAPPER_RELATED_OPERATION_NONE; |
| 629 | } | 628 | } |
| @@ -632,7 +631,7 @@ extern "C" HRESULT MsiEngineDetectPackage( | |||
| 632 | pPackage->Msi.sczUpgradeCode && CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, NORM_IGNORECASE, pPackage->Msi.sczUpgradeCode, -1, pRelatedMsi->sczUpgradeCode, -1)) | 631 | pPackage->Msi.sczUpgradeCode && CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, NORM_IGNORECASE, pPackage->Msi.sczUpgradeCode, -1, pRelatedMsi->sczUpgradeCode, -1)) |
| 633 | { | 632 | { |
| 634 | relatedMsiOperation = BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE; | 633 | relatedMsiOperation = BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE; |
| 635 | operation = BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE; | 634 | pPackage->Msi.operation = BOOTSTRAPPER_RELATED_OPERATION_DOWNGRADE; |
| 636 | pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE; | 635 | pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_OBSOLETE; |
| 637 | } | 636 | } |
| 638 | else // we're already on the machine so the detect-only *must* be for detection purposes only. | 637 | else // we're already on the machine so the detect-only *must* be for detection purposes only. |
| @@ -643,7 +642,7 @@ extern "C" HRESULT MsiEngineDetectPackage( | |||
| 643 | else | 642 | else |
| 644 | { | 643 | { |
| 645 | relatedMsiOperation = BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE; | 644 | relatedMsiOperation = BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE; |
| 646 | operation = BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE; | 645 | pPackage->Msi.operation = BOOTSTRAPPER_RELATED_OPERATION_MAJOR_UPGRADE; |
| 647 | } | 646 | } |
| 648 | 647 | ||
| 649 | LogId(REPORT_STANDARD, MSG_DETECTED_RELATED_PACKAGE, wzProductCode, LoggingPerMachineToString(fPerMachine), pVersion->sczVersion, uLcid, LoggingRelatedOperationToString(relatedMsiOperation)); | 648 | LogId(REPORT_STANDARD, MSG_DETECTED_RELATED_PACKAGE, wzProductCode, LoggingPerMachineToString(fPerMachine), pVersion->sczVersion, uLcid, LoggingRelatedOperationToString(relatedMsiOperation)); |
| @@ -858,9 +857,6 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage( | |||
| 858 | Trace(REPORT_STANDARD, "Planning MSI package 0x%p", pPackage); | 857 | Trace(REPORT_STANDARD, "Planning MSI package 0x%p", pPackage); |
| 859 | 858 | ||
| 860 | HRESULT hr = S_OK; | 859 | HRESULT hr = S_OK; |
| 861 | VERUTIL_VERSION* pVersion = pPackage->Msi.pVersion; | ||
| 862 | VERUTIL_VERSION* pInstalledVersion = pPackage->Msi.pInstalledVersion; | ||
| 863 | int nCompareResult = 0; | ||
| 864 | BOOTSTRAPPER_ACTION_STATE execute = BOOTSTRAPPER_ACTION_STATE_NONE; | 860 | BOOTSTRAPPER_ACTION_STATE execute = BOOTSTRAPPER_ACTION_STATE_NONE; |
| 865 | BOOTSTRAPPER_ACTION_STATE rollback = BOOTSTRAPPER_ACTION_STATE_NONE; | 861 | BOOTSTRAPPER_ACTION_STATE rollback = BOOTSTRAPPER_ACTION_STATE_NONE; |
| 866 | BOOL fFeatureActionDelta = FALSE; | 862 | BOOL fFeatureActionDelta = FALSE; |
| @@ -892,17 +888,7 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage( | |||
| 892 | case BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED: | 888 | case BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED: |
| 893 | if (BOOTSTRAPPER_REQUEST_STATE_PRESENT == pPackage->requested || BOOTSTRAPPER_REQUEST_STATE_REPAIR == pPackage->requested) | 889 | if (BOOTSTRAPPER_REQUEST_STATE_PRESENT == pPackage->requested || BOOTSTRAPPER_REQUEST_STATE_REPAIR == pPackage->requested) |
| 894 | { | 890 | { |
| 895 | hr = VerCompareParsedVersions(pVersion, pInstalledVersion, &nCompareResult); | 891 | if (BOOTSTRAPPER_REQUEST_STATE_REPAIR == pPackage->requested) |
| 896 | ExitOnFailure(hr, "Failed to compare '%ls' to '%ls' for planning.", pVersion->sczVersion, pInstalledVersion->sczVersion); | ||
| 897 | |||
| 898 | // Take a look at the version and determine if this is a potential | ||
| 899 | // minor upgrade (same ProductCode newer ProductVersion), otherwise, | ||
| 900 | // there is a newer version so no work necessary. | ||
| 901 | if (nCompareResult > 0) | ||
| 902 | { | ||
| 903 | execute = BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE; | ||
| 904 | } | ||
| 905 | else if (BOOTSTRAPPER_REQUEST_STATE_REPAIR == pPackage->requested) | ||
| 906 | { | 892 | { |
| 907 | execute = BOOTSTRAPPER_ACTION_STATE_REPAIR; | 893 | execute = BOOTSTRAPPER_ACTION_STATE_REPAIR; |
| 908 | } | 894 | } |
| @@ -937,7 +923,14 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage( | |||
| 937 | case BOOTSTRAPPER_REQUEST_STATE_PRESENT: __fallthrough; | 923 | case BOOTSTRAPPER_REQUEST_STATE_PRESENT: __fallthrough; |
| 938 | case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT: __fallthrough; | 924 | case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT: __fallthrough; |
| 939 | case BOOTSTRAPPER_REQUEST_STATE_REPAIR: | 925 | case BOOTSTRAPPER_REQUEST_STATE_REPAIR: |
| 940 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; | 926 | if (BOOTSTRAPPER_RELATED_OPERATION_MINOR_UPDATE == pPackage->Msi.operation) |
| 927 | { | ||
| 928 | execute = BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE; | ||
| 929 | } | ||
| 930 | else | ||
| 931 | { | ||
| 932 | execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; | ||
| 933 | } | ||
| 941 | break; | 934 | break; |
| 942 | 935 | ||
| 943 | case BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT: | 936 | case BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT: |
diff --git a/src/burn/engine/package.h b/src/burn/engine/package.h index 1e61d92b..eb40443d 100644 --- a/src/burn/engine/package.h +++ b/src/burn/engine/package.h | |||
| @@ -341,9 +341,10 @@ typedef struct _BURN_PACKAGE | |||
| 341 | LPWSTR sczProductCode; | 341 | LPWSTR sczProductCode; |
| 342 | DWORD dwLanguage; | 342 | DWORD dwLanguage; |
| 343 | VERUTIL_VERSION* pVersion; | 343 | VERUTIL_VERSION* pVersion; |
| 344 | VERUTIL_VERSION* pInstalledVersion; | ||
| 345 | LPWSTR sczUpgradeCode; | 344 | LPWSTR sczUpgradeCode; |
| 346 | 345 | ||
| 346 | BOOTSTRAPPER_RELATED_OPERATION operation; | ||
| 347 | |||
| 347 | BURN_MSIPROPERTY* rgProperties; | 348 | BURN_MSIPROPERTY* rgProperties; |
| 348 | DWORD cProperties; | 349 | DWORD cProperties; |
| 349 | 350 | ||
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs index ba02d8ee..3437bf00 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/DependencyTests.cs | |||
| @@ -730,22 +730,21 @@ namespace WixToolsetTest.BurnE2E | |||
| 730 | bundleNv101.VerifyUnregisteredAndRemovedFromPackageCache(); | 730 | bundleNv101.VerifyUnregisteredAndRemovedFromPackageCache(); |
| 731 | bundleNv1.VerifyRegisteredAndInPackageCache(); | 731 | bundleNv1.VerifyRegisteredAndInPackageCache(); |
| 732 | 732 | ||
| 733 | // The expected values will change after implementing https://github.com/wixtoolset/issues/issues/6535 and https://github.com/wixtoolset/issues/issues/3421 | ||
| 734 | packageAv1.VerifyInstalled(true); | 733 | packageAv1.VerifyInstalled(true); |
| 735 | packageC.VerifyInstalled(false); | 734 | packageC.VerifyInstalled(false); |
| 736 | packageFv1.VerifyInstalledWithVersion(false); | 735 | packageFv1.VerifyInstalledWithVersion(true); |
| 737 | packageFv101.VerifyInstalledWithVersion(true); | 736 | packageFv101.VerifyInstalledWithVersion(false); |
| 738 | packageGv1.VerifyInstalledWithVersion(false); | 737 | packageGv1.VerifyInstalledWithVersion(true); |
| 739 | packageGv101.VerifyInstalledWithVersion(true); | 738 | packageGv101.VerifyInstalledWithVersion(false); |
| 740 | 739 | ||
| 741 | bundleM.Uninstall(); | 740 | bundleM.Uninstall(); |
| 742 | bundleM.VerifyUnregisteredAndRemovedFromPackageCache(); | 741 | bundleM.VerifyUnregisteredAndRemovedFromPackageCache(); |
| 743 | 742 | ||
| 744 | packageAv1.VerifyInstalled(false); | 743 | packageAv1.VerifyInstalled(false); |
| 745 | packageFv1.VerifyInstalledWithVersion(false); | 744 | packageFv1.VerifyInstalledWithVersion(true); |
| 746 | packageFv101.VerifyInstalledWithVersion(true); | 745 | packageFv101.VerifyInstalledWithVersion(false); |
| 747 | packageGv1.VerifyInstalledWithVersion(false); | 746 | packageGv1.VerifyInstalledWithVersion(true); |
| 748 | packageGv101.VerifyInstalledWithVersion(true); | 747 | packageGv101.VerifyInstalledWithVersion(false); |
| 749 | 748 | ||
| 750 | bundleNv1.Uninstall(); | 749 | bundleNv1.Uninstall(); |
| 751 | bundleNv1.VerifyUnregisteredAndRemovedFromPackageCache(); | 750 | bundleNv1.VerifyUnregisteredAndRemovedFromPackageCache(); |
| @@ -804,20 +803,19 @@ namespace WixToolsetTest.BurnE2E | |||
| 804 | bundleNv101.VerifyUnregisteredAndRemovedFromPackageCache(); | 803 | bundleNv101.VerifyUnregisteredAndRemovedFromPackageCache(); |
| 805 | bundleNv1.VerifyRegisteredAndInPackageCache(); | 804 | bundleNv1.VerifyRegisteredAndInPackageCache(); |
| 806 | 805 | ||
| 807 | // The expected values will change after implementing https://github.com/wixtoolset/issues/issues/6535 and https://github.com/wixtoolset/issues/issues/3421 | ||
| 808 | packageAv1.VerifyInstalled(true); | 806 | packageAv1.VerifyInstalled(true); |
| 809 | packageC.VerifyInstalled(false); | 807 | packageC.VerifyInstalled(false); |
| 810 | packageFv1.VerifyInstalledWithVersion(false); | 808 | packageFv1.VerifyInstalledWithVersion(true); |
| 811 | packageFv101.VerifyInstalledWithVersion(true); | 809 | packageFv101.VerifyInstalledWithVersion(false); |
| 812 | packageGv1.VerifyInstalledWithVersion(false); | 810 | packageGv1.VerifyInstalledWithVersion(true); |
| 813 | packageGv101.VerifyInstalledWithVersion(true); | 811 | packageGv101.VerifyInstalledWithVersion(false); |
| 814 | 812 | ||
| 815 | bundleNv1.Uninstall(); | 813 | bundleNv1.Uninstall(); |
| 816 | bundleNv1.VerifyUnregisteredAndRemovedFromPackageCache(); | 814 | bundleNv1.VerifyUnregisteredAndRemovedFromPackageCache(); |
| 817 | 815 | ||
| 818 | packageAv1.VerifyInstalled(true); | 816 | packageAv1.VerifyInstalled(true); |
| 819 | packageFv1.VerifyInstalledWithVersion(false); | 817 | packageFv1.VerifyInstalledWithVersion(true); |
| 820 | packageFv101.VerifyInstalledWithVersion(true); | 818 | packageFv101.VerifyInstalledWithVersion(false); |
| 821 | packageGv1.VerifyInstalledWithVersion(false); | 819 | packageGv1.VerifyInstalledWithVersion(false); |
| 822 | packageGv101.VerifyInstalledWithVersion(false); | 820 | packageGv101.VerifyInstalledWithVersion(false); |
| 823 | 821 | ||
diff --git a/src/wix/WixToolset.Core.Burn/Bind/ProcessDependencyProvidersCommand.cs b/src/wix/WixToolset.Core.Burn/Bind/ProcessDependencyProvidersCommand.cs index 5df6c887..e4e04845 100644 --- a/src/wix/WixToolset.Core.Burn/Bind/ProcessDependencyProvidersCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bind/ProcessDependencyProvidersCommand.cs | |||
| @@ -107,7 +107,7 @@ namespace WixToolset.Core.Burn.Bind | |||
| 107 | this.Section.AddSymbol(new WixDependencyProviderSymbol(facade.PackageSymbol.SourceLineNumbers, facade.PackageSymbol.Id) | 107 | this.Section.AddSymbol(new WixDependencyProviderSymbol(facade.PackageSymbol.SourceLineNumbers, facade.PackageSymbol.Id) |
| 108 | { | 108 | { |
| 109 | ParentRef = facade.PackageId, | 109 | ParentRef = facade.PackageId, |
| 110 | ProviderKey = key, | 110 | ProviderKey = $"{key}_v{facade.PackageSymbol.Version}", |
| 111 | Version = facade.PackageSymbol.Version, | 111 | Version = facade.PackageSymbol.Version, |
| 112 | DisplayName = facade.PackageSymbol.DisplayName | 112 | DisplayName = facade.PackageSymbol.DisplayName |
| 113 | }); | 113 | }); |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs index e41986ee..7cfcdded 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/ContainerFixture.cs | |||
| @@ -150,7 +150,7 @@ namespace WixToolsetTest.CoreIntegration | |||
| 150 | { | 150 | { |
| 151 | "<MsiPackage Id='FirstX86.msi' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='no' Vital='yes' RollbackBoundaryForward='WixDefaultBoundary' LogPathVariable='WixBundleLog_FirstX86.msi' RollbackLogPathVariable='WixBundleRollbackLog_FirstX86.msi' ProductCode='*' Language='1033' Version='1.0.0.0' UpgradeCode='{12E4699F-E774-4D05-8A01-5BDD41BBA127}'>" + | 151 | "<MsiPackage Id='FirstX86.msi' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='no' Vital='yes' RollbackBoundaryForward='WixDefaultBoundary' LogPathVariable='WixBundleLog_FirstX86.msi' RollbackLogPathVariable='WixBundleRollbackLog_FirstX86.msi' ProductCode='*' Language='1033' Version='1.0.0.0' UpgradeCode='{12E4699F-E774-4D05-8A01-5BDD41BBA127}'>" + |
| 152 | "<MsiProperty Id='ARPSYSTEMCOMPONENT' Value='1' />" + | 152 | "<MsiProperty Id='ARPSYSTEMCOMPONENT' Value='1' />" + |
| 153 | $"<Provides Key='{GetProductCodeFromMsiPdb(pdbPaths[0])}' Version='1.0.0.0' DisplayName='MsiPackage' />" + | 153 | $"<Provides Key='{GetProductCodeFromMsiPdb(pdbPaths[0])}_v1.0.0.0' Version='1.0.0.0' DisplayName='MsiPackage' />" + |
| 154 | "<RelatedPackage Id='{12E4699F-E774-4D05-8A01-5BDD41BBA127}' MaxVersion='1.0.0.0' MaxInclusive='no' OnlyDetect='no' LangInclusive='yes'><Language Id='1033' /></RelatedPackage>" + | 154 | "<RelatedPackage Id='{12E4699F-E774-4D05-8A01-5BDD41BBA127}' MaxVersion='1.0.0.0' MaxInclusive='no' OnlyDetect='no' LangInclusive='yes'><Language Id='1033' /></RelatedPackage>" + |
| 155 | "<RelatedPackage Id='{12E4699F-E774-4D05-8A01-5BDD41BBA127}' MinVersion='1.0.0.0' MinInclusive='no' OnlyDetect='yes' LangInclusive='yes'><Language Id='1033' /></RelatedPackage>" + | 155 | "<RelatedPackage Id='{12E4699F-E774-4D05-8A01-5BDD41BBA127}' MinVersion='1.0.0.0' MinInclusive='no' OnlyDetect='yes' LangInclusive='yes'><Language Id='1033' /></RelatedPackage>" + |
| 156 | "<PayloadRef Id='FirstX86.msi' />" + | 156 | "<PayloadRef Id='FirstX86.msi' />" + |
| @@ -158,7 +158,7 @@ namespace WixToolsetTest.CoreIntegration | |||
| 158 | "</MsiPackage>", | 158 | "</MsiPackage>", |
| 159 | "<MsiPackage Id='FirstX64.msi' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='no' Vital='yes' RollbackBoundaryBackward='WixDefaultBoundary' LogPathVariable='WixBundleLog_FirstX64.msi' RollbackLogPathVariable='WixBundleRollbackLog_FirstX64.msi' ProductCode='*' Language='1033' Version='1.0.0.0' UpgradeCode='{12E4699F-E774-4D05-8A01-5BDD41BBA127}'>" + | 159 | "<MsiPackage Id='FirstX64.msi' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='no' Vital='yes' RollbackBoundaryBackward='WixDefaultBoundary' LogPathVariable='WixBundleLog_FirstX64.msi' RollbackLogPathVariable='WixBundleRollbackLog_FirstX64.msi' ProductCode='*' Language='1033' Version='1.0.0.0' UpgradeCode='{12E4699F-E774-4D05-8A01-5BDD41BBA127}'>" + |
| 160 | "<MsiProperty Id='ARPSYSTEMCOMPONENT' Value='1' />" + | 160 | "<MsiProperty Id='ARPSYSTEMCOMPONENT' Value='1' />" + |
| 161 | $"<Provides Key='{GetProductCodeFromMsiPdb(pdbPaths[1])}' Version='1.0.0.0' DisplayName='MsiPackage' />" + | 161 | $"<Provides Key='{GetProductCodeFromMsiPdb(pdbPaths[1])}_v1.0.0.0' Version='1.0.0.0' DisplayName='MsiPackage' />" + |
| 162 | "<RelatedPackage Id='{12E4699F-E774-4D05-8A01-5BDD41BBA127}' MaxVersion='1.0.0.0' MaxInclusive='no' OnlyDetect='no' LangInclusive='yes'><Language Id='1033' /></RelatedPackage>" + | 162 | "<RelatedPackage Id='{12E4699F-E774-4D05-8A01-5BDD41BBA127}' MaxVersion='1.0.0.0' MaxInclusive='no' OnlyDetect='no' LangInclusive='yes'><Language Id='1033' /></RelatedPackage>" + |
| 163 | "<RelatedPackage Id='{12E4699F-E774-4D05-8A01-5BDD41BBA127}' MinVersion='1.0.0.0' MinInclusive='no' OnlyDetect='yes' LangInclusive='yes'><Language Id='1033' /></RelatedPackage>" + | 163 | "<RelatedPackage Id='{12E4699F-E774-4D05-8A01-5BDD41BBA127}' MinVersion='1.0.0.0' MinInclusive='no' OnlyDetect='yes' LangInclusive='yes'><Language Id='1033' /></RelatedPackage>" + |
| 164 | "<PayloadRef Id='FirstX64.msi' />" + | 164 | "<PayloadRef Id='FirstX64.msi' />" + |
