diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2022-07-19 15:17:10 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-07-20 08:53:56 -0500 |
| commit | 913b6238417dceeb8440315e4669990756d17655 (patch) | |
| tree | a9e3552ea124d2025e30436afc8629f071c01ed4 /src/api | |
| parent | 93bb820eff547f8de304f05249f572da861256fb (diff) | |
| download | wix-913b6238417dceeb8440315e4669990756d17655.tar.gz wix-913b6238417dceeb8440315e4669990756d17655.tar.bz2 wix-913b6238417dceeb8440315e4669990756d17655.zip | |
Add WixInternalUIBootstrapperApplication as a new built-in BA.
Implements 6835
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 | ||
