aboutsummaryrefslogtreecommitdiff
path: root/src/api/burn
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/burn')
-rw-r--r--src/api/burn/WixToolset.BootstrapperCore.Native/inc/BootstrapperApplication.h8
-rw-r--r--src/api/burn/WixToolset.Mba.Core/BootstrapperApplication.cs4
-rw-r--r--src/api/burn/WixToolset.Mba.Core/EventArgs.cs8
-rw-r--r--src/api/burn/WixToolset.Mba.Core/IBootstrapperApplication.cs26
-rw-r--r--src/api/burn/balutil/inc/BalBaseBAFunctions.h1
-rw-r--r--src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h1
-rw-r--r--src/api/burn/balutil/inc/BalBaseBootstrapperApplicationProc.h2
-rw-r--r--src/api/burn/balutil/inc/IBootstrapperApplication.h22
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
41enum 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
41enum BOOTSTRAPPER_RELATED_OPERATION 48enum 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
879struct BA_ONEXECUTEFILESINUSE_RESULTS 887struct 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
444static HRESULT BalBaseBAProcOnExecutePackageComplete( 444static 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