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/burn/balutil | |
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/burn/balutil')
-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 |
3 files changed, 48 insertions, 3 deletions
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 | ||