diff options
Diffstat (limited to 'src/api')
-rw-r--r-- | src/api/burn/WixToolset.Mba.Core/IPackageInfo.cs | 5 | ||||
-rw-r--r-- | src/api/burn/WixToolset.Mba.Core/PackageInfo.cs | 34 | ||||
-rw-r--r-- | src/api/burn/balutil/balinfo.cpp | 27 | ||||
-rw-r--r-- | src/api/burn/balutil/inc/BalBaseBootstrapperApplication.h | 14 | ||||
-rw-r--r-- | src/api/burn/balutil/inc/balinfo.h | 10 | ||||
-rw-r--r-- | src/api/wix/WixToolset.Data/Burn/BurnConstants.cs | 3 |
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 | ||
23 | typedef 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 | |||
23 | typedef enum _BAL_INFO_RESTART | 32 | typedef 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 | ||