diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2021-10-31 14:20:44 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-11-01 16:34:09 -0500 |
| commit | 7e60078d4a7fe748a39c135def9e84a2421ab474 (patch) | |
| tree | 51dbe5067ca9596f99107719734c4946e4c080b4 /src/ext | |
| parent | c092722a147940532b08f62403e182ef279f2c74 (diff) | |
| download | wix-7e60078d4a7fe748a39c135def9e84a2421ab474.tar.gz wix-7e60078d4a7fe748a39c135def9e84a2421ab474.tar.bz2 wix-7e60078d4a7fe748a39c135def9e84a2421ab474.zip | |
Avoid using control ids inside of thmutil.
Diffstat (limited to 'src/ext')
| -rw-r--r-- | src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp | 314 | ||||
| -rw-r--r-- | src/ext/Bal/wixstdba/precomp.h | 1 |
2 files changed, 242 insertions, 73 deletions
diff --git a/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp b/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp index 23158a1c..d1b18cb3 100644 --- a/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp +++ b/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp | |||
| @@ -80,7 +80,7 @@ static LPCWSTR vrgwzPageNames[] = { | |||
| 80 | // The range [0, 100) is unused to avoid collisions with system ids, | 80 | // The range [0, 100) is unused to avoid collisions with system ids, |
| 81 | // the range [100, 0x4000) is unused to avoid collisions with thmutil, | 81 | // the range [100, 0x4000) is unused to avoid collisions with thmutil, |
| 82 | // the range [0x4000, 0x8000) is unused to avoid collisions with BAFunctions. | 82 | // the range [0x4000, 0x8000) is unused to avoid collisions with BAFunctions. |
| 83 | const WORD WIXSTDBA_FIRST_ASSIGN_CONTROL_ID = 0x8000; | 83 | const WORD WIXSTDBA_FIRST_ASSIGN_CONTROL_ID = 0x8000; |
| 84 | 84 | ||
| 85 | enum WIXSTDBA_CONTROL | 85 | enum WIXSTDBA_CONTROL |
| 86 | { | 86 | { |
| @@ -119,36 +119,8 @@ enum WIXSTDBA_CONTROL | |||
| 119 | WIXSTDBA_CONTROL_FAILURE_LOGFILE_LINK, | 119 | WIXSTDBA_CONTROL_FAILURE_LOGFILE_LINK, |
| 120 | WIXSTDBA_CONTROL_FAILURE_MESSAGE_TEXT, | 120 | WIXSTDBA_CONTROL_FAILURE_MESSAGE_TEXT, |
| 121 | WIXSTDBA_CONTROL_FAILURE_RESTART_BUTTON, | 121 | WIXSTDBA_CONTROL_FAILURE_RESTART_BUTTON, |
| 122 | }; | ||
| 123 | 122 | ||
| 124 | static THEME_ASSIGN_CONTROL_ID vrgInitControls[] = { | 123 | LAST_WIXSTDBA_CONTROL, |
| 125 | { WIXSTDBA_CONTROL_INSTALL_BUTTON, L"InstallButton" }, | ||
| 126 | { WIXSTDBA_CONTROL_EULA_RICHEDIT, L"EulaRichedit" }, | ||
| 127 | { WIXSTDBA_CONTROL_EULA_LINK, L"EulaHyperlink" }, | ||
| 128 | { WIXSTDBA_CONTROL_EULA_ACCEPT_CHECKBOX, L"EulaAcceptCheckbox" }, | ||
| 129 | |||
| 130 | { WIXSTDBA_CONTROL_REPAIR_BUTTON, L"RepairButton" }, | ||
| 131 | { WIXSTDBA_CONTROL_UNINSTALL_BUTTON, L"UninstallButton" }, | ||
| 132 | |||
| 133 | { WIXSTDBA_CONTROL_CACHE_PROGRESS_PACKAGE_TEXT, L"CacheProgressPackageText" }, | ||
| 134 | { WIXSTDBA_CONTROL_CACHE_PROGRESS_BAR, L"CacheProgressbar" }, | ||
| 135 | { WIXSTDBA_CONTROL_CACHE_PROGRESS_TEXT, L"CacheProgressText" }, | ||
| 136 | { WIXSTDBA_CONTROL_EXECUTE_PROGRESS_PACKAGE_TEXT, L"ExecuteProgressPackageText" }, | ||
| 137 | { WIXSTDBA_CONTROL_EXECUTE_PROGRESS_BAR, L"ExecuteProgressbar" }, | ||
| 138 | { WIXSTDBA_CONTROL_EXECUTE_PROGRESS_TEXT, L"ExecuteProgressText" }, | ||
| 139 | { WIXSTDBA_CONTROL_EXECUTE_PROGRESS_ACTIONDATA_TEXT, L"ExecuteProgressActionDataText"}, | ||
| 140 | { WIXSTDBA_CONTROL_OVERALL_PROGRESS_PACKAGE_TEXT, L"OverallProgressPackageText" }, | ||
| 141 | { WIXSTDBA_CONTROL_OVERALL_PROGRESS_BAR, L"OverallProgressbar" }, | ||
| 142 | { WIXSTDBA_CONTROL_OVERALL_CALCULATED_PROGRESS_BAR, L"OverallCalculatedProgressbar" }, | ||
| 143 | { WIXSTDBA_CONTROL_OVERALL_PROGRESS_TEXT, L"OverallProgressText" }, | ||
| 144 | { WIXSTDBA_CONTROL_PROGRESS_CANCEL_BUTTON, L"ProgressCancelButton" }, | ||
| 145 | |||
| 146 | { WIXSTDBA_CONTROL_LAUNCH_BUTTON, L"LaunchButton" }, | ||
| 147 | { WIXSTDBA_CONTROL_SUCCESS_RESTART_BUTTON, L"SuccessRestartButton" }, | ||
| 148 | |||
| 149 | { WIXSTDBA_CONTROL_FAILURE_LOGFILE_LINK, L"FailureLogFileLink" }, | ||
| 150 | { WIXSTDBA_CONTROL_FAILURE_MESSAGE_TEXT, L"FailureMessageText" }, | ||
| 151 | { WIXSTDBA_CONTROL_FAILURE_RESTART_BUTTON, L"FailureRestartButton" }, | ||
| 152 | }; | 124 | }; |
| 153 | 125 | ||
| 154 | typedef struct _WIXSTDBA_PACKAGE_INFO | 126 | typedef struct _WIXSTDBA_PACKAGE_INFO |
| @@ -589,7 +561,7 @@ public: // IBootstrapperApplication | |||
| 589 | 561 | ||
| 590 | wz = sczFormattedString ? sczFormattedString : L"Pausing Windows automatic updates"; | 562 | wz = sczFormattedString ? sczFormattedString : L"Pausing Windows automatic updates"; |
| 591 | 563 | ||
| 592 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_OVERALL_PROGRESS_PACKAGE_TEXT, wz); | 564 | ThemeSetTextControl(m_pControlOverallProgressPackageText, wz); |
| 593 | 565 | ||
| 594 | ReleaseStr(sczFormattedString); | 566 | ReleaseStr(sczFormattedString); |
| 595 | return hr; | 567 | return hr; |
| @@ -615,7 +587,7 @@ public: // IBootstrapperApplication | |||
| 615 | 587 | ||
| 616 | wz = sczFormattedString ? sczFormattedString : L"Creating system restore point"; | 588 | wz = sczFormattedString ? sczFormattedString : L"Creating system restore point"; |
| 617 | 589 | ||
| 618 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_OVERALL_PROGRESS_PACKAGE_TEXT, wz); | 590 | ThemeSetTextControl(m_pControlOverallProgressPackageText, wz); |
| 619 | 591 | ||
| 620 | ReleaseStr(sczFormattedString); | 592 | ReleaseStr(sczFormattedString); |
| 621 | return hr; | 593 | return hr; |
| @@ -635,12 +607,12 @@ public: // IBootstrapperApplication | |||
| 635 | HRESULT hr = BalInfoFindPackageById(&m_Bundle.packages, wzPackageId, &pPackage); | 607 | HRESULT hr = BalInfoFindPackageById(&m_Bundle.packages, wzPackageId, &pPackage); |
| 636 | LPCWSTR wz = (SUCCEEDED(hr) && pPackage->sczDisplayName) ? pPackage->sczDisplayName : wzPackageId; | 608 | LPCWSTR wz = (SUCCEEDED(hr) && pPackage->sczDisplayName) ? pPackage->sczDisplayName : wzPackageId; |
| 637 | 609 | ||
| 638 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_CACHE_PROGRESS_PACKAGE_TEXT, wz); | 610 | ThemeSetTextControl(m_pControlCacheProgressPackageText, wz); |
| 639 | 611 | ||
| 640 | // If something started executing, leave it in the overall progress text. | 612 | // If something started executing, leave it in the overall progress text. |
| 641 | if (!m_fStartedExecution) | 613 | if (!m_fStartedExecution) |
| 642 | { | 614 | { |
| 643 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_OVERALL_PROGRESS_PACKAGE_TEXT, wz); | 615 | ThemeSetTextControl(m_pControlOverallProgressPackageText, wz); |
| 644 | } | 616 | } |
| 645 | } | 617 | } |
| 646 | 618 | ||
| @@ -778,7 +750,7 @@ public: // IBootstrapperApplication | |||
| 778 | ) | 750 | ) |
| 779 | { | 751 | { |
| 780 | UpdateCacheProgress(SUCCEEDED(hrStatus) ? 100 : 0); | 752 | UpdateCacheProgress(SUCCEEDED(hrStatus) ? 100 : 0); |
| 781 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_CACHE_PROGRESS_PACKAGE_TEXT, L""); | 753 | ThemeSetTextControl(m_pControlCacheProgressPackageText, L""); |
| 782 | SetState(WIXSTDBA_STATE_CACHED, S_OK); // we always return success here and let OnApplyComplete() deal with the error. | 754 | SetState(WIXSTDBA_STATE_CACHED, S_OK); // we always return success here and let OnApplyComplete() deal with the error. |
| 783 | return __super::OnCacheComplete(hrStatus); | 755 | return __super::OnCacheComplete(hrStatus); |
| 784 | } | 756 | } |
| @@ -891,7 +863,7 @@ public: // IBootstrapperApplication | |||
| 891 | 863 | ||
| 892 | if (INSTALLMESSAGE_ACTIONSTART == messageType) | 864 | if (INSTALLMESSAGE_ACTIONSTART == messageType) |
| 893 | { | 865 | { |
| 894 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_EXECUTE_PROGRESS_ACTIONDATA_TEXT, wzMessage); | 866 | ThemeSetTextControl(m_pControlExecuteProgressActionDataText, wzMessage); |
| 895 | } | 867 | } |
| 896 | 868 | ||
| 897 | return __super::OnExecuteMsiMessage(wzPackageId, messageType, dwUIHint, wzMessage, cData, rgwzData, nRecommendation, pResult); | 869 | return __super::OnExecuteMsiMessage(wzPackageId, messageType, dwUIHint, wzMessage, cData, rgwzData, nRecommendation, pResult); |
| @@ -911,9 +883,9 @@ public: // IBootstrapperApplication | |||
| 911 | #endif | 883 | #endif |
| 912 | 884 | ||
| 913 | ::StringCchPrintfW(wzProgress, countof(wzProgress), L"%u%%", dwOverallProgressPercentage); | 885 | ::StringCchPrintfW(wzProgress, countof(wzProgress), L"%u%%", dwOverallProgressPercentage); |
| 914 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_OVERALL_PROGRESS_TEXT, wzProgress); | 886 | ThemeSetTextControl(m_pControlOverallProgressText, wzProgress); |
| 915 | 887 | ||
| 916 | ThemeSetProgressControl(m_pTheme, WIXSTDBA_CONTROL_OVERALL_PROGRESS_BAR, dwOverallProgressPercentage); | 888 | ThemeSetProgressControl(m_pControlOverallProgressbar, dwOverallProgressPercentage); |
| 917 | SetTaskbarButtonProgress(dwOverallProgressPercentage); | 889 | SetTaskbarButtonProgress(dwOverallProgressPercentage); |
| 918 | 890 | ||
| 919 | return __super::OnProgress(dwProgressPercentage, dwOverallProgressPercentage, pfCancel); | 891 | return __super::OnProgress(dwProgressPercentage, dwOverallProgressPercentage, pfCancel); |
| @@ -972,8 +944,8 @@ public: // IBootstrapperApplication | |||
| 972 | 944 | ||
| 973 | fShowingInternalUiThisPackage = INSTALLUILEVEL_NONE != (INSTALLUILEVEL_NONE & uiLevel); | 945 | fShowingInternalUiThisPackage = INSTALLUILEVEL_NONE != (INSTALLUILEVEL_NONE & uiLevel); |
| 974 | 946 | ||
| 975 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_EXECUTE_PROGRESS_PACKAGE_TEXT, wz); | 947 | ThemeSetTextControl(m_pControlExecuteProgressPackageText, wz); |
| 976 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_OVERALL_PROGRESS_PACKAGE_TEXT, wz); | 948 | ThemeSetTextControl(m_pControlOverallProgressPackageText, wz); |
| 977 | } | 949 | } |
| 978 | 950 | ||
| 979 | ::EnterCriticalSection(&m_csShowingInternalUiThisPackage); | 951 | ::EnterCriticalSection(&m_csShowingInternalUiThisPackage); |
| @@ -1000,12 +972,12 @@ public: // IBootstrapperApplication | |||
| 1000 | #endif | 972 | #endif |
| 1001 | 973 | ||
| 1002 | ::StringCchPrintfW(wzProgress, countof(wzProgress), L"%u%%", dwOverallProgressPercentage); | 974 | ::StringCchPrintfW(wzProgress, countof(wzProgress), L"%u%%", dwOverallProgressPercentage); |
| 1003 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_EXECUTE_PROGRESS_TEXT, wzProgress); | 975 | ThemeSetTextControl(m_pControlExecuteProgressText, wzProgress); |
| 1004 | 976 | ||
| 1005 | ThemeSetProgressControl(m_pTheme, WIXSTDBA_CONTROL_EXECUTE_PROGRESS_BAR, dwOverallProgressPercentage); | 977 | ThemeSetProgressControl(m_pControlExecuteProgressbar, dwOverallProgressPercentage); |
| 1006 | 978 | ||
| 1007 | m_dwCalculatedExecuteProgress = dwOverallProgressPercentage * (100 - WIXSTDBA_ACQUIRE_PERCENTAGE) / 100; | 979 | m_dwCalculatedExecuteProgress = dwOverallProgressPercentage * (100 - WIXSTDBA_ACQUIRE_PERCENTAGE) / 100; |
| 1008 | ThemeSetProgressControl(m_pTheme, WIXSTDBA_CONTROL_OVERALL_CALCULATED_PROGRESS_BAR, m_dwCalculatedCacheProgress + m_dwCalculatedExecuteProgress); | 980 | ThemeSetProgressControl(m_pControlOverallCalculatedProgressbar, m_dwCalculatedCacheProgress + m_dwCalculatedExecuteProgress); |
| 1009 | 981 | ||
| 1010 | SetTaskbarButtonProgress(m_dwCalculatedCacheProgress + m_dwCalculatedExecuteProgress); | 982 | SetTaskbarButtonProgress(m_dwCalculatedCacheProgress + m_dwCalculatedExecuteProgress); |
| 1011 | 983 | ||
| @@ -1051,10 +1023,10 @@ public: // IBootstrapperApplication | |||
| 1051 | { | 1023 | { |
| 1052 | HRESULT hr = S_OK; | 1024 | HRESULT hr = S_OK; |
| 1053 | 1025 | ||
| 1054 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_EXECUTE_PROGRESS_PACKAGE_TEXT, L""); | 1026 | ThemeSetTextControl(m_pControlExecuteProgressPackageText, L""); |
| 1055 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_EXECUTE_PROGRESS_ACTIONDATA_TEXT, L""); | 1027 | ThemeSetTextControl(m_pControlExecuteProgressActionDataText, L""); |
| 1056 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_OVERALL_PROGRESS_PACKAGE_TEXT, L""); | 1028 | ThemeSetTextControl(m_pControlOverallProgressPackageText, L""); |
| 1057 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_PROGRESS_CANCEL_BUTTON, FALSE); // no more cancel. | 1029 | ThemeControlEnable(m_pControlProgressCancelButton, FALSE); // no more cancel. |
| 1058 | m_fShowingInternalUiThisPackage = FALSE; | 1030 | m_fShowingInternalUiThisPackage = FALSE; |
| 1059 | 1031 | ||
| 1060 | SetState(WIXSTDBA_STATE_EXECUTED, S_OK); // we always return success here and let OnApplyComplete() deal with the error. | 1032 | SetState(WIXSTDBA_STATE_EXECUTED, S_OK); // we always return success here and let OnApplyComplete() deal with the error. |
| @@ -2933,12 +2905,27 @@ private: | |||
| 2933 | BA_FUNCTIONS_ONTHEMECONTROLLOADING_ARGS themeControlLoadingArgs = { }; | 2905 | BA_FUNCTIONS_ONTHEMECONTROLLOADING_ARGS themeControlLoadingArgs = { }; |
| 2934 | BA_FUNCTIONS_ONTHEMECONTROLLOADING_RESULTS themeControlLoadingResults = { }; | 2906 | BA_FUNCTIONS_ONTHEMECONTROLLOADING_RESULTS themeControlLoadingResults = { }; |
| 2935 | 2907 | ||
| 2936 | for (DWORD iAssignControl = 0; iAssignControl < countof(vrgInitControls); ++iAssignControl) | 2908 | for (DWORD iAssignControl = 0; iAssignControl < countof(m_rgInitControls); ++iAssignControl) |
| 2937 | { | 2909 | { |
| 2938 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, pArgs->pThemeControl->sczName, -1, vrgInitControls[iAssignControl].wzName, -1)) | 2910 | THEME_ASSIGN_CONTROL_ID* pAssignControl = m_rgInitControls + iAssignControl; |
| 2911 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, pArgs->pThemeControl->sczName, -1, pAssignControl->wzName, -1)) | ||
| 2939 | { | 2912 | { |
| 2913 | if (!pAssignControl->ppControl) | ||
| 2914 | { | ||
| 2915 | BalExitWithRootFailure(hr, E_INVALIDSTATE, "Control '%ls' has no member variable", pAssignControl->wzName); | ||
| 2916 | } | ||
| 2917 | |||
| 2918 | if (*pAssignControl->ppControl) | ||
| 2919 | { | ||
| 2920 | BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Duplicate control name: %ls", pAssignControl->wzName); | ||
| 2921 | } | ||
| 2922 | else | ||
| 2923 | { | ||
| 2924 | *pAssignControl->ppControl = pArgs->pThemeControl; | ||
| 2925 | } | ||
| 2926 | |||
| 2940 | fProcessed = TRUE; | 2927 | fProcessed = TRUE; |
| 2941 | pResults->wId = vrgInitControls[iAssignControl].wId; | 2928 | pResults->wId = pAssignControl->wId; |
| 2942 | ExitFunction(); | 2929 | ExitFunction(); |
| 2943 | } | 2930 | } |
| 2944 | } | 2931 | } |
| @@ -3059,7 +3046,7 @@ private: | |||
| 3059 | hr = LocProbeForFile(sczLicenseDirectory, sczLicenseFilename, m_sczLanguage, &sczLicensePath); | 3046 | hr = LocProbeForFile(sczLicenseDirectory, sczLicenseFilename, m_sczLanguage, &sczLicensePath); |
| 3060 | ExitOnFailure(hr, "Failed to probe for localized license file."); | 3047 | ExitOnFailure(hr, "Failed to probe for localized license file."); |
| 3061 | 3048 | ||
| 3062 | hr = ThemeLoadRichEditFromFile(m_pTheme, pThemeControl->wId, sczLicensePath, m_hModule); | 3049 | hr = ThemeLoadRichEditFromFile(pThemeControl, sczLicensePath, m_hModule); |
| 3063 | ExitOnFailure(hr, "Failed to load license file into richedit control."); | 3050 | ExitOnFailure(hr, "Failed to load license file into richedit control."); |
| 3064 | 3051 | ||
| 3065 | LExit: | 3052 | LExit: |
| @@ -3178,7 +3165,7 @@ private: | |||
| 3178 | hr = m_pEngine->Apply(m_hWnd); | 3165 | hr = m_pEngine->Apply(m_hWnd); |
| 3179 | BalExitOnFailure(hr, "Failed to start applying packages."); | 3166 | BalExitOnFailure(hr, "Failed to start applying packages."); |
| 3180 | 3167 | ||
| 3181 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_PROGRESS_CANCEL_BUTTON, TRUE); // ensure the cancel button is enabled before starting. | 3168 | ThemeControlEnable(m_pControlProgressCancelButton, TRUE); // ensure the cancel button is enabled before starting. |
| 3182 | 3169 | ||
| 3183 | LExit: | 3170 | LExit: |
| 3184 | if (FAILED(hr)) | 3171 | if (FAILED(hr)) |
| @@ -3229,22 +3216,22 @@ private: | |||
| 3229 | { | 3216 | { |
| 3230 | BalGetNumericVariable(WIXBUNDLE_VARIABLE_ELEVATED, &llElevated); | 3217 | BalGetNumericVariable(WIXBUNDLE_VARIABLE_ELEVATED, &llElevated); |
| 3231 | } | 3218 | } |
| 3232 | ThemeControlElevates(m_pTheme, WIXSTDBA_CONTROL_INSTALL_BUTTON, (m_Bundle.fPerMachine && !llElevated)); | 3219 | ThemeControlElevates(m_pControlInstallButton, (m_Bundle.fPerMachine && !llElevated)); |
| 3233 | 3220 | ||
| 3234 | // If the EULA control exists, show it only if a license URL is provided as well. | 3221 | // If the EULA control exists, show it only if a license URL is provided as well. |
| 3235 | if (ThemeControlExists(m_pTheme, WIXSTDBA_CONTROL_EULA_LINK)) | 3222 | if (m_pControlEulaHyperlink) |
| 3236 | { | 3223 | { |
| 3237 | BOOL fEulaLink = (m_sczLicenseUrl && *m_sczLicenseUrl); | 3224 | BOOL fEulaLink = (m_sczLicenseUrl && *m_sczLicenseUrl); |
| 3238 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_EULA_LINK, fEulaLink); | 3225 | ThemeControlEnable(m_pControlEulaHyperlink, fEulaLink); |
| 3239 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_EULA_ACCEPT_CHECKBOX, fEulaLink); | 3226 | ThemeControlEnable(m_pControlEulaAcceptCheckbox, fEulaLink); |
| 3240 | } | 3227 | } |
| 3241 | 3228 | ||
| 3242 | BOOL fAcceptedLicense = !ThemeControlExists(m_pTheme, WIXSTDBA_CONTROL_EULA_ACCEPT_CHECKBOX) || !ThemeControlEnabled(m_pTheme, WIXSTDBA_CONTROL_EULA_ACCEPT_CHECKBOX) || ThemeIsControlChecked(m_pTheme, WIXSTDBA_CONTROL_EULA_ACCEPT_CHECKBOX); | 3229 | BOOL fAcceptedLicense = !m_pControlEulaAcceptCheckbox || !ThemeControlEnabled(m_pControlEulaAcceptCheckbox) || ThemeIsControlChecked(m_pControlEulaAcceptCheckbox); |
| 3243 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_INSTALL_BUTTON, fAcceptedLicense); | 3230 | ThemeControlEnable(m_pControlInstallButton, fAcceptedLicense); |
| 3244 | } | 3231 | } |
| 3245 | else if (m_rgdwPageIds[WIXSTDBA_PAGE_MODIFY] == dwNewPageId) | 3232 | else if (m_rgdwPageIds[WIXSTDBA_PAGE_MODIFY] == dwNewPageId) |
| 3246 | { | 3233 | { |
| 3247 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_REPAIR_BUTTON, !m_fSuppressRepair); | 3234 | ThemeControlEnable(m_pControlRepairButton, !m_fSuppressRepair); |
| 3248 | } | 3235 | } |
| 3249 | else if (m_rgdwPageIds[WIXSTDBA_PAGE_SUCCESS] == dwNewPageId) // on the "Success" page, check if the restart or launch button should be enabled. | 3236 | else if (m_rgdwPageIds[WIXSTDBA_PAGE_SUCCESS] == dwNewPageId) // on the "Success" page, check if the restart or launch button should be enabled. |
| 3250 | { | 3237 | { |
| @@ -3257,13 +3244,13 @@ private: | |||
| 3257 | fEnableRestartButton = TRUE; | 3244 | fEnableRestartButton = TRUE; |
| 3258 | } | 3245 | } |
| 3259 | } | 3246 | } |
| 3260 | else if (ThemeControlExists(m_pTheme, WIXSTDBA_CONTROL_LAUNCH_BUTTON)) | 3247 | else if (m_pControlLaunchButton) |
| 3261 | { | 3248 | { |
| 3262 | fLaunchTargetExists = BalVariableExists(WIXSTDBA_VARIABLE_LAUNCH_TARGET_PATH); | 3249 | fLaunchTargetExists = BalVariableExists(WIXSTDBA_VARIABLE_LAUNCH_TARGET_PATH); |
| 3263 | } | 3250 | } |
| 3264 | 3251 | ||
| 3265 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_LAUNCH_BUTTON, fLaunchTargetExists && BOOTSTRAPPER_ACTION_UNINSTALL < m_plannedAction); | 3252 | ThemeControlEnable(m_pControlLaunchButton, fLaunchTargetExists && BOOTSTRAPPER_ACTION_UNINSTALL < m_plannedAction); |
| 3266 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_SUCCESS_RESTART_BUTTON, fEnableRestartButton); | 3253 | ThemeControlEnable(m_pControlSuccessRestartButton, fEnableRestartButton); |
| 3267 | } | 3254 | } |
| 3268 | else if (m_rgdwPageIds[WIXSTDBA_PAGE_FAILURE] == dwNewPageId) // on the "Failure" page, show error message and check if the restart button should be enabled. | 3255 | else if (m_rgdwPageIds[WIXSTDBA_PAGE_FAILURE] == dwNewPageId) // on the "Failure" page, show error message and check if the restart button should be enabled. |
| 3269 | { | 3256 | { |
| @@ -3347,7 +3334,7 @@ private: | |||
| 3347 | StrAllocFormatted(&sczText, L"0x%08x - %ls", m_hrFinal, sczUnformattedText); | 3334 | StrAllocFormatted(&sczText, L"0x%08x - %ls", m_hrFinal, sczUnformattedText); |
| 3348 | } | 3335 | } |
| 3349 | 3336 | ||
| 3350 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_FAILURE_MESSAGE_TEXT, sczText); | 3337 | ThemeSetTextControl(m_pControlFailureMessageText, sczText); |
| 3351 | fShowErrorMessage = TRUE; | 3338 | fShowErrorMessage = TRUE; |
| 3352 | } | 3339 | } |
| 3353 | 3340 | ||
| @@ -3359,9 +3346,9 @@ private: | |||
| 3359 | } | 3346 | } |
| 3360 | } | 3347 | } |
| 3361 | 3348 | ||
| 3362 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_FAILURE_LOGFILE_LINK, fShowLogLink); | 3349 | ThemeControlEnable(m_pControlFailureLogFileLink, fShowLogLink); |
| 3363 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_FAILURE_MESSAGE_TEXT, fShowErrorMessage); | 3350 | ThemeControlEnable(m_pControlFailureMessageText, fShowErrorMessage); |
| 3364 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_FAILURE_RESTART_BUTTON, fEnableRestartButton); | 3351 | ThemeControlEnable(m_pControlFailureRestartButton, fEnableRestartButton); |
| 3365 | } | 3352 | } |
| 3366 | 3353 | ||
| 3367 | HRESULT hr = ThemeShowPage(m_pTheme, dwOldPageId, SW_HIDE); | 3354 | HRESULT hr = ThemeShowPage(m_pTheme, dwOldPageId, SW_HIDE); |
| @@ -3379,7 +3366,7 @@ private: | |||
| 3379 | // On the install page set the focus to the install button or the next enabled control if install is disabled. | 3366 | // On the install page set the focus to the install button or the next enabled control if install is disabled. |
| 3380 | if (m_rgdwPageIds[WIXSTDBA_PAGE_INSTALL] == dwNewPageId) | 3367 | if (m_rgdwPageIds[WIXSTDBA_PAGE_INSTALL] == dwNewPageId) |
| 3381 | { | 3368 | { |
| 3382 | ThemeSetFocus(m_pTheme, WIXSTDBA_CONTROL_INSTALL_BUTTON); | 3369 | ThemeSetFocus(m_pControlInstallButton); |
| 3383 | } | 3370 | } |
| 3384 | } | 3371 | } |
| 3385 | } | 3372 | } |
| @@ -3423,7 +3410,7 @@ private: | |||
| 3423 | // If we canceled, disable cancel button since clicking it again is silly. | 3410 | // If we canceled, disable cancel button since clicking it again is silly. |
| 3424 | if (fClose) | 3411 | if (fClose) |
| 3425 | { | 3412 | { |
| 3426 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_PROGRESS_CANCEL_BUTTON, FALSE); | 3413 | ThemeControlEnable(m_pControlProgressCancelButton, FALSE); |
| 3427 | } | 3414 | } |
| 3428 | 3415 | ||
| 3429 | fClose = FALSE; | 3416 | fClose = FALSE; |
| @@ -3447,8 +3434,8 @@ private: | |||
| 3447 | // | 3434 | // |
| 3448 | void OnClickAcceptCheckbox() | 3435 | void OnClickAcceptCheckbox() |
| 3449 | { | 3436 | { |
| 3450 | BOOL fAcceptedLicense = ThemeIsControlChecked(m_pTheme, WIXSTDBA_CONTROL_EULA_ACCEPT_CHECKBOX); | 3437 | BOOL fAcceptedLicense = ThemeIsControlChecked(m_pControlEulaAcceptCheckbox); |
| 3451 | ThemeControlEnable(m_pTheme, WIXSTDBA_CONTROL_INSTALL_BUTTON, fAcceptedLicense); | 3438 | ThemeControlEnable(m_pControlInstallButton, fAcceptedLicense); |
| 3452 | } | 3439 | } |
| 3453 | 3440 | ||
| 3454 | 3441 | ||
| @@ -3954,12 +3941,12 @@ LExit: | |||
| 3954 | WCHAR wzProgress[5] = { }; | 3941 | WCHAR wzProgress[5] = { }; |
| 3955 | 3942 | ||
| 3956 | ::StringCchPrintfW(wzProgress, countof(wzProgress), L"%u%%", dwOverallPercentage); | 3943 | ::StringCchPrintfW(wzProgress, countof(wzProgress), L"%u%%", dwOverallPercentage); |
| 3957 | ThemeSetTextControl(m_pTheme, WIXSTDBA_CONTROL_CACHE_PROGRESS_TEXT, wzProgress); | 3944 | ThemeSetTextControl(m_pControlCacheProgressText, wzProgress); |
| 3958 | 3945 | ||
| 3959 | ThemeSetProgressControl(m_pTheme, WIXSTDBA_CONTROL_CACHE_PROGRESS_BAR, dwOverallPercentage); | 3946 | ThemeSetProgressControl(m_pControlCacheProgressbar, dwOverallPercentage); |
| 3960 | 3947 | ||
| 3961 | m_dwCalculatedCacheProgress = dwOverallPercentage * WIXSTDBA_ACQUIRE_PERCENTAGE / 100; | 3948 | m_dwCalculatedCacheProgress = dwOverallPercentage * WIXSTDBA_ACQUIRE_PERCENTAGE / 100; |
| 3962 | ThemeSetProgressControl(m_pTheme, WIXSTDBA_CONTROL_OVERALL_CALCULATED_PROGRESS_BAR, m_dwCalculatedCacheProgress + m_dwCalculatedExecuteProgress); | 3949 | ThemeSetProgressControl(m_pControlOverallCalculatedProgressbar, m_dwCalculatedCacheProgress + m_dwCalculatedExecuteProgress); |
| 3963 | 3950 | ||
| 3964 | SetTaskbarButtonProgress(m_dwCalculatedCacheProgress + m_dwCalculatedExecuteProgress); | 3951 | SetTaskbarButtonProgress(m_dwCalculatedCacheProgress + m_dwCalculatedExecuteProgress); |
| 3965 | } | 3952 | } |
| @@ -4088,6 +4075,8 @@ public: | |||
| 4088 | __in IBootstrapperEngine* pEngine | 4075 | __in IBootstrapperEngine* pEngine |
| 4089 | ) : CBalBaseBootstrapperApplication(pEngine, 3, 3000) | 4076 | ) : CBalBaseBootstrapperApplication(pEngine, 3, 3000) |
| 4090 | { | 4077 | { |
| 4078 | THEME_ASSIGN_CONTROL_ID* pAssignControl = NULL; | ||
| 4079 | |||
| 4091 | m_hModule = hModule; | 4080 | m_hModule = hModule; |
| 4092 | m_command = { }; | 4081 | m_command = { }; |
| 4093 | m_createArgs = { }; | 4082 | m_createArgs = { }; |
| @@ -4141,6 +4130,148 @@ public: | |||
| 4141 | m_hBAFModule = NULL; | 4130 | m_hBAFModule = NULL; |
| 4142 | m_pfnBAFunctionsProc = NULL; | 4131 | m_pfnBAFunctionsProc = NULL; |
| 4143 | m_pvBAFunctionsProcContext = NULL; | 4132 | m_pvBAFunctionsProcContext = NULL; |
| 4133 | |||
| 4134 | C_ASSERT(0 == WIXSTDBA_CONTROL_INSTALL_BUTTON - WIXSTDBA_FIRST_ASSIGN_CONTROL_ID); | ||
| 4135 | pAssignControl = m_rgInitControls; | ||
| 4136 | |||
| 4137 | pAssignControl->wId = WIXSTDBA_CONTROL_INSTALL_BUTTON; | ||
| 4138 | pAssignControl->wzName = L"InstallButton"; | ||
| 4139 | pAssignControl->ppControl = &m_pControlInstallButton; | ||
| 4140 | m_pControlInstallButton = NULL; | ||
| 4141 | ++pAssignControl; | ||
| 4142 | |||
| 4143 | pAssignControl->wId = WIXSTDBA_CONTROL_EULA_RICHEDIT; | ||
| 4144 | pAssignControl->wzName = L"EulaRichedit"; | ||
| 4145 | pAssignControl->ppControl = &m_pControlEulaRichedit; | ||
| 4146 | m_pControlEulaRichedit = NULL; | ||
| 4147 | ++pAssignControl; | ||
| 4148 | |||
| 4149 | pAssignControl->wId = WIXSTDBA_CONTROL_EULA_LINK; | ||
| 4150 | pAssignControl->wzName = L"EulaHyperlink"; | ||
| 4151 | pAssignControl->ppControl = &m_pControlEulaHyperlink; | ||
| 4152 | m_pControlEulaHyperlink = NULL; | ||
| 4153 | ++pAssignControl; | ||
| 4154 | |||
| 4155 | pAssignControl->wId = WIXSTDBA_CONTROL_EULA_ACCEPT_CHECKBOX; | ||
| 4156 | pAssignControl->wzName = L"EulaAcceptCheckbox"; | ||
| 4157 | pAssignControl->ppControl = &m_pControlEulaAcceptCheckbox; | ||
| 4158 | m_pControlEulaAcceptCheckbox = NULL; | ||
| 4159 | ++pAssignControl; | ||
| 4160 | |||
| 4161 | pAssignControl->wId = WIXSTDBA_CONTROL_REPAIR_BUTTON; | ||
| 4162 | pAssignControl->wzName = L"RepairButton"; | ||
| 4163 | pAssignControl->ppControl = &m_pControlRepairButton; | ||
| 4164 | m_pControlRepairButton = NULL; | ||
| 4165 | ++pAssignControl; | ||
| 4166 | |||
| 4167 | pAssignControl->wId = WIXSTDBA_CONTROL_UNINSTALL_BUTTON; | ||
| 4168 | pAssignControl->wzName = L"UninstallButton"; | ||
| 4169 | pAssignControl->ppControl = &m_pControlUninstallButton; | ||
| 4170 | m_pControlUninstallButton = NULL; | ||
| 4171 | ++pAssignControl; | ||
| 4172 | |||
| 4173 | pAssignControl->wId = WIXSTDBA_CONTROL_CACHE_PROGRESS_PACKAGE_TEXT; | ||
| 4174 | pAssignControl->wzName = L"CacheProgressPackageText"; | ||
| 4175 | pAssignControl->ppControl = &m_pControlCacheProgressPackageText; | ||
| 4176 | m_pControlCacheProgressPackageText = NULL; | ||
| 4177 | ++pAssignControl; | ||
| 4178 | |||
| 4179 | pAssignControl->wId = WIXSTDBA_CONTROL_CACHE_PROGRESS_BAR; | ||
| 4180 | pAssignControl->wzName = L"CacheProgressbar"; | ||
| 4181 | pAssignControl->ppControl = &m_pControlCacheProgressbar; | ||
| 4182 | m_pControlCacheProgressbar = NULL; | ||
| 4183 | ++pAssignControl; | ||
| 4184 | |||
| 4185 | pAssignControl->wId = WIXSTDBA_CONTROL_CACHE_PROGRESS_TEXT; | ||
| 4186 | pAssignControl->wzName = L"CacheProgressText"; | ||
| 4187 | pAssignControl->ppControl = &m_pControlCacheProgressText; | ||
| 4188 | m_pControlCacheProgressText = NULL; | ||
| 4189 | ++pAssignControl; | ||
| 4190 | |||
| 4191 | pAssignControl->wId = WIXSTDBA_CONTROL_EXECUTE_PROGRESS_PACKAGE_TEXT; | ||
| 4192 | pAssignControl->wzName = L"ExecuteProgressPackageText"; | ||
| 4193 | pAssignControl->ppControl = &m_pControlExecuteProgressPackageText; | ||
| 4194 | m_pControlExecuteProgressPackageText = NULL; | ||
| 4195 | ++pAssignControl; | ||
| 4196 | |||
| 4197 | pAssignControl->wId = WIXSTDBA_CONTROL_EXECUTE_PROGRESS_BAR; | ||
| 4198 | pAssignControl->wzName = L"ExecuteProgressbar"; | ||
| 4199 | pAssignControl->ppControl = &m_pControlExecuteProgressbar; | ||
| 4200 | m_pControlExecuteProgressbar = NULL; | ||
| 4201 | ++pAssignControl; | ||
| 4202 | |||
| 4203 | pAssignControl->wId = WIXSTDBA_CONTROL_EXECUTE_PROGRESS_TEXT; | ||
| 4204 | pAssignControl->wzName = L"ExecuteProgressText"; | ||
| 4205 | pAssignControl->ppControl = &m_pControlExecuteProgressText; | ||
| 4206 | m_pControlExecuteProgressText = NULL; | ||
| 4207 | ++pAssignControl; | ||
| 4208 | |||
| 4209 | pAssignControl->wId = WIXSTDBA_CONTROL_EXECUTE_PROGRESS_ACTIONDATA_TEXT; | ||
| 4210 | pAssignControl->wzName = L"ExecuteProgressActionDataText"; | ||
| 4211 | pAssignControl->ppControl = &m_pControlExecuteProgressActionDataText; | ||
| 4212 | m_pControlExecuteProgressActionDataText = NULL; | ||
| 4213 | ++pAssignControl; | ||
| 4214 | |||
| 4215 | pAssignControl->wId = WIXSTDBA_CONTROL_OVERALL_PROGRESS_PACKAGE_TEXT; | ||
| 4216 | pAssignControl->wzName = L"OverallProgressPackageText"; | ||
| 4217 | pAssignControl->ppControl = &m_pControlOverallProgressPackageText; | ||
| 4218 | m_pControlOverallProgressPackageText = NULL; | ||
| 4219 | ++pAssignControl; | ||
| 4220 | |||
| 4221 | pAssignControl->wId = WIXSTDBA_CONTROL_OVERALL_PROGRESS_BAR; | ||
| 4222 | pAssignControl->wzName = L"OverallProgressbar"; | ||
| 4223 | pAssignControl->ppControl = &m_pControlOverallProgressbar; | ||
| 4224 | m_pControlOverallProgressbar = NULL; | ||
| 4225 | ++pAssignControl; | ||
| 4226 | |||
| 4227 | pAssignControl->wId = WIXSTDBA_CONTROL_OVERALL_CALCULATED_PROGRESS_BAR; | ||
| 4228 | pAssignControl->wzName = L"OverallCalculatedProgressbar"; | ||
| 4229 | pAssignControl->ppControl = &m_pControlOverallCalculatedProgressbar; | ||
| 4230 | m_pControlOverallCalculatedProgressbar = NULL; | ||
| 4231 | ++pAssignControl; | ||
| 4232 | |||
| 4233 | pAssignControl->wId = WIXSTDBA_CONTROL_OVERALL_PROGRESS_TEXT; | ||
| 4234 | pAssignControl->wzName = L"OverallProgressText"; | ||
| 4235 | pAssignControl->ppControl = &m_pControlOverallProgressText; | ||
| 4236 | m_pControlOverallProgressText = NULL; | ||
| 4237 | ++pAssignControl; | ||
| 4238 | |||
| 4239 | pAssignControl->wId = WIXSTDBA_CONTROL_PROGRESS_CANCEL_BUTTON; | ||
| 4240 | pAssignControl->wzName = L"ProgressCancelButton"; | ||
| 4241 | pAssignControl->ppControl = &m_pControlProgressCancelButton; | ||
| 4242 | m_pControlProgressCancelButton = NULL; | ||
| 4243 | ++pAssignControl; | ||
| 4244 | |||
| 4245 | pAssignControl->wId = WIXSTDBA_CONTROL_LAUNCH_BUTTON; | ||
| 4246 | pAssignControl->wzName = L"LaunchButton"; | ||
| 4247 | pAssignControl->ppControl = &m_pControlLaunchButton; | ||
| 4248 | m_pControlLaunchButton = NULL; | ||
| 4249 | ++pAssignControl; | ||
| 4250 | |||
| 4251 | pAssignControl->wId = WIXSTDBA_CONTROL_SUCCESS_RESTART_BUTTON; | ||
| 4252 | pAssignControl->wzName = L"SuccessRestartButton"; | ||
| 4253 | pAssignControl->ppControl = &m_pControlSuccessRestartButton; | ||
| 4254 | m_pControlSuccessRestartButton = NULL; | ||
| 4255 | ++pAssignControl; | ||
| 4256 | |||
| 4257 | pAssignControl->wId = WIXSTDBA_CONTROL_FAILURE_LOGFILE_LINK; | ||
| 4258 | pAssignControl->wzName = L"FailureLogFileLink"; | ||
| 4259 | pAssignControl->ppControl = &m_pControlFailureLogFileLink; | ||
| 4260 | m_pControlFailureLogFileLink = NULL; | ||
| 4261 | ++pAssignControl; | ||
| 4262 | |||
| 4263 | pAssignControl->wId = WIXSTDBA_CONTROL_FAILURE_MESSAGE_TEXT; | ||
| 4264 | pAssignControl->wzName = L"FailureMessageText"; | ||
| 4265 | pAssignControl->ppControl = &m_pControlFailureMessageText; | ||
| 4266 | m_pControlFailureMessageText = NULL; | ||
| 4267 | ++pAssignControl; | ||
| 4268 | |||
| 4269 | pAssignControl->wId = WIXSTDBA_CONTROL_FAILURE_RESTART_BUTTON; | ||
| 4270 | pAssignControl->wzName = L"FailureRestartButton"; | ||
| 4271 | pAssignControl->ppControl = &m_pControlFailureRestartButton; | ||
| 4272 | m_pControlFailureRestartButton = NULL; | ||
| 4273 | |||
| 4274 | C_ASSERT(LAST_WIXSTDBA_CONTROL == WIXSTDBA_CONTROL_FAILURE_RESTART_BUTTON + 1); | ||
| 4144 | } | 4275 | } |
| 4145 | 4276 | ||
| 4146 | 4277 | ||
| @@ -4201,11 +4332,48 @@ private: | |||
| 4201 | 4332 | ||
| 4202 | LPWSTR m_sczLanguage; | 4333 | LPWSTR m_sczLanguage; |
| 4203 | THEME* m_pTheme; | 4334 | THEME* m_pTheme; |
| 4335 | THEME_ASSIGN_CONTROL_ID m_rgInitControls[LAST_WIXSTDBA_CONTROL - WIXSTDBA_FIRST_ASSIGN_CONTROL_ID]; | ||
| 4204 | DWORD m_rgdwPageIds[countof(vrgwzPageNames)]; | 4336 | DWORD m_rgdwPageIds[countof(vrgwzPageNames)]; |
| 4205 | HANDLE m_hUiThread; | 4337 | HANDLE m_hUiThread; |
| 4206 | BOOL m_fRegistered; | 4338 | BOOL m_fRegistered; |
| 4207 | HWND m_hWnd; | 4339 | HWND m_hWnd; |
| 4208 | 4340 | ||
| 4341 | // Welcome page | ||
| 4342 | const THEME_CONTROL* m_pControlInstallButton; | ||
| 4343 | const THEME_CONTROL* m_pControlEulaRichedit; | ||
| 4344 | const THEME_CONTROL* m_pControlEulaHyperlink; | ||
| 4345 | const THEME_CONTROL* m_pControlEulaAcceptCheckbox; | ||
| 4346 | |||
| 4347 | // Modify page | ||
| 4348 | const THEME_CONTROL* m_pControlRepairButton; | ||
| 4349 | const THEME_CONTROL* m_pControlUninstallButton; | ||
| 4350 | |||
| 4351 | // Progress page | ||
| 4352 | const THEME_CONTROL* m_pControlCacheProgressPackageText; | ||
| 4353 | const THEME_CONTROL* m_pControlCacheProgressbar; | ||
| 4354 | const THEME_CONTROL* m_pControlCacheProgressText; | ||
| 4355 | |||
| 4356 | const THEME_CONTROL* m_pControlExecuteProgressPackageText; | ||
| 4357 | const THEME_CONTROL* m_pControlExecuteProgressbar; | ||
| 4358 | const THEME_CONTROL* m_pControlExecuteProgressText; | ||
| 4359 | const THEME_CONTROL* m_pControlExecuteProgressActionDataText; | ||
| 4360 | |||
| 4361 | const THEME_CONTROL* m_pControlOverallProgressPackageText; | ||
| 4362 | const THEME_CONTROL* m_pControlOverallProgressbar; | ||
| 4363 | const THEME_CONTROL* m_pControlOverallCalculatedProgressbar; | ||
| 4364 | const THEME_CONTROL* m_pControlOverallProgressText; | ||
| 4365 | |||
| 4366 | const THEME_CONTROL* m_pControlProgressCancelButton; | ||
| 4367 | |||
| 4368 | // Success page | ||
| 4369 | const THEME_CONTROL* m_pControlLaunchButton; | ||
| 4370 | const THEME_CONTROL* m_pControlSuccessRestartButton; | ||
| 4371 | |||
| 4372 | // Failure page | ||
| 4373 | const THEME_CONTROL* m_pControlFailureLogFileLink; | ||
| 4374 | const THEME_CONTROL* m_pControlFailureMessageText; | ||
| 4375 | const THEME_CONTROL* m_pControlFailureRestartButton; | ||
| 4376 | |||
| 4209 | WIXSTDBA_STATE m_state; | 4377 | WIXSTDBA_STATE m_state; |
| 4210 | HRESULT m_hrFinal; | 4378 | HRESULT m_hrFinal; |
| 4211 | 4379 | ||
diff --git a/src/ext/Bal/wixstdba/precomp.h b/src/ext/Bal/wixstdba/precomp.h index 547183bd..ba56ae6d 100644 --- a/src/ext/Bal/wixstdba/precomp.h +++ b/src/ext/Bal/wixstdba/precomp.h | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | #include "resrutil.h" | 29 | #include "resrutil.h" |
| 30 | #include "shelutil.h" | 30 | #include "shelutil.h" |
| 31 | #include "strutil.h" | 31 | #include "strutil.h" |
| 32 | #include "wndutil.h" | ||
| 32 | #include "thmutil.h" | 33 | #include "thmutil.h" |
| 33 | #include "verutil.h" | 34 | #include "verutil.h" |
| 34 | #include "uriutil.h" | 35 | #include "uriutil.h" |
