aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/api')
-rw-r--r--src/api/burn/WixToolset.Mba.Core/IPackageInfo.cs5
-rw-r--r--src/api/burn/WixToolset.Mba.Core/PackageInfo.cs34
-rw-r--r--src/api/burn/balutil/balinfo.cpp27
-rw-r--r--src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h14
-rw-r--r--src/api/burn/balutil/inc/balinfo.h10
-rw-r--r--src/api/wix/WixToolset.Data/Burn/BurnConstants.cs3
6 files changed, 90 insertions, 3 deletions
diff --git a/src/api/burn/WixToolset.Mba.Core/IPackageInfo.cs b/src/api/burn/WixToolset.Mba.Core/IPackageInfo.cs
index ee3be820..c6285f03 100644
--- a/src/api/burn/WixToolset.Mba.Core/IPackageInfo.cs
+++ b/src/api/burn/WixToolset.Mba.Core/IPackageInfo.cs
@@ -68,6 +68,11 @@ namespace WixToolset.Mba.Core
68 string PrereqLicenseUrl { get; } 68 string PrereqLicenseUrl { get; }
69 69
70 /// <summary> 70 /// <summary>
71 /// See <see cref="PrimaryPackageType"/>
72 /// </summary>
73 PrimaryPackageType PrimaryPackageType { get; }
74
75 /// <summary>
71 /// 76 ///
72 /// </summary> 77 /// </summary>
73 string ProductCode { get; } 78 string ProductCode { get; }
diff --git a/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs b/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs
index e400cbe4..3fa1b49e 100644
--- a/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs
+++ b/src/api/burn/WixToolset.Mba.Core/PackageInfo.cs
@@ -64,6 +64,37 @@ namespace WixToolset.Mba.Core
64 } 64 }
65 65
66 /// <summary> 66 /// <summary>
67 /// Metadata for BAs like WixInternalUIBootstrapperApplication that only support one main package.
68 /// </summary>
69 public enum PrimaryPackageType
70 {
71 /// <summary>
72 /// Not a primary package.
73 /// </summary>
74 None,
75
76 /// <summary>
77 /// The default package if no architecture specific package is available for the current architecture.
78 /// </summary>
79 Default,
80
81 /// <summary>
82 /// The package to use on x86 machines.
83 /// </summary>
84 X86,
85
86 /// <summary>
87 /// The package to use on x64 machines.
88 /// </summary>
89 X64,
90
91 /// <summary>
92 /// The package to use on ARM64 machines.
93 /// </summary>
94 ARM64,
95 }
96
97 /// <summary>
67 /// Default implementation of <see cref="IPackageInfo"/>. 98 /// Default implementation of <see cref="IPackageInfo"/>.
68 /// </summary> 99 /// </summary>
69 public class PackageInfo : IPackageInfo 100 public class PackageInfo : IPackageInfo
@@ -117,6 +148,9 @@ namespace WixToolset.Mba.Core
117 public string PrereqLicenseUrl { get; internal set; } 148 public string PrereqLicenseUrl { get; internal set; }
118 149
119 /// <inheritdoc/> 150 /// <inheritdoc/>
151 public PrimaryPackageType PrimaryPackageType { get; internal set; }
152
153 /// <inheritdoc/>
120 public object CustomData { get; set; } 154 public object CustomData { get; set; }
121 155
122 internal PackageInfo() { } 156 internal PackageInfo() { }
diff --git a/src/api/burn/balutil/balinfo.cpp b/src/api/burn/balutil/balinfo.cpp
index 5832281f..52a7f911 100644
--- a/src/api/burn/balutil/balinfo.cpp
+++ b/src/api/burn/balutil/balinfo.cpp
@@ -529,6 +529,33 @@ static HRESULT ParseBalPackageInfoFromXml(
529 hr = XmlGetAttributeEx(pNode, L"DisplayInternalUICondition", &pPackage->sczDisplayInternalUICondition); 529 hr = XmlGetAttributeEx(pNode, L"DisplayInternalUICondition", &pPackage->sczDisplayInternalUICondition);
530 ExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to get DisplayInternalUICondition setting for package."); 530 ExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to get DisplayInternalUICondition setting for package.");
531 531
532 hr = XmlGetAttributeEx(pNode, L"PrimaryPackageType", &scz);
533 ExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to get PrimaryPackageType setting for package.");
534
535 if (fXmlFound)
536 {
537 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"default", -1))
538 {
539 pPackage->primaryPackageType = BAL_INFO_PRIMARY_PACKAGE_TYPE_DEFAULT;
540 }
541 else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"x86", -1))
542 {
543 pPackage->primaryPackageType = BAL_INFO_PRIMARY_PACKAGE_TYPE_X86;
544 }
545 else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"x64", -1))
546 {
547 pPackage->primaryPackageType = BAL_INFO_PRIMARY_PACKAGE_TYPE_X64;
548 }
549 else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"arm64", -1))
550 {
551 pPackage->primaryPackageType = BAL_INFO_PRIMARY_PACKAGE_TYPE_ARM64;
552 }
553 else
554 {
555 ExitWithRootFailure(hr, E_INVALIDARG, "Invalid value for WixBalPackageInfo/@PrimaryPackageType: %ls", scz);
556 }
557 }
558
532 ReleaseNullObject(pNode); 559 ReleaseNullObject(pNode);
533 } 560 }
534 ExitOnFailure(hr, "Failed to parse all WixBalPackageInfo elements."); 561 ExitOnFailure(hr, "Failed to parse all WixBalPackageInfo elements.");
diff --git a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h
index aa1ca56f..c3223bee 100644
--- a/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h
+++ b/src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h
@@ -451,8 +451,8 @@ public: // IBootstrapperApplication
451 __in BOOTSTRAPPER_ERROR_TYPE errorType, 451 __in BOOTSTRAPPER_ERROR_TYPE errorType,
452 __in_z LPCWSTR wzPackageId, 452 __in_z LPCWSTR wzPackageId,
453 __in DWORD dwCode, 453 __in DWORD dwCode,
454 __in_z LPCWSTR /*wzError*/, 454 __in_z LPCWSTR wzError,
455 __in DWORD /*dwUIHint*/, 455 __in DWORD dwUIHint,
456 __in DWORD /*cData*/, 456 __in DWORD /*cData*/,
457 __in_ecount_z_opt(cData) LPCWSTR* /*rgwzData*/, 457 __in_ecount_z_opt(cData) LPCWSTR* /*rgwzData*/,
458 __in int /*nRecommendation*/, 458 __in int /*nRecommendation*/,
@@ -461,7 +461,15 @@ public: // IBootstrapperApplication
461 { 461 {
462 BalRetryErrorOccurred(wzPackageId, dwCode); 462 BalRetryErrorOccurred(wzPackageId, dwCode);
463 463
464 if (CheckCanceled()) 464 if (BOOTSTRAPPER_DISPLAY_EMBEDDED == m_display)
465 {
466 HRESULT hr = m_pEngine->SendEmbeddedError(dwCode, wzError, dwUIHint, pResult);
467 if (FAILED(hr))
468 {
469 *pResult = IDERROR;
470 }
471 }
472 else if (CheckCanceled())
465 { 473 {
466 *pResult = IDCANCEL; 474 *pResult = IDCANCEL;
467 } 475 }
diff --git a/src/api/burn/balutil/inc/balinfo.h b/src/api/burn/balutil/inc/balinfo.h
index cd61f34d..818ff5ef 100644
--- a/src/api/burn/balutil/inc/balinfo.h
+++ b/src/api/burn/balutil/inc/balinfo.h
@@ -20,6 +20,15 @@ typedef enum BAL_INFO_PACKAGE_TYPE
20 BAL_INFO_PACKAGE_TYPE_BUNDLE_CHAIN, 20 BAL_INFO_PACKAGE_TYPE_BUNDLE_CHAIN,
21} BAL_INFO_PACKAGE_TYPE; 21} BAL_INFO_PACKAGE_TYPE;
22 22
23typedef enum _BAL_INFO_PRIMARY_PACKAGE_TYPE
24{
25 BAL_INFO_PRIMARY_PACKAGE_TYPE_NONE,
26 BAL_INFO_PRIMARY_PACKAGE_TYPE_DEFAULT,
27 BAL_INFO_PRIMARY_PACKAGE_TYPE_X86,
28 BAL_INFO_PRIMARY_PACKAGE_TYPE_X64,
29 BAL_INFO_PRIMARY_PACKAGE_TYPE_ARM64,
30} BAL_INFO_PRIMARY_PACKAGE_TYPE;
31
23typedef enum _BAL_INFO_RESTART 32typedef enum _BAL_INFO_RESTART
24{ 33{
25 BAL_INFO_RESTART_UNKNOWN, 34 BAL_INFO_RESTART_UNKNOWN,
@@ -54,6 +63,7 @@ typedef struct _BAL_INFO_PACKAGE
54 BOOL fPrereqPackage; 63 BOOL fPrereqPackage;
55 LPWSTR sczPrereqLicenseFile; 64 LPWSTR sczPrereqLicenseFile;
56 LPWSTR sczPrereqLicenseUrl; 65 LPWSTR sczPrereqLicenseUrl;
66 BAL_INFO_PRIMARY_PACKAGE_TYPE primaryPackageType;
57 LPVOID pvCustomData; 67 LPVOID pvCustomData;
58} BAL_INFO_PACKAGE; 68} BAL_INFO_PACKAGE;
59 69
diff --git a/src/api/wix/WixToolset.Data/Burn/BurnConstants.cs b/src/api/wix/WixToolset.Data/Burn/BurnConstants.cs
index 1ecccbd2..8eeb030b 100644
--- a/src/api/wix/WixToolset.Data/Burn/BurnConstants.cs
+++ b/src/api/wix/WixToolset.Data/Burn/BurnConstants.cs
@@ -14,6 +14,9 @@ namespace WixToolset.Data.Burn
14 public const string BundleExtensionDataWixOutputStreamName = "wix-bextdata"; 14 public const string BundleExtensionDataWixOutputStreamName = "wix-bextdata";
15 public const string BootstrapperApplicationDataWixOutputStreamName = "wix-badata.xml"; 15 public const string BootstrapperApplicationDataWixOutputStreamName = "wix-badata.xml";
16 16
17 public const string BootstrapperApplicationDataNamespace = "http://wixtoolset.org/schemas/v4/BootstrapperApplicationData";
18 public const string BundleExtensionDataNamespace = "http://wixtoolset.org/schemas/v4/BundleExtensionData";
19
17 public const string BootstrapperApplicationDataSymbolDefinitionTag = "WixBootstrapperApplicationData"; 20 public const string BootstrapperApplicationDataSymbolDefinitionTag = "WixBootstrapperApplicationData";
18 public const string BundleExtensionSearchSymbolDefinitionTag = "WixBundleExtensionSearch"; 21 public const string BundleExtensionSearchSymbolDefinitionTag = "WixBundleExtensionSearch";
19 22