diff options
Diffstat (limited to 'src/api')
11 files changed, 539 insertions, 9 deletions
diff --git a/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h b/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h index 4fbfc890..659901be 100644 --- a/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h +++ b/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h | |||
@@ -205,6 +205,10 @@ enum BOOTSTRAPPER_APPLICATION_MESSAGE | |||
205 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, | 205 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, |
206 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATEBEGIN, | 206 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATEBEGIN, |
207 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE, | 207 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE, |
208 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE, | ||
209 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN, | ||
210 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE, | ||
211 | BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE, | ||
208 | }; | 212 | }; |
209 | 213 | ||
210 | enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION | 214 | enum BOOTSTRAPPER_APPLYCOMPLETE_ACTION |
@@ -648,6 +652,20 @@ struct BA_ONDETECTBEGIN_RESULTS | |||
648 | BOOL fCancel; | 652 | BOOL fCancel; |
649 | }; | 653 | }; |
650 | 654 | ||
655 | struct BA_ONDETECTCOMPATIBLEMSIPACKAGE_ARGS | ||
656 | { | ||
657 | DWORD cbSize; | ||
658 | LPCWSTR wzPackageId; | ||
659 | LPCWSTR wzCompatiblePackageId; | ||
660 | LPCWSTR wzCompatiblePackageVersion; | ||
661 | }; | ||
662 | |||
663 | struct BA_ONDETECTCOMPATIBLEMSIPACKAGE_RESULTS | ||
664 | { | ||
665 | DWORD cbSize; | ||
666 | BOOL fCancel; | ||
667 | }; | ||
668 | |||
651 | struct BA_ONDETECTCOMPLETE_ARGS | 669 | struct BA_ONDETECTCOMPLETE_ARGS |
652 | { | 670 | { |
653 | DWORD cbSize; | 671 | DWORD cbSize; |
@@ -1023,6 +1041,36 @@ struct BA_ONPLANBEGIN_RESULTS | |||
1023 | BOOL fCancel; | 1041 | BOOL fCancel; |
1024 | }; | 1042 | }; |
1025 | 1043 | ||
1044 | struct BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_ARGS | ||
1045 | { | ||
1046 | DWORD cbSize; | ||
1047 | LPCWSTR wzPackageId; | ||
1048 | LPCWSTR wzCompatiblePackageId; | ||
1049 | LPCWSTR wzCompatiblePackageVersion; | ||
1050 | BOOL fRecommendedRemove; | ||
1051 | }; | ||
1052 | |||
1053 | struct BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_RESULTS | ||
1054 | { | ||
1055 | DWORD cbSize; | ||
1056 | BOOL fCancel; | ||
1057 | BOOL fRequestRemove; | ||
1058 | }; | ||
1059 | |||
1060 | struct BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_ARGS | ||
1061 | { | ||
1062 | DWORD cbSize; | ||
1063 | LPCWSTR wzPackageId; | ||
1064 | LPCWSTR wzCompatiblePackageId; | ||
1065 | HRESULT hrStatus; | ||
1066 | BOOL fRequestedRemove; | ||
1067 | }; | ||
1068 | |||
1069 | struct BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_RESULTS | ||
1070 | { | ||
1071 | DWORD cbSize; | ||
1072 | }; | ||
1073 | |||
1026 | struct BA_ONPLANCOMPLETE_ARGS | 1074 | struct BA_ONPLANCOMPLETE_ARGS |
1027 | { | 1075 | { |
1028 | DWORD cbSize; | 1076 | DWORD cbSize; |
@@ -1086,6 +1134,19 @@ struct BA_ONPLANMSIPACKAGE_RESULTS | |||
1086 | BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning; | 1134 | BOOTSTRAPPER_MSI_FILE_VERSIONING fileVersioning; |
1087 | }; | 1135 | }; |
1088 | 1136 | ||
1137 | struct BA_ONPLANNEDCOMPATIBLEPACKAGE_ARGS | ||
1138 | { | ||
1139 | DWORD cbSize; | ||
1140 | LPCWSTR wzPackageId; | ||
1141 | LPCWSTR wzCompatiblePackageId; | ||
1142 | BOOL fRemove; | ||
1143 | }; | ||
1144 | |||
1145 | struct BA_ONPLANNEDCOMPATIBLEPACKAGE_RESULTS | ||
1146 | { | ||
1147 | DWORD cbSize; | ||
1148 | }; | ||
1149 | |||
1089 | struct BA_ONPLANNEDPACKAGE_ARGS | 1150 | struct BA_ONPLANNEDPACKAGE_ARGS |
1090 | { | 1151 | { |
1091 | DWORD cbSize; | 1152 | DWORD cbSize; |
diff --git a/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs b/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs index 34b63a50..f277425e 100644 --- a/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs +++ b/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs | |||
@@ -63,6 +63,9 @@ namespace WixToolset.Mba.Core | |||
63 | 63 | ||
64 | /// <inheritdoc/> | 64 | /// <inheritdoc/> |
65 | public event EventHandler<DetectPackageBeginEventArgs> DetectPackageBegin; | 65 | public event EventHandler<DetectPackageBeginEventArgs> DetectPackageBegin; |
66 | |||
67 | /// <inheritdoc/> | ||
68 | public event EventHandler<DetectCompatibleMsiPackageEventArgs> DetectCompatibleMsiPackage; | ||
66 | 69 | ||
67 | /// <inheritdoc/> | 70 | /// <inheritdoc/> |
68 | public event EventHandler<DetectRelatedMsiPackageEventArgs> DetectRelatedMsiPackage; | 71 | public event EventHandler<DetectRelatedMsiPackageEventArgs> DetectRelatedMsiPackage; |
@@ -92,6 +95,12 @@ namespace WixToolset.Mba.Core | |||
92 | public event EventHandler<PlanPackageBeginEventArgs> PlanPackageBegin; | 95 | public event EventHandler<PlanPackageBeginEventArgs> PlanPackageBegin; |
93 | 96 | ||
94 | /// <inheritdoc/> | 97 | /// <inheritdoc/> |
98 | public event EventHandler<PlanCompatibleMsiPackageBeginEventArgs> PlanCompatibleMsiPackageBegin; | ||
99 | |||
100 | /// <inheritdoc/> | ||
101 | public event EventHandler<PlanCompatibleMsiPackageCompleteEventArgs> PlanCompatibleMsiPackageComplete; | ||
102 | |||
103 | /// <inheritdoc/> | ||
95 | public event EventHandler<PlanPatchTargetEventArgs> PlanPatchTarget; | 104 | public event EventHandler<PlanPatchTargetEventArgs> PlanPatchTarget; |
96 | 105 | ||
97 | /// <inheritdoc/> | 106 | /// <inheritdoc/> |
@@ -104,6 +113,9 @@ namespace WixToolset.Mba.Core | |||
104 | public event EventHandler<PlanPackageCompleteEventArgs> PlanPackageComplete; | 113 | public event EventHandler<PlanPackageCompleteEventArgs> PlanPackageComplete; |
105 | 114 | ||
106 | /// <inheritdoc/> | 115 | /// <inheritdoc/> |
116 | public event EventHandler<PlannedCompatiblePackageEventArgs> PlannedCompatiblePackage; | ||
117 | |||
118 | /// <inheritdoc/> | ||
107 | public event EventHandler<PlannedPackageEventArgs> PlannedPackage; | 119 | public event EventHandler<PlannedPackageEventArgs> PlannedPackage; |
108 | 120 | ||
109 | /// <inheritdoc/> | 121 | /// <inheritdoc/> |
@@ -415,6 +427,19 @@ namespace WixToolset.Mba.Core | |||
415 | } | 427 | } |
416 | 428 | ||
417 | /// <summary> | 429 | /// <summary> |
430 | /// Called by the engine, raises the <see cref="DetectCompatibleMsiPackage"/> event. | ||
431 | /// </summary> | ||
432 | /// <param name="args">Additional arguments for this event.</param> | ||
433 | protected virtual void OnDetectCompatibleMsiPackage(DetectCompatibleMsiPackageEventArgs args) | ||
434 | { | ||
435 | EventHandler<DetectCompatibleMsiPackageEventArgs> handler = this.DetectCompatibleMsiPackage; | ||
436 | if (null != handler) | ||
437 | { | ||
438 | handler(this, args); | ||
439 | } | ||
440 | } | ||
441 | |||
442 | /// <summary> | ||
418 | /// Called by the engine, raises the <see cref="DetectRelatedMsiPackage"/> event. | 443 | /// Called by the engine, raises the <see cref="DetectRelatedMsiPackage"/> event. |
419 | /// </summary> | 444 | /// </summary> |
420 | /// <param name="args">Additional arguments for this event.</param> | 445 | /// <param name="args">Additional arguments for this event.</param> |
@@ -531,6 +556,32 @@ namespace WixToolset.Mba.Core | |||
531 | } | 556 | } |
532 | 557 | ||
533 | /// <summary> | 558 | /// <summary> |
559 | /// Called by the engine, raises the <see cref="PlanCompatibleMsiPackageBegin"/> event. | ||
560 | /// </summary> | ||
561 | /// <param name="args">Additional arguments for this event.</param> | ||
562 | protected virtual void OnPlanCompatibleMsiPackageBegin(PlanCompatibleMsiPackageBeginEventArgs args) | ||
563 | { | ||
564 | EventHandler<PlanCompatibleMsiPackageBeginEventArgs> handler = this.PlanCompatibleMsiPackageBegin; | ||
565 | if (null != handler) | ||
566 | { | ||
567 | handler(this, args); | ||
568 | } | ||
569 | } | ||
570 | |||
571 | /// <summary> | ||
572 | /// Called by the engine, raises the <see cref="PlanCompatibleMsiPackageComplete"/> event. | ||
573 | /// </summary> | ||
574 | /// <param name="args">Additional arguments for this event.</param> | ||
575 | protected virtual void OnPlanCompatibleMsiPackageComplete(PlanCompatibleMsiPackageCompleteEventArgs args) | ||
576 | { | ||
577 | EventHandler<PlanCompatibleMsiPackageCompleteEventArgs> handler = this.PlanCompatibleMsiPackageComplete; | ||
578 | if (null != handler) | ||
579 | { | ||
580 | handler(this, args); | ||
581 | } | ||
582 | } | ||
583 | |||
584 | /// <summary> | ||
534 | /// Called by the engine, raises the <see cref="PlanPatchTarget"/> event. | 585 | /// Called by the engine, raises the <see cref="PlanPatchTarget"/> event. |
535 | /// </summary> | 586 | /// </summary> |
536 | /// <param name="args">Additional arguments for this event.</param> | 587 | /// <param name="args">Additional arguments for this event.</param> |
@@ -583,6 +634,19 @@ namespace WixToolset.Mba.Core | |||
583 | } | 634 | } |
584 | 635 | ||
585 | /// <summary> | 636 | /// <summary> |
637 | /// Called by the engine, raises the <see cref="PlannedCompatiblePackage"/> event. | ||
638 | /// </summary> | ||
639 | /// <param name="args">Additional arguments for this event.</param> | ||
640 | protected virtual void OnPlannedCompatiblePackage(PlannedCompatiblePackageEventArgs args) | ||
641 | { | ||
642 | EventHandler<PlannedCompatiblePackageEventArgs> handler = this.PlannedCompatiblePackage; | ||
643 | if (null != handler) | ||
644 | { | ||
645 | handler(this, args); | ||
646 | } | ||
647 | } | ||
648 | |||
649 | /// <summary> | ||
586 | /// Called by the engine, raises the <see cref="PlannedPackage"/> event. | 650 | /// Called by the engine, raises the <see cref="PlannedPackage"/> event. |
587 | /// </summary> | 651 | /// </summary> |
588 | /// <param name="args">Additional arguments for this event.</param> | 652 | /// <param name="args">Additional arguments for this event.</param> |
@@ -1363,6 +1427,15 @@ namespace WixToolset.Mba.Core | |||
1363 | return args.HResult; | 1427 | return args.HResult; |
1364 | } | 1428 | } |
1365 | 1429 | ||
1430 | int IBootstrapperApplication.OnDetectCompatibleMsiPackage(string wzPackageId, string wzCompatiblePackageId, string wzCompatiblePackageVersion, ref bool fCancel) | ||
1431 | { | ||
1432 | DetectCompatibleMsiPackageEventArgs args = new DetectCompatibleMsiPackageEventArgs(wzPackageId, wzCompatiblePackageId, wzCompatiblePackageVersion, fCancel); | ||
1433 | this.OnDetectCompatibleMsiPackage(args); | ||
1434 | |||
1435 | fCancel = args.Cancel; | ||
1436 | return args.HResult; | ||
1437 | } | ||
1438 | |||
1366 | int IBootstrapperApplication.OnDetectRelatedMsiPackage(string wzPackageId, string wzUpgradeCode, string wzProductCode, bool fPerMachine, string wzVersion, RelatedOperation operation, ref bool fCancel) | 1439 | int IBootstrapperApplication.OnDetectRelatedMsiPackage(string wzPackageId, string wzUpgradeCode, string wzProductCode, bool fPerMachine, string wzVersion, RelatedOperation operation, ref bool fCancel) |
1367 | { | 1440 | { |
1368 | DetectRelatedMsiPackageEventArgs args = new DetectRelatedMsiPackageEventArgs(wzPackageId, wzUpgradeCode, wzProductCode, fPerMachine, wzVersion, operation, fCancel); | 1441 | DetectRelatedMsiPackageEventArgs args = new DetectRelatedMsiPackageEventArgs(wzPackageId, wzUpgradeCode, wzProductCode, fPerMachine, wzVersion, operation, fCancel); |
@@ -1445,6 +1518,24 @@ namespace WixToolset.Mba.Core | |||
1445 | return args.HResult; | 1518 | return args.HResult; |
1446 | } | 1519 | } |
1447 | 1520 | ||
1521 | int IBootstrapperApplication.OnPlanCompatibleMsiPackageBegin(string wzPackageId, string wzCompatiblePackageId, string wzCompatiblePackageVersion, bool recommendedRemove, ref bool pRequestedRemove, ref bool fCancel) | ||
1522 | { | ||
1523 | PlanCompatibleMsiPackageBeginEventArgs args = new PlanCompatibleMsiPackageBeginEventArgs(wzPackageId, wzCompatiblePackageId, wzCompatiblePackageVersion, recommendedRemove, pRequestedRemove, fCancel); | ||
1524 | this.OnPlanCompatibleMsiPackageBegin(args); | ||
1525 | |||
1526 | pRequestedRemove = args.RequestRemove; | ||
1527 | fCancel = args.Cancel; | ||
1528 | return args.HResult; | ||
1529 | } | ||
1530 | |||
1531 | int IBootstrapperApplication.OnPlanCompatibleMsiPackageComplete(string wzPackageId, string wzCompatiblePackageId, int hrStatus, bool requestedRemove) | ||
1532 | { | ||
1533 | PlanCompatibleMsiPackageCompleteEventArgs args = new PlanCompatibleMsiPackageCompleteEventArgs(wzPackageId, wzCompatiblePackageId, hrStatus, requestedRemove); | ||
1534 | this.OnPlanCompatibleMsiPackageComplete(args); | ||
1535 | |||
1536 | return args.HResult; | ||
1537 | } | ||
1538 | |||
1448 | int IBootstrapperApplication.OnPlanPatchTarget(string wzPackageId, string wzProductCode, RequestState recommendedState, ref RequestState pRequestedState, ref bool fCancel) | 1539 | int IBootstrapperApplication.OnPlanPatchTarget(string wzPackageId, string wzProductCode, RequestState recommendedState, ref RequestState pRequestedState, ref bool fCancel) |
1449 | { | 1540 | { |
1450 | PlanPatchTargetEventArgs args = new PlanPatchTargetEventArgs(wzPackageId, wzProductCode, recommendedState, pRequestedState, fCancel); | 1541 | PlanPatchTargetEventArgs args = new PlanPatchTargetEventArgs(wzPackageId, wzProductCode, recommendedState, pRequestedState, fCancel); |
@@ -1486,6 +1577,14 @@ namespace WixToolset.Mba.Core | |||
1486 | return args.HResult; | 1577 | return args.HResult; |
1487 | } | 1578 | } |
1488 | 1579 | ||
1580 | int IBootstrapperApplication.OnPlannedCompatiblePackage(string wzPackageId, string wzCompatiblePackageId, bool remove) | ||
1581 | { | ||
1582 | var args = new PlannedCompatiblePackageEventArgs(wzPackageId, wzCompatiblePackageId, remove); | ||
1583 | this.OnPlannedCompatiblePackage(args); | ||
1584 | |||
1585 | return args.HResult; | ||
1586 | } | ||
1587 | |||
1489 | int IBootstrapperApplication.OnPlannedPackage(string wzPackageId, ActionState execute, ActionState rollback, bool fPlannedCache, bool fPlannedUncache) | 1588 | int IBootstrapperApplication.OnPlannedPackage(string wzPackageId, ActionState execute, ActionState rollback, bool fPlannedCache, bool fPlannedUncache) |
1490 | { | 1589 | { |
1491 | var args = new PlannedPackageEventArgs(wzPackageId, execute, rollback, fPlannedCache, fPlannedUncache); | 1590 | var args = new PlannedPackageEventArgs(wzPackageId, execute, rollback, fPlannedCache, fPlannedUncache); |
diff --git a/src/api/burn/WixToolset.Mba.Core/EventArgs.cs b/src/api/burn/WixToolset.Mba.Core/EventArgs.cs index 93831be6..d4d70651 100644 --- a/src/api/burn/WixToolset.Mba.Core/EventArgs.cs +++ b/src/api/burn/WixToolset.Mba.Core/EventArgs.cs | |||
@@ -496,6 +496,37 @@ namespace WixToolset.Mba.Core | |||
496 | } | 496 | } |
497 | 497 | ||
498 | /// <summary> | 498 | /// <summary> |
499 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.DetectCompatibleMsiPackage"/> | ||
500 | /// </summary> | ||
501 | [Serializable] | ||
502 | public class DetectCompatibleMsiPackageEventArgs : CancellableHResultEventArgs | ||
503 | { | ||
504 | /// <summary /> | ||
505 | public DetectCompatibleMsiPackageEventArgs(string packageId, string compatiblePackageId, string compatiblePackageVersion, bool cancelRecommendation) | ||
506 | : base(cancelRecommendation) | ||
507 | { | ||
508 | this.PackageId = packageId; | ||
509 | this.CompatiblePackageId = compatiblePackageId; | ||
510 | this.CompatiblePackageVersion = compatiblePackageVersion; | ||
511 | } | ||
512 | |||
513 | /// <summary> | ||
514 | /// Gets the identity of the package that was not detected. | ||
515 | /// </summary> | ||
516 | public string PackageId { get; private set; } | ||
517 | |||
518 | /// <summary> | ||
519 | /// Gets the identity of the compatible package that was detected. | ||
520 | /// </summary> | ||
521 | public string CompatiblePackageId { get; private set; } | ||
522 | |||
523 | /// <summary> | ||
524 | /// Gets the version of the compatible package that was detected. | ||
525 | /// </summary> | ||
526 | public string CompatiblePackageVersion { get; private set; } | ||
527 | } | ||
528 | |||
529 | /// <summary> | ||
499 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.DetectRelatedMsiPackage"/> | 530 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.DetectRelatedMsiPackage"/> |
500 | /// </summary> | 531 | /// </summary> |
501 | [Serializable] | 532 | [Serializable] |
@@ -776,6 +807,80 @@ namespace WixToolset.Mba.Core | |||
776 | } | 807 | } |
777 | 808 | ||
778 | /// <summary> | 809 | /// <summary> |
810 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.PlanCompatibleMsiPackageBegin"/> | ||
811 | /// </summary> | ||
812 | [Serializable] | ||
813 | public class PlanCompatibleMsiPackageBeginEventArgs : CancellableHResultEventArgs | ||
814 | { | ||
815 | /// <summary /> | ||
816 | public PlanCompatibleMsiPackageBeginEventArgs(string packageId, string compatiblePackageId, string compatiblePackageVersion, bool recommendedRemove, bool requestRemove, bool cancelRecommendation) | ||
817 | : base(cancelRecommendation) | ||
818 | { | ||
819 | this.PackageId = packageId; | ||
820 | this.CompatiblePackageId = compatiblePackageId; | ||
821 | this.CompatiblePackageVersion = compatiblePackageVersion; | ||
822 | this.RecommendedRemove = recommendedRemove; | ||
823 | this.RequestRemove = requestRemove; | ||
824 | } | ||
825 | |||
826 | /// <summary> | ||
827 | /// Gets the identity of the package that was not detected. | ||
828 | /// </summary> | ||
829 | public string PackageId { get; private set; } | ||
830 | |||
831 | /// <summary> | ||
832 | /// Gets the identity of the compatible package detected. | ||
833 | /// </summary> | ||
834 | public string CompatiblePackageId { get; private set; } | ||
835 | |||
836 | /// <summary> | ||
837 | /// Gets the version of the compatible package detected. | ||
838 | /// </summary> | ||
839 | public string CompatiblePackageVersion { get; private set; } | ||
840 | |||
841 | /// <summary> | ||
842 | /// Gets the recommended state to use for the compatible package for planning. | ||
843 | /// </summary> | ||
844 | public bool RecommendedRemove { get; private set; } | ||
845 | |||
846 | /// <summary> | ||
847 | /// Gets or sets whether to uninstall the compatible package. | ||
848 | /// </summary> | ||
849 | public bool RequestRemove { get; set; } | ||
850 | } | ||
851 | |||
852 | /// <summary> | ||
853 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.PlanCompatibleMsiPackageComplete"/> | ||
854 | /// </summary> | ||
855 | [Serializable] | ||
856 | public class PlanCompatibleMsiPackageCompleteEventArgs : StatusEventArgs | ||
857 | { | ||
858 | /// <summary /> | ||
859 | public PlanCompatibleMsiPackageCompleteEventArgs(string packageId, string compatiblePackageId, int hrStatus, bool requestedRemove) | ||
860 | : base(hrStatus) | ||
861 | { | ||
862 | this.PackageId = packageId; | ||
863 | this.CompatiblePackageId = compatiblePackageId; | ||
864 | this.RequestedRemove = requestedRemove; | ||
865 | } | ||
866 | |||
867 | /// <summary> | ||
868 | /// Gets the identity of the package planned for. | ||
869 | /// </summary> | ||
870 | public string PackageId { get; private set; } | ||
871 | |||
872 | /// <summary> | ||
873 | /// Gets the identity of the compatible package detected. | ||
874 | /// </summary> | ||
875 | public string CompatiblePackageId { get; private set; } | ||
876 | |||
877 | /// <summary> | ||
878 | /// Gets the requested state of the package. | ||
879 | /// </summary> | ||
880 | public bool RequestedRemove { get; private set; } | ||
881 | } | ||
882 | |||
883 | /// <summary> | ||
779 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.PlanRollbackBoundary"/> | 884 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.PlanRollbackBoundary"/> |
780 | /// </summary> | 885 | /// </summary> |
781 | [Serializable] | 886 | [Serializable] |
@@ -981,6 +1086,36 @@ namespace WixToolset.Mba.Core | |||
981 | } | 1086 | } |
982 | 1087 | ||
983 | /// <summary> | 1088 | /// <summary> |
1089 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.PlannedCompatiblePackage"/> | ||
1090 | /// </summary> | ||
1091 | [Serializable] | ||
1092 | public class PlannedCompatiblePackageEventArgs : HResultEventArgs | ||
1093 | { | ||
1094 | /// <summary /> | ||
1095 | public PlannedCompatiblePackageEventArgs(string packageId, string compatiblePackageId, bool remove) | ||
1096 | { | ||
1097 | this.PackageId = packageId; | ||
1098 | this.CompatiblePackageId = compatiblePackageId; | ||
1099 | this.Remove = remove; | ||
1100 | } | ||
1101 | |||
1102 | /// <summary> | ||
1103 | /// Gets the identity of the package planned for. | ||
1104 | /// </summary> | ||
1105 | public string PackageId { get; private set; } | ||
1106 | |||
1107 | /// <summary> | ||
1108 | /// Gets the identity of the compatible package detected. | ||
1109 | /// </summary> | ||
1110 | public string CompatiblePackageId { get; private set; } | ||
1111 | |||
1112 | /// <summary> | ||
1113 | /// Gets the planned state of the package. | ||
1114 | /// </summary> | ||
1115 | public bool Remove { get; private set; } | ||
1116 | } | ||
1117 | |||
1118 | /// <summary> | ||
984 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.PlannedPackage"/> | 1119 | /// Event arguments for <see cref="IDefaultBootstrapperApplication.PlannedPackage"/> |
985 | /// </summary> | 1120 | /// </summary> |
986 | [Serializable] | 1121 | [Serializable] |
diff --git a/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs b/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs index babd523a..05f96106 100644 --- a/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs +++ b/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs | |||
@@ -182,16 +182,20 @@ namespace WixToolset.Mba.Core | |||
182 | ); | 182 | ); |
183 | 183 | ||
184 | /// <summary> | 184 | /// <summary> |
185 | /// See <see cref="IDefaultBootstrapperApplication.DetectCompatibleMsiPackage"/>. | ||
186 | /// </summary> | ||
187 | [PreserveSig] | ||
188 | [return: MarshalAs(UnmanagedType.I4)] | ||
189 | int OnDetectCompatibleMsiPackage( | ||
190 | [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId, | ||
191 | [MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId, | ||
192 | [MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageVersion, | ||
193 | [MarshalAs(UnmanagedType.Bool)] ref bool fCancel | ||
194 | ); | ||
195 | |||
196 | /// <summary> | ||
185 | /// See <see cref="IDefaultBootstrapperApplication.DetectRelatedMsiPackage"/>. | 197 | /// See <see cref="IDefaultBootstrapperApplication.DetectRelatedMsiPackage"/>. |
186 | /// </summary> | 198 | /// </summary> |
187 | /// <param name="wzPackageId"></param> | ||
188 | /// <param name="wzUpgradeCode"></param> | ||
189 | /// <param name="wzProductCode"></param> | ||
190 | /// <param name="fPerMachine"></param> | ||
191 | /// <param name="wzVersion"></param> | ||
192 | /// <param name="operation"></param> | ||
193 | /// <param name="fCancel"></param> | ||
194 | /// <returns></returns> | ||
195 | [PreserveSig] | 199 | [PreserveSig] |
196 | [return: MarshalAs(UnmanagedType.I4)] | 200 | [return: MarshalAs(UnmanagedType.I4)] |
197 | int OnDetectRelatedMsiPackage( | 201 | int OnDetectRelatedMsiPackage( |
@@ -318,6 +322,32 @@ namespace WixToolset.Mba.Core | |||
318 | ); | 322 | ); |
319 | 323 | ||
320 | /// <summary> | 324 | /// <summary> |
325 | /// See <see cref="IDefaultBootstrapperApplication.PlanCompatibleMsiPackageBegin"/>. | ||
326 | /// </summary> | ||
327 | [PreserveSig] | ||
328 | [return: MarshalAs(UnmanagedType.I4)] | ||
329 | int OnPlanCompatibleMsiPackageBegin( | ||
330 | [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId, | ||
331 | [MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId, | ||
332 | [MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageVersion, | ||
333 | [MarshalAs(UnmanagedType.Bool)] bool fRecommendedRemove, | ||
334 | [MarshalAs(UnmanagedType.Bool)] ref bool fRequestRemove, | ||
335 | [MarshalAs(UnmanagedType.Bool)] ref bool fCancel | ||
336 | ); | ||
337 | |||
338 | /// <summary> | ||
339 | /// See <see cref="IDefaultBootstrapperApplication.PlanCompatibleMsiPackageComplete"/>. | ||
340 | /// </summary> | ||
341 | [PreserveSig] | ||
342 | [return: MarshalAs(UnmanagedType.I4)] | ||
343 | int OnPlanCompatibleMsiPackageComplete( | ||
344 | [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId, | ||
345 | [MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId, | ||
346 | int hrStatus, | ||
347 | [MarshalAs(UnmanagedType.Bool)] bool fRequestedRemove | ||
348 | ); | ||
349 | |||
350 | /// <summary> | ||
321 | /// See <see cref="IDefaultBootstrapperApplication.PlanPatchTarget"/>. | 351 | /// See <see cref="IDefaultBootstrapperApplication.PlanPatchTarget"/>. |
322 | /// </summary> | 352 | /// </summary> |
323 | /// <param name="wzPackageId"></param> | 353 | /// <param name="wzPackageId"></param> |
@@ -388,6 +418,17 @@ namespace WixToolset.Mba.Core | |||
388 | ); | 418 | ); |
389 | 419 | ||
390 | /// <summary> | 420 | /// <summary> |
421 | /// See <see cref="IDefaultBootstrapperApplication.PlannedCompatiblePackage"/>. | ||
422 | /// </summary> | ||
423 | [PreserveSig] | ||
424 | [return: MarshalAs(UnmanagedType.I4)] | ||
425 | int OnPlannedCompatiblePackage( | ||
426 | [MarshalAs(UnmanagedType.LPWStr)] string wzPackageId, | ||
427 | [MarshalAs(UnmanagedType.LPWStr)] string wzCompatiblePackageId, | ||
428 | [MarshalAs(UnmanagedType.Bool)] bool fRemove | ||
429 | ); | ||
430 | |||
431 | /// <summary> | ||
391 | /// See <see cref="IDefaultBootstrapperApplication.PlannedPackage"/>. | 432 | /// See <see cref="IDefaultBootstrapperApplication.PlannedPackage"/>. |
392 | /// </summary> | 433 | /// </summary> |
393 | [PreserveSig] | 434 | [PreserveSig] |
diff --git a/src/api/burn/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs b/src/api/burn/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs index e809a965..ce06408e 100644 --- a/src/api/burn/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs +++ b/src/api/burn/WixToolset.Mba.Core/IDefaultBootstrapperApplication.cs | |||
@@ -134,6 +134,11 @@ namespace WixToolset.Mba.Core | |||
134 | event EventHandler<DetectBeginEventArgs> DetectBegin; | 134 | event EventHandler<DetectBeginEventArgs> DetectBegin; |
135 | 135 | ||
136 | /// <summary> | 136 | /// <summary> |
137 | /// Fired when a package was not detected but a package using the same provider key was. | ||
138 | /// </summary> | ||
139 | event EventHandler<DetectCompatibleMsiPackageEventArgs> DetectCompatibleMsiPackage; | ||
140 | |||
141 | /// <summary> | ||
137 | /// Fired when the detection phase has completed. | 142 | /// Fired when the detection phase has completed. |
138 | /// </summary> | 143 | /// </summary> |
139 | event EventHandler<DetectCompleteEventArgs> DetectComplete; | 144 | event EventHandler<DetectCompleteEventArgs> DetectComplete; |
@@ -269,6 +274,16 @@ namespace WixToolset.Mba.Core | |||
269 | event EventHandler<PlanBeginEventArgs> PlanBegin; | 274 | event EventHandler<PlanBeginEventArgs> PlanBegin; |
270 | 275 | ||
271 | /// <summary> | 276 | /// <summary> |
277 | /// Fired when the engine plans a new, compatible package using the same provider key. | ||
278 | /// </summary> | ||
279 | event EventHandler<PlanCompatibleMsiPackageBeginEventArgs> PlanCompatibleMsiPackageBegin; | ||
280 | |||
281 | /// <summary> | ||
282 | /// Fired when the engine has completed planning the installation of a specific package. | ||
283 | /// </summary> | ||
284 | event EventHandler<PlanCompatibleMsiPackageCompleteEventArgs> PlanCompatibleMsiPackageComplete; | ||
285 | |||
286 | /// <summary> | ||
272 | /// Fired when the engine has completed planning the installation. | 287 | /// Fired when the engine has completed planning the installation. |
273 | /// </summary> | 288 | /// </summary> |
274 | event EventHandler<PlanCompleteEventArgs> PlanComplete; | 289 | event EventHandler<PlanCompleteEventArgs> PlanComplete; |
@@ -279,6 +294,11 @@ namespace WixToolset.Mba.Core | |||
279 | event EventHandler<PlanForwardCompatibleBundleEventArgs> PlanForwardCompatibleBundle; | 294 | event EventHandler<PlanForwardCompatibleBundleEventArgs> PlanForwardCompatibleBundle; |
280 | 295 | ||
281 | /// <summary> | 296 | /// <summary> |
297 | /// Fired when the engine has completed planning a compatible package. | ||
298 | /// </summary> | ||
299 | event EventHandler<PlannedCompatiblePackageEventArgs> PlannedCompatiblePackage; | ||
300 | |||
301 | /// <summary> | ||
282 | /// Fired when the engine has completed planning a package. | 302 | /// Fired when the engine has completed planning a package. |
283 | /// </summary> | 303 | /// </summary> |
284 | event EventHandler<PlannedPackageEventArgs> PlannedPackage; | 304 | event EventHandler<PlannedPackageEventArgs> PlannedPackage; |
@@ -399,4 +419,4 @@ namespace WixToolset.Mba.Core | |||
399 | /// </summary> | 419 | /// </summary> |
400 | event EventHandler<UnregisterCompleteEventArgs> UnregisterComplete; | 420 | event EventHandler<UnregisterCompleteEventArgs> UnregisterComplete; |
401 | } | 421 | } |
402 | } \ No newline at end of file | 422 | } |
diff --git a/src/api/burn/balutil/inc/BAFunctions.h b/src/api/burn/balutil/inc/BAFunctions.h index 2698a6e3..84359d65 100644 --- a/src/api/burn/balutil/inc/BAFunctions.h +++ b/src/api/burn/balutil/inc/BAFunctions.h | |||
@@ -84,6 +84,10 @@ enum BA_FUNCTIONS_MESSAGE | |||
84 | BA_FUNCTIONS_MESSAGE_ONPLANROLLBACKBOUNDARY = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, | 84 | BA_FUNCTIONS_MESSAGE_ONPLANROLLBACKBOUNDARY = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, |
85 | BA_FUNCTIONS_MESSAGE_ONSETUPDATEBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATEBEGIN, | 85 | BA_FUNCTIONS_MESSAGE_ONSETUPDATEBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATEBEGIN, |
86 | BA_FUNCTIONS_MESSAGE_ONSETUPDATECOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE, | 86 | BA_FUNCTIONS_MESSAGE_ONSETUPDATECOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE, |
87 | BA_FUNCTIONS_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE, | ||
88 | BA_FUNCTIONS_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN, | ||
89 | BA_FUNCTIONS_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE, | ||
90 | BA_FUNCTIONS_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE = BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE, | ||
87 | 91 | ||
88 | BA_FUNCTIONS_MESSAGE_ONTHEMELOADED = 1024, | 92 | BA_FUNCTIONS_MESSAGE_ONTHEMELOADED = 1024, |
89 | BA_FUNCTIONS_MESSAGE_WNDPROC, | 93 | BA_FUNCTIONS_MESSAGE_WNDPROC, |
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctions.h b/src/api/burn/balutil/inc/BalBaseBAFunctions.h index 22e16f1b..c6d0924f 100644 --- a/src/api/burn/balutil/inc/BalBaseBAFunctions.h +++ b/src/api/burn/balutil/inc/BalBaseBAFunctions.h | |||
@@ -182,6 +182,16 @@ public: // IBootstrapperApplication | |||
182 | return S_OK; | 182 | return S_OK; |
183 | } | 183 | } |
184 | 184 | ||
185 | virtual STDMETHODIMP OnDetectCompatibleMsiPackage( | ||
186 | __in_z LPCWSTR /*wzPackageId*/, | ||
187 | __in_z LPCWSTR /*wzCompatiblePackageId*/, | ||
188 | __in LPCWSTR /*wzCompatiblePackageVersion*/, | ||
189 | __inout BOOL* /*pfCancel*/ | ||
190 | ) | ||
191 | { | ||
192 | return S_OK; | ||
193 | } | ||
194 | |||
185 | virtual STDMETHODIMP OnDetectRelatedMsiPackage( | 195 | virtual STDMETHODIMP OnDetectRelatedMsiPackage( |
186 | __in_z LPCWSTR /*wzPackageId*/, | 196 | __in_z LPCWSTR /*wzPackageId*/, |
187 | __in_z LPCWSTR /*wzUpgradeCode*/, | 197 | __in_z LPCWSTR /*wzUpgradeCode*/, |
@@ -276,6 +286,28 @@ public: // IBootstrapperApplication | |||
276 | return S_OK; | 286 | return S_OK; |
277 | } | 287 | } |
278 | 288 | ||
289 | virtual STDMETHODIMP OnPlanCompatibleMsiPackageBegin( | ||
290 | __in_z LPCWSTR /*wzPackageId*/, | ||
291 | __in_z LPCWSTR /*wzCompatiblePackageId*/, | ||
292 | __in LPCWSTR /*wzCompatiblePackageVersion*/, | ||
293 | __in BOOL /*fRecommendedRemove*/, | ||
294 | __inout BOOL* /*pfRequestRemove*/, | ||
295 | __inout BOOL* /*pfCancel*/ | ||
296 | ) | ||
297 | { | ||
298 | return S_OK; | ||
299 | } | ||
300 | |||
301 | virtual STDMETHODIMP OnPlanCompatibleMsiPackageComplete( | ||
302 | __in_z LPCWSTR /*wzPackageId*/, | ||
303 | __in_z LPCWSTR /*wzCompatiblePackageId*/, | ||
304 | __in HRESULT /*hrStatus*/, | ||
305 | __in BOOL /*fRequestedRemove*/ | ||
306 | ) | ||
307 | { | ||
308 | return S_OK; | ||
309 | } | ||
310 | |||
279 | virtual STDMETHODIMP OnPlanPatchTarget( | 311 | virtual STDMETHODIMP OnPlanPatchTarget( |
280 | __in_z LPCWSTR /*wzPackageId*/, | 312 | __in_z LPCWSTR /*wzPackageId*/, |
281 | __in_z LPCWSTR /*wzProductCode*/, | 313 | __in_z LPCWSTR /*wzProductCode*/, |
@@ -322,6 +354,15 @@ public: // IBootstrapperApplication | |||
322 | return S_OK; | 354 | return S_OK; |
323 | } | 355 | } |
324 | 356 | ||
357 | virtual STDMETHODIMP OnPlannedCompatiblePackage( | ||
358 | __in_z LPCWSTR /*wzPackageId*/, | ||
359 | __in_z LPCWSTR /*wzCompatiblePackageId*/, | ||
360 | __in BOOL /*fRemove*/ | ||
361 | ) | ||
362 | { | ||
363 | return S_OK; | ||
364 | } | ||
365 | |||
325 | virtual STDMETHODIMP OnPlannedPackage( | 366 | virtual STDMETHODIMP OnPlannedPackage( |
326 | __in_z LPCWSTR /*wzPackageId*/, | 367 | __in_z LPCWSTR /*wzPackageId*/, |
327 | __in BOOTSTRAPPER_ACTION_STATE /*execute*/, | 368 | __in BOOTSTRAPPER_ACTION_STATE /*execute*/, |
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h b/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h index 1ab0df59..5d5ff098 100644 --- a/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h +++ b/src/api/burn/balutil/inc/BalBaseBAFunctionsProc.h | |||
@@ -155,6 +155,10 @@ static HRESULT WINAPI BalBaseBAFunctionsProc( | |||
155 | case BA_FUNCTIONS_MESSAGE_ONPLANROLLBACKBOUNDARY: | 155 | case BA_FUNCTIONS_MESSAGE_ONPLANROLLBACKBOUNDARY: |
156 | case BA_FUNCTIONS_MESSAGE_ONSETUPDATEBEGIN: | 156 | case BA_FUNCTIONS_MESSAGE_ONSETUPDATEBEGIN: |
157 | case BA_FUNCTIONS_MESSAGE_ONSETUPDATECOMPLETE: | 157 | case BA_FUNCTIONS_MESSAGE_ONSETUPDATECOMPLETE: |
158 | case BA_FUNCTIONS_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE: | ||
159 | case BA_FUNCTIONS_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN: | ||
160 | case BA_FUNCTIONS_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE: | ||
161 | case BA_FUNCTIONS_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE: | ||
158 | hr = BalBaseBootstrapperApplicationProc((BOOTSTRAPPER_APPLICATION_MESSAGE)message, pvArgs, pvResults, pvContext); | 162 | hr = BalBaseBootstrapperApplicationProc((BOOTSTRAPPER_APPLICATION_MESSAGE)message, pvArgs, pvResults, pvContext); |
159 | break; | 163 | break; |
160 | case BA_FUNCTIONS_MESSAGE_ONTHEMELOADED: | 164 | case BA_FUNCTIONS_MESSAGE_ONTHEMELOADED: |
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h index 631d3c62..e1a36fdf 100644 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h | |||
@@ -189,6 +189,17 @@ public: // IBootstrapperApplication | |||
189 | return S_OK; | 189 | return S_OK; |
190 | } | 190 | } |
191 | 191 | ||
192 | virtual STDMETHODIMP OnDetectCompatibleMsiPackage( | ||
193 | __in_z LPCWSTR /*wzPackageId*/, | ||
194 | __in_z LPCWSTR /*wzCompatiblePackageId*/, | ||
195 | __in LPCWSTR /*wzCompatiblePackageVersion*/, | ||
196 | __inout BOOL* pfCancel | ||
197 | ) | ||
198 | { | ||
199 | *pfCancel |= CheckCanceled(); | ||
200 | return S_OK; | ||
201 | } | ||
202 | |||
192 | virtual STDMETHODIMP OnDetectRelatedMsiPackage( | 203 | virtual STDMETHODIMP OnDetectRelatedMsiPackage( |
193 | __in_z LPCWSTR /*wzPackageId*/, | 204 | __in_z LPCWSTR /*wzPackageId*/, |
194 | __in_z LPCWSTR /*wzUpgradeCode*/, | 205 | __in_z LPCWSTR /*wzUpgradeCode*/, |
@@ -290,6 +301,29 @@ public: // IBootstrapperApplication | |||
290 | return S_OK; | 301 | return S_OK; |
291 | } | 302 | } |
292 | 303 | ||
304 | virtual STDMETHODIMP OnPlanCompatibleMsiPackageBegin( | ||
305 | __in_z LPCWSTR /*wzPackageId*/, | ||
306 | __in_z LPCWSTR /*wzCompatiblePackageId*/, | ||
307 | __in LPCWSTR /*wzCompatiblePackageVersion*/, | ||
308 | __in BOOL /*fRecommendedRemove*/, | ||
309 | __inout BOOL* /*pfRequestRemove*/, | ||
310 | __inout BOOL* pfCancel | ||
311 | ) | ||
312 | { | ||
313 | *pfCancel |= CheckCanceled(); | ||
314 | return S_OK; | ||
315 | } | ||
316 | |||
317 | virtual STDMETHODIMP OnPlanCompatibleMsiPackageComplete( | ||
318 | __in_z LPCWSTR /*wzPackageId*/, | ||
319 | __in_z LPCWSTR /*wzCompatiblePackageId*/, | ||
320 | __in HRESULT /*hrStatus*/, | ||
321 | __in BOOL /*fRequestedRemove*/ | ||
322 | ) | ||
323 | { | ||
324 | return S_OK; | ||
325 | } | ||
326 | |||
293 | virtual STDMETHODIMP OnPlanPatchTarget( | 327 | virtual STDMETHODIMP OnPlanPatchTarget( |
294 | __in_z LPCWSTR /*wzPackageId*/, | 328 | __in_z LPCWSTR /*wzPackageId*/, |
295 | __in_z LPCWSTR /*wzProductCode*/, | 329 | __in_z LPCWSTR /*wzProductCode*/, |
@@ -339,6 +373,15 @@ public: // IBootstrapperApplication | |||
339 | return S_OK; | 373 | return S_OK; |
340 | } | 374 | } |
341 | 375 | ||
376 | virtual STDMETHODIMP OnPlannedCompatiblePackage( | ||
377 | __in_z LPCWSTR /*wzPackageId*/, | ||
378 | __in_z LPCWSTR /*wzCompatiblePackageId*/, | ||
379 | __in BOOL /*fRemove*/ | ||
380 | ) | ||
381 | { | ||
382 | return S_OK; | ||
383 | } | ||
384 | |||
342 | virtual STDMETHODIMP OnPlannedPackage( | 385 | virtual STDMETHODIMP OnPlannedPackage( |
343 | __in_z LPCWSTR /*wzPackageId*/, | 386 | __in_z LPCWSTR /*wzPackageId*/, |
344 | __in BOOTSTRAPPER_ACTION_STATE /*execute*/, | 387 | __in BOOTSTRAPPER_ACTION_STATE /*execute*/, |
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h index b9866e4b..1ee5258e 100644 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h +++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h | |||
@@ -126,6 +126,15 @@ static HRESULT BalBaseBAProcOnDetectPackageBegin( | |||
126 | return pBA->OnDetectPackageBegin(pArgs->wzPackageId, &pResults->fCancel); | 126 | return pBA->OnDetectPackageBegin(pArgs->wzPackageId, &pResults->fCancel); |
127 | } | 127 | } |
128 | 128 | ||
129 | static HRESULT BalBaseBAProcOnDetectCompatiblePackage( | ||
130 | __in IBootstrapperApplication* pBA, | ||
131 | __in BA_ONDETECTCOMPATIBLEMSIPACKAGE_ARGS* pArgs, | ||
132 | __inout BA_ONDETECTCOMPATIBLEMSIPACKAGE_RESULTS* pResults | ||
133 | ) | ||
134 | { | ||
135 | return pBA->OnDetectCompatibleMsiPackage(pArgs->wzPackageId, pArgs->wzCompatiblePackageId, pArgs->wzCompatiblePackageVersion, &pResults->fCancel); | ||
136 | } | ||
137 | |||
129 | static HRESULT BalBaseBAProcOnDetectRelatedMsiPackage( | 138 | static HRESULT BalBaseBAProcOnDetectRelatedMsiPackage( |
130 | __in IBootstrapperApplication* pBA, | 139 | __in IBootstrapperApplication* pBA, |
131 | __in BA_ONDETECTRELATEDMSIPACKAGE_ARGS* pArgs, | 140 | __in BA_ONDETECTRELATEDMSIPACKAGE_ARGS* pArgs, |
@@ -189,6 +198,24 @@ static HRESULT BalBaseBAProcOnPlanPackageBegin( | |||
189 | return pBA->OnPlanPackageBegin(pArgs->wzPackageId, pArgs->state, pArgs->fCached, pArgs->installCondition, pArgs->recommendedState, pArgs->recommendedCacheType, &pResults->requestedState, &pResults->requestedCacheType, &pResults->fCancel); | 198 | return pBA->OnPlanPackageBegin(pArgs->wzPackageId, pArgs->state, pArgs->fCached, pArgs->installCondition, pArgs->recommendedState, pArgs->recommendedCacheType, &pResults->requestedState, &pResults->requestedCacheType, &pResults->fCancel); |
190 | } | 199 | } |
191 | 200 | ||
201 | static HRESULT BalBaseBAProcOnPlanCompatibleMsiPackageBegin( | ||
202 | __in IBootstrapperApplication* pBA, | ||
203 | __in BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_ARGS* pArgs, | ||
204 | __inout BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_RESULTS* pResults | ||
205 | ) | ||
206 | { | ||
207 | return pBA->OnPlanCompatibleMsiPackageBegin(pArgs->wzPackageId, pArgs->wzCompatiblePackageId, pArgs->wzCompatiblePackageVersion, pArgs->fRecommendedRemove, &pResults->fRequestRemove, &pResults->fCancel); | ||
208 | } | ||
209 | |||
210 | static HRESULT BalBaseBAProcOnPlanCompatibleMsiPackageComplete( | ||
211 | __in IBootstrapperApplication* pBA, | ||
212 | __in BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_ARGS* pArgs, | ||
213 | __inout BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_RESULTS* /*pResults*/ | ||
214 | ) | ||
215 | { | ||
216 | return pBA->OnPlanCompatibleMsiPackageComplete(pArgs->wzPackageId, pArgs->wzCompatiblePackageId, pArgs->hrStatus, pArgs->fRequestedRemove); | ||
217 | } | ||
218 | |||
192 | static HRESULT BalBaseBAProcOnPlanPatchTarget( | 219 | static HRESULT BalBaseBAProcOnPlanPatchTarget( |
193 | __in IBootstrapperApplication* pBA, | 220 | __in IBootstrapperApplication* pBA, |
194 | __in BA_ONPLANPATCHTARGET_ARGS* pArgs, | 221 | __in BA_ONPLANPATCHTARGET_ARGS* pArgs, |
@@ -216,6 +243,15 @@ static HRESULT BalBaseBAProcOnPlanPackageComplete( | |||
216 | return pBA->OnPlanPackageComplete(pArgs->wzPackageId, pArgs->hrStatus, pArgs->requested); | 243 | return pBA->OnPlanPackageComplete(pArgs->wzPackageId, pArgs->hrStatus, pArgs->requested); |
217 | } | 244 | } |
218 | 245 | ||
246 | static HRESULT BalBaseBAProcOnPlannedCompatiblePackage( | ||
247 | __in IBootstrapperApplication* pBA, | ||
248 | __in BA_ONPLANNEDCOMPATIBLEPACKAGE_ARGS* pArgs, | ||
249 | __inout BA_ONPLANNEDCOMPATIBLEPACKAGE_RESULTS* /*pResults*/ | ||
250 | ) | ||
251 | { | ||
252 | return pBA->OnPlannedCompatiblePackage(pArgs->wzPackageId, pArgs->wzCompatiblePackageId, pArgs->fRemove); | ||
253 | } | ||
254 | |||
219 | static HRESULT BalBaseBAProcOnPlannedPackage( | 255 | static HRESULT BalBaseBAProcOnPlannedPackage( |
220 | __in IBootstrapperApplication* pBA, | 256 | __in IBootstrapperApplication* pBA, |
221 | __in BA_ONPLANNEDPACKAGE_ARGS* pArgs, | 257 | __in BA_ONPLANNEDPACKAGE_ARGS* pArgs, |
@@ -928,6 +964,18 @@ static HRESULT WINAPI BalBaseBootstrapperApplicationProc( | |||
928 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE: | 964 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONSETUPDATECOMPLETE: |
929 | hr = BalBaseBAProcOnSetUpdateComplete(pBA, reinterpret_cast<BA_ONSETUPDATECOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONSETUPDATECOMPLETE_RESULTS*>(pvResults)); | 965 | hr = BalBaseBAProcOnSetUpdateComplete(pBA, reinterpret_cast<BA_ONSETUPDATECOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONSETUPDATECOMPLETE_RESULTS*>(pvResults)); |
930 | break; | 966 | break; |
967 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONDETECTCOMPATIBLEMSIPACKAGE: | ||
968 | hr = BalBaseBAProcOnDetectCompatiblePackage(pBA, reinterpret_cast<BA_ONDETECTCOMPATIBLEMSIPACKAGE_ARGS*>(pvArgs), reinterpret_cast<BA_ONDETECTCOMPATIBLEMSIPACKAGE_RESULTS*>(pvResults)); | ||
969 | break; | ||
970 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGEBEGIN: | ||
971 | hr = BalBaseBAProcOnPlanCompatibleMsiPackageBegin(pBA, reinterpret_cast<BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANCOMPATIBLEMSIPACKAGEBEGIN_RESULTS*>(pvResults)); | ||
972 | break; | ||
973 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE: | ||
974 | hr = BalBaseBAProcOnPlanCompatibleMsiPackageComplete(pBA, reinterpret_cast<BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANCOMPATIBLEMSIPACKAGECOMPLETE_RESULTS*>(pvResults)); | ||
975 | break; | ||
976 | case BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDCOMPATIBLEPACKAGE: | ||
977 | hr = BalBaseBAProcOnPlannedCompatiblePackage(pBA, reinterpret_cast<BA_ONPLANNEDCOMPATIBLEPACKAGE_ARGS*>(pvArgs), reinterpret_cast<BA_ONPLANNEDCOMPATIBLEPACKAGE_RESULTS*>(pvResults)); | ||
978 | break; | ||
931 | } | 979 | } |
932 | } | 980 | } |
933 | 981 | ||
diff --git a/src/api/burn/balutil/inc/IBootstrapperApplication.h b/src/api/burn/balutil/inc/IBootstrapperApplication.h index 577a705b..640f609d 100644 --- a/src/api/burn/balutil/inc/IBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/IBootstrapperApplication.h | |||
@@ -101,6 +101,14 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
101 | __inout BOOL* pfCancel | 101 | __inout BOOL* pfCancel |
102 | ) = 0; | 102 | ) = 0; |
103 | 103 | ||
104 | // OnDetectCompatibleMsiPackage - called when the engine detects that a package is not installed but a newer package using the same provider key is. | ||
105 | STDMETHOD(OnDetectCompatibleMsiPackage)( | ||
106 | __in_z LPCWSTR wzPackageId, | ||
107 | __in_z LPCWSTR wzCompatiblePackageId, | ||
108 | __in_z LPCWSTR wzCompatiblePackageVersion, | ||
109 | __inout BOOL* pfCancel | ||
110 | ) = 0; | ||
111 | |||
104 | // OnDetectRelatedMsiPackage - called when the engine begins detects a related package. | 112 | // OnDetectRelatedMsiPackage - called when the engine begins detects a related package. |
105 | STDMETHOD(OnDetectRelatedMsiPackage)( | 113 | STDMETHOD(OnDetectRelatedMsiPackage)( |
106 | __in_z LPCWSTR wzPackageId, | 114 | __in_z LPCWSTR wzPackageId, |
@@ -181,6 +189,25 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
181 | __inout BOOL* pfCancel | 189 | __inout BOOL* pfCancel |
182 | ) = 0; | 190 | ) = 0; |
183 | 191 | ||
192 | // OnPlanCompatibleMsiPackageBegin - called when the engine plans a newer, compatible package using the same provider key. | ||
193 | STDMETHOD(OnPlanCompatibleMsiPackageBegin)( | ||
194 | __in_z LPCWSTR wzPackageId, | ||
195 | __in_z LPCWSTR wzCompatiblePackageId, | ||
196 | __in_z LPCWSTR wzCompatiblePackageVersion, | ||
197 | __in BOOL fRecommendedRemove, | ||
198 | __inout BOOL* pfRequestRemove, | ||
199 | __inout BOOL* pfCancel | ||
200 | ) = 0; | ||
201 | |||
202 | // OnPlanCompatibleMsiPackageComplete - called after the engine plans the package. | ||
203 | // | ||
204 | STDMETHOD(OnPlanCompatibleMsiPackageComplete)( | ||
205 | __in_z LPCWSTR wzPackageId, | ||
206 | __in_z LPCWSTR wzCompatiblePackageId, | ||
207 | __in HRESULT hrStatus, | ||
208 | __in BOOL fRequestedRemove | ||
209 | ) = 0; | ||
210 | |||
184 | // OnPlanPatchTarget - called when the engine is about to plan a target | 211 | // OnPlanPatchTarget - called when the engine is about to plan a target |
185 | // of an MSP package. | 212 | // of an MSP package. |
186 | STDMETHOD(OnPlanPatchTarget)( | 213 | STDMETHOD(OnPlanPatchTarget)( |
@@ -223,6 +250,13 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
223 | __in BOOTSTRAPPER_REQUEST_STATE requested | 250 | __in BOOTSTRAPPER_REQUEST_STATE requested |
224 | ) = 0; | 251 | ) = 0; |
225 | 252 | ||
253 | // OnPlannedCompatiblePackage - called after the engine has completed planning a compatible package. | ||
254 | STDMETHOD(OnPlannedCompatiblePackage)( | ||
255 | __in_z LPCWSTR wzPackageId, | ||
256 | __in_z LPCWSTR wzCompatiblePackageId, | ||
257 | __in BOOL fRemove | ||
258 | ) = 0; | ||
259 | |||
226 | // OnPlannedPackage - called after the engine has completed planning a package. | 260 | // OnPlannedPackage - called after the engine has completed planning a package. |
227 | STDMETHOD(OnPlannedPackage)( | 261 | STDMETHOD(OnPlannedPackage)( |
228 | __in_z LPCWSTR wzPackageId, | 262 | __in_z LPCWSTR wzPackageId, |