diff options
Diffstat (limited to 'src/api/burn')
8 files changed, 47 insertions, 25 deletions
diff --git a/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h b/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h index e5f924c8..c2641b5f 100644 --- a/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h +++ b/src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h | |||
@@ -38,6 +38,13 @@ enum BOOTSTRAPPER_ERROR_TYPE | |||
38 | BOOTSTRAPPER_ERROR_TYPE_APPLY, // error occurred during apply. | 38 | BOOTSTRAPPER_ERROR_TYPE_APPLY, // error occurred during apply. |
39 | }; | 39 | }; |
40 | 40 | ||
41 | enum BOOTSTRAPPER_FILES_IN_USE_TYPE | ||
42 | { | ||
43 | BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI, // INSTALLMESSAGE_FILESINUSE | ||
44 | BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI_RM, // INSTALLMESSAGE_RMFILESINUSE | ||
45 | BOOTSTRAPPER_FILES_IN_USE_TYPE_NETFX, // MMIO_CLOSE_APPS | ||
46 | }; | ||
47 | |||
41 | enum BOOTSTRAPPER_RELATED_OPERATION | 48 | enum BOOTSTRAPPER_RELATED_OPERATION |
42 | { | 49 | { |
43 | BOOTSTRAPPER_RELATED_OPERATION_NONE, | 50 | BOOTSTRAPPER_RELATED_OPERATION_NONE, |
@@ -874,6 +881,7 @@ struct BA_ONEXECUTEFILESINUSE_ARGS | |||
874 | DWORD cFiles; | 881 | DWORD cFiles; |
875 | LPCWSTR* rgwzFiles; | 882 | LPCWSTR* rgwzFiles; |
876 | int nRecommendation; | 883 | int nRecommendation; |
884 | BOOTSTRAPPER_FILES_IN_USE_TYPE source; | ||
877 | }; | 885 | }; |
878 | 886 | ||
879 | struct BA_ONEXECUTEFILESINUSE_RESULTS | 887 | struct BA_ONEXECUTEFILESINUSE_RESULTS |
diff --git a/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs b/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs index a78bf43f..b1fcaea4 100644 --- a/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs +++ b/src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs | |||
@@ -1712,9 +1712,9 @@ namespace WixToolset.Mba.Core | |||
1712 | return args.HResult; | 1712 | return args.HResult; |
1713 | } | 1713 | } |
1714 | 1714 | ||
1715 | int IBootstrapperApplication.OnExecuteFilesInUse(string wzPackageId, int cFiles, string[] rgwzFiles, Result nRecommendation, ref Result pResult) | 1715 | int IBootstrapperApplication.OnExecuteFilesInUse(string wzPackageId, int cFiles, string[] rgwzFiles, Result nRecommendation, FilesInUseType source, ref Result pResult) |
1716 | { | 1716 | { |
1717 | ExecuteFilesInUseEventArgs args = new ExecuteFilesInUseEventArgs(wzPackageId, rgwzFiles, nRecommendation, pResult); | 1717 | ExecuteFilesInUseEventArgs args = new ExecuteFilesInUseEventArgs(wzPackageId, rgwzFiles, nRecommendation, source, pResult); |
1718 | this.OnExecuteFilesInUse(args); | 1718 | this.OnExecuteFilesInUse(args); |
1719 | 1719 | ||
1720 | pResult = args.Result; | 1720 | pResult = args.Result; |
diff --git a/src/api/burn/WixToolset.Mba.Core/EventArgs.cs b/src/api/burn/WixToolset.Mba.Core/EventArgs.cs index 55c9e74c..65169b25 100644 --- a/src/api/burn/WixToolset.Mba.Core/EventArgs.cs +++ b/src/api/burn/WixToolset.Mba.Core/EventArgs.cs | |||
@@ -1613,11 +1613,12 @@ namespace WixToolset.Mba.Core | |||
1613 | public class ExecuteFilesInUseEventArgs : ResultEventArgs | 1613 | public class ExecuteFilesInUseEventArgs : ResultEventArgs |
1614 | { | 1614 | { |
1615 | /// <summary /> | 1615 | /// <summary /> |
1616 | public ExecuteFilesInUseEventArgs(string packageId, string[] files, Result recommendation, Result result) | 1616 | public ExecuteFilesInUseEventArgs(string packageId, string[] files, Result recommendation, FilesInUseType source, Result result) |
1617 | : base(recommendation, result) | 1617 | : base(recommendation, result) |
1618 | { | 1618 | { |
1619 | this.PackageId = packageId; | 1619 | this.PackageId = packageId; |
1620 | this.Files = new ReadOnlyCollection<string>(files ?? new string[] { }); | 1620 | this.Files = new ReadOnlyCollection<string>(files ?? new string[] { }); |
1621 | this.Source = source; | ||
1621 | } | 1622 | } |
1622 | 1623 | ||
1623 | /// <summary> | 1624 | /// <summary> |
@@ -1629,6 +1630,11 @@ namespace WixToolset.Mba.Core | |||
1629 | /// Gets the list of files in use. | 1630 | /// Gets the list of files in use. |
1630 | /// </summary> | 1631 | /// </summary> |
1631 | public IList<string> Files { get; private set; } | 1632 | public IList<string> Files { get; private set; } |
1633 | |||
1634 | /// <summary> | ||
1635 | /// Gets the source of the message. | ||
1636 | /// </summary> | ||
1637 | public FilesInUseType Source { get; private set; } | ||
1632 | } | 1638 | } |
1633 | 1639 | ||
1634 | /// <summary> | 1640 | /// <summary> |
diff --git a/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs b/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs index c6a8fc14..3df54bde 100644 --- a/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs +++ b/src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs | |||
@@ -777,12 +777,6 @@ namespace WixToolset.Mba.Core | |||
777 | /// <summary> | 777 | /// <summary> |
778 | /// See <see cref="IDefaultBootstrapperApplication.ExecuteFilesInUse"/>. | 778 | /// See <see cref="IDefaultBootstrapperApplication.ExecuteFilesInUse"/>. |
779 | /// </summary> | 779 | /// </summary> |
780 | /// <param name="wzPackageId"></param> | ||
781 | /// <param name="cFiles"></param> | ||
782 | /// <param name="rgwzFiles"></param> | ||
783 | /// <param name="nRecommendation"></param> | ||
784 | /// <param name="pResult"></param> | ||
785 | /// <returns></returns> | ||
786 | [PreserveSig] | 780 | [PreserveSig] |
787 | [return: MarshalAs(UnmanagedType.I4)] | 781 | [return: MarshalAs(UnmanagedType.I4)] |
788 | int OnExecuteFilesInUse( | 782 | int OnExecuteFilesInUse( |
@@ -790,6 +784,7 @@ namespace WixToolset.Mba.Core | |||
790 | [MarshalAs(UnmanagedType.U4)] int cFiles, | 784 | [MarshalAs(UnmanagedType.U4)] int cFiles, |
791 | [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1, ArraySubType = UnmanagedType.LPWStr), In] string[] rgwzFiles, | 785 | [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1, ArraySubType = UnmanagedType.LPWStr), In] string[] rgwzFiles, |
792 | [MarshalAs(UnmanagedType.I4)] Result nRecommendation, | 786 | [MarshalAs(UnmanagedType.I4)] Result nRecommendation, |
787 | [MarshalAs(UnmanagedType.I4)] FilesInUseType source, | ||
793 | [MarshalAs(UnmanagedType.I4)] ref Result pResult | 788 | [MarshalAs(UnmanagedType.I4)] ref Result pResult |
794 | ); | 789 | ); |
795 | 790 | ||
@@ -1446,6 +1441,25 @@ namespace WixToolset.Mba.Core | |||
1446 | }; | 1441 | }; |
1447 | 1442 | ||
1448 | /// <summary> | 1443 | /// <summary> |
1444 | /// Indicates the source of the FilesInUse message. | ||
1445 | /// </summary> | ||
1446 | public enum FilesInUseType | ||
1447 | { | ||
1448 | /// <summary> | ||
1449 | /// Generated from INSTALLMESSAGE_FILESINUSE. | ||
1450 | /// </summary> | ||
1451 | Msi, | ||
1452 | /// <summary> | ||
1453 | /// Generated from INSTALLMESSAGE_RMFILESINUSE. | ||
1454 | /// </summary> | ||
1455 | MsiRm, | ||
1456 | /// <summary> | ||
1457 | /// Generated from MMIO_CLOSE_APPS. | ||
1458 | /// </summary> | ||
1459 | Netfx, | ||
1460 | } | ||
1461 | |||
1462 | /// <summary> | ||
1449 | /// The calculated operation for the related bundle. | 1463 | /// The calculated operation for the related bundle. |
1450 | /// </summary> | 1464 | /// </summary> |
1451 | public enum RelatedOperation | 1465 | public enum RelatedOperation |
diff --git a/src/api/burn/balutil/inc/BalBaseBAFunctions.h b/src/api/burn/balutil/inc/BalBaseBAFunctions.h index 8d9bddca..7f52f76e 100644 --- a/src/api/burn/balutil/inc/BalBaseBAFunctions.h +++ b/src/api/burn/balutil/inc/BalBaseBAFunctions.h | |||
@@ -583,6 +583,7 @@ public: // IBootstrapperApplication | |||
583 | __in DWORD /*cFiles*/, | 583 | __in DWORD /*cFiles*/, |
584 | __in_ecount_z(cFiles) LPCWSTR* /*rgwzFiles*/, | 584 | __in_ecount_z(cFiles) LPCWSTR* /*rgwzFiles*/, |
585 | __in int /*nRecommendation*/, | 585 | __in int /*nRecommendation*/, |
586 | __in BOOTSTRAPPER_FILES_IN_USE_TYPE /*source*/, | ||
586 | __inout int* /*pResult*/ | 587 | __inout int* /*pResult*/ |
587 | ) | 588 | ) |
588 | { | 589 | { |
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h index 4d043dfe..5665fee3 100644 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h | |||
@@ -738,6 +738,7 @@ public: // IBootstrapperApplication | |||
738 | __in DWORD /*cFiles*/, | 738 | __in DWORD /*cFiles*/, |
739 | __in_ecount_z(cFiles) LPCWSTR* /*rgwzFiles*/, | 739 | __in_ecount_z(cFiles) LPCWSTR* /*rgwzFiles*/, |
740 | __in int /*nRecommendation*/, | 740 | __in int /*nRecommendation*/, |
741 | __in BOOTSTRAPPER_FILES_IN_USE_TYPE /*source*/, | ||
741 | __inout int* pResult | 742 | __inout int* pResult |
742 | ) | 743 | ) |
743 | { | 744 | { |
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h index 59bfc1f8..2292cd64 100644 --- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h +++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h | |||
@@ -438,7 +438,7 @@ static HRESULT BalBaseBAProcOnExecuteFilesInUse( | |||
438 | __inout BA_ONEXECUTEFILESINUSE_RESULTS* pResults | 438 | __inout BA_ONEXECUTEFILESINUSE_RESULTS* pResults |
439 | ) | 439 | ) |
440 | { | 440 | { |
441 | return pBA->OnExecuteFilesInUse(pArgs->wzPackageId, pArgs->cFiles, pArgs->rgwzFiles, pArgs->nRecommendation, &pResults->nResult); | 441 | return pBA->OnExecuteFilesInUse(pArgs->wzPackageId, pArgs->cFiles, pArgs->rgwzFiles, pArgs->nRecommendation, pArgs->source, &pResults->nResult); |
442 | } | 442 | } |
443 | 443 | ||
444 | static HRESULT BalBaseBAProcOnExecutePackageComplete( | 444 | static HRESULT BalBaseBAProcOnExecutePackageComplete( |
diff --git a/src/api/burn/balutil/inc/IBootstrapperApplication.h b/src/api/burn/balutil/inc/IBootstrapperApplication.h index be9b7b6e..2ba1f503 100644 --- a/src/api/burn/balutil/inc/IBootstrapperApplication.h +++ b/src/api/burn/balutil/inc/IBootstrapperApplication.h | |||
@@ -488,27 +488,19 @@ DECLARE_INTERFACE_IID_(IBootstrapperApplication, IUnknown, "53C31D56-49C0-426B-A | |||
488 | __inout int* pResult | 488 | __inout int* pResult |
489 | ) = 0; | 489 | ) = 0; |
490 | 490 | ||
491 | // OnExecuteFilesInUse - called when the engine encounters files in use while | 491 | // OnExecuteFilesInUse - called when the engine receives a files in use message |
492 | // executing a package. | 492 | // while executing a package. |
493 | // | 493 | // |
494 | // Return: | 494 | // Return value depends on the source: |
495 | // IDOK instructs the engine to let the Restart Manager attempt to close the | 495 | // BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI: https://docs.microsoft.com/en-us/windows/win32/msi/installvalidate-action |
496 | // applications to avoid a restart. | 496 | // BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI_RM: https://docs.microsoft.com/en-us/windows/win32/msi/using-restart-manager-with-an-external-ui- |
497 | // | 497 | // BOOTSTRAPPER_FILES_IN_USE_TYPE_NETFX: https://docs.microsoft.com/en-us/dotnet/framework/deployment/how-to-get-progress-from-the-dotnet-installer |
498 | // IDCANCEL instructs the engine to abort the execution and start rollback. | ||
499 | // | ||
500 | // IDIGNORE instructs the engine to ignore the running applications. A restart will be | ||
501 | // required. | ||
502 | // | ||
503 | // IDRETRY instructs the engine to check if the applications are still running again. | ||
504 | // | ||
505 | // IDNOACTION is equivalent to ignoring the running applications. A restart will be | ||
506 | // required. | ||
507 | STDMETHOD(OnExecuteFilesInUse)( | 498 | STDMETHOD(OnExecuteFilesInUse)( |
508 | __in_z LPCWSTR wzPackageId, | 499 | __in_z LPCWSTR wzPackageId, |
509 | __in DWORD cFiles, | 500 | __in DWORD cFiles, |
510 | __in_ecount_z(cFiles) LPCWSTR* rgwzFiles, | 501 | __in_ecount_z(cFiles) LPCWSTR* rgwzFiles, |
511 | __in int nRecommendation, | 502 | __in int nRecommendation, |
503 | __in BOOTSTRAPPER_FILES_IN_USE_TYPE source, | ||
512 | __inout int* pResult | 504 | __inout int* pResult |
513 | ) = 0; | 505 | ) = 0; |
514 | 506 | ||