@joebigelow / wix / commits / 5059f83d

Support bundle updates in WixStdBA.

Fixes https://github.com/wixtoolset/issues/issues/6894.

Bob Arnson committed Sep 9, 2022 at 21:23 UTC 5059f83d7dccd7221458fca414a0756bb83466a5
11 files changed +152 -4
src/burn/engine/detect.cpp
+1 -1
@@ -400,7 +400,7 @@ static HRESULT DetectAtomFeedUpdate(
400 APPLICATION_UPDATE_ENTRY* pAppUpdateEntry = &pApupChain->rgEntries[i];
401 APPLICATION_UPDATE_ENCLOSURE* pEnclosure = pAppUpdateEntry->rgEnclosures;
402
403 - if (pEnclosure)
403 + if (pEnclosure && pEnclosure->rgbDigest && *pEnclosure->rgbDigest)
404 {
405 hr = StrAllocHexEncode(pEnclosure->rgbDigest, pEnclosure->cbDigest, &sczHash);
406 ExitOnFailure(hr, "Failed to encode hash as string.");
src/ext/Bal/wixstdba/Resources/HyperlinkLargeTheme.xml
+5
@@ -12,6 +12,9 @@
12 <ImageControl X="11" Y="11" Width="64" Height="64" ImageFile="logo.png" Visible="yes"/>
13 <Label X="80" Y="11" Width="-11" Height="64" FontId="1" Visible="yes" DisablePrefix="yes">#(loc.Title)</Label>
14
15 + <Page Name="Loading">
16 + <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes" Visible="no" Name="CheckingForUpdatesLabel" />
17 + </Page>
18 <Page Name="Help">
19 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Label>
20 <Label X="11" Y="112" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Label>
@@ -29,6 +32,7 @@
32 <Hypertext Name="EulaHyperlink" X="11" Y="-107" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext>
33 <Label Name="InstallVersion" X="11" Y="-73" Width="246" Height="17" FontId="3" DisablePrefix="yes" VisibleCondition="WixStdBAShowVersion">#(loc.InstallVersion)</Label>
34 <Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
35 + <Button Name="InstallUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
36 <Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" VisibleCondition="NOT WixStdBASuppressOptionsUI">
37 <Text>#(loc.InstallOptionsButton)</Text>
38 <ChangePageAction Page="Options" />
@@ -65,6 +69,7 @@
69 </Page>
70 <Page Name="Modify">
71 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label>
72 + <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
73 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
74 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
75 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
src/ext/Bal/wixstdba/Resources/HyperlinkSidebarTheme.xml
+5
@@ -19,6 +19,9 @@
19 <CloseWindowAction />
20 </Button>
21 </Page>
22 + <Page Name="Loading">
23 + <Label X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes" Visible="no" Name="CheckingForUpdatesLabel" />
24 + </Page>
25 <Page Name="Install">
26 <Label X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Label>
27 <ImageControl X="11" Y="11" Width="165" Height="400" ImageFile="logoside.png"/>
@@ -30,6 +33,7 @@
33 <Hypertext Name="EulaHyperlink" X="185" Y="-111" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext>
34 <Label Name="InstallVersion" X="185" Y="-81" Width="-11" Height="17" FontId="3" DisablePrefix="yes" VisibleCondition="WixStdBAShowVersion">#(loc.InstallVersion)</Label>
35 <Checkbox Name="EulaAcceptCheckbox" X="185" Y="-51" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
36 + <Button Name="InstallUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
37 <Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" VisibleCondition="NOT WixStdBASuppressOptionsUI">
38 <Text>#(loc.InstallOptionsButton)</Text>
39 <ChangePageAction Page="Options" />
@@ -72,6 +76,7 @@
76 <Label X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Label>
77 <ImageControl X="11" Y="11" Width="165" Height="400" ImageFile="logoside.png"/>
78 <Label X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label>
79 + <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
80 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
81 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
82 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
src/ext/Bal/wixstdba/Resources/HyperlinkTheme.wxl
+2
@@ -5,6 +5,8 @@
5 <WixLocalization Culture="en-us" Language="1033" xmlns="http://wixtoolset.org/schemas/v4/wxl">
6 <String Id="Caption">[WixBundleName] Setup</String>
7 <String Id="Title">[WixBundleName]</String>
8 + <String Id="CheckingForUpdatesLabel">Checking for updates</String>
9 + <String Id="UpdateButton">&amp;Update to version [WixStdBAUpdateAvailable]</String>
10 <String Id="InstallHeader">Welcome</String>
11 <String Id="InstallMessage">Setup will install [WixBundleName] on your computer. Click Install to continue or Cancel to exit.</String>
12 <String Id="InstallMessageOptions">Setup will install [WixBundleName] on your computer. Click Install to continue, Options to set installation options, or Cancel to exit.</String>
src/ext/Bal/wixstdba/Resources/HyperlinkTheme.xml
+5
@@ -20,9 +20,13 @@
20 <CloseWindowAction />
21 </Button>
22 </Page>
23 + <Page Name="Loading">
24 + <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes" Visible="no" Name="CheckingForUpdatesLabel" />
25 + </Page>
26 <Page Name="Install">
27 <Hypertext Name="EulaHyperlink" X="11" Y="121" Width="-11" Height="51" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext>
28 <Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
29 + <Button Name="InstallUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
30 <Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" VisibleCondition="NOT WixStdBASuppressOptionsUI">
31 <Text>#(loc.InstallOptionsButton)</Text>
32 <ChangePageAction Page="Options" />
@@ -59,6 +63,7 @@
63 </Page>
64 <Page Name="Modify">
65 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label>
66 + <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
67 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
68 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
69 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
src/ext/Bal/wixstdba/Resources/RtfLargeTheme.xml
+5
@@ -20,11 +20,15 @@
20 <CloseWindowAction />
21 </Button>
22 </Page>
23 + <Page Name="Loading">
24 + <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes" Visible="no" Name="CheckingForUpdatesLabel" />
25 + </Page>
26 <Page Name="Install">
27 <Label X="11" Y="80" Width="-11" Height="-70" TabStop="no" FontId="2" HexStyle="800000" DisablePrefix="yes" />
28 <Richedit Name="EulaRichedit" X="12" Y="81" Width="-12" Height="-71" TabStop="yes" FontId="0" />
29 <Label Name="InstallVersion" X="11" Y="-41" Width="210" Height="17" FontId="3" DisablePrefix="yes" VisibleCondition="WixStdBAShowVersion">#(loc.InstallVersion)</Label>
30 <Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
31 + <Button Name="InstallUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
32 <Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" VisibleCondition="NOT WixStdBASuppressOptionsUI">
33 <Text>#(loc.InstallOptionsButton)</Text>
34 <ChangePageAction Page="Options" />
@@ -61,6 +65,7 @@
65 </Page>
66 <Page Name="Modify">
67 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label>
68 + <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
69 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
70 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
71 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
src/ext/Bal/wixstdba/Resources/RtfTheme.wxl
+2
@@ -5,6 +5,8 @@
5 <WixLocalization Culture="en-us" Language="1033" xmlns="http://wixtoolset.org/schemas/v4/wxl">
6 <String Id="Caption">[WixBundleName] Setup</String>
7 <String Id="Title">[WixBundleName]</String>
8 + <String Id="CheckingForUpdatesLabel">Checking for updates</String>
9 + <String Id="UpdateButton">&amp;Update to version [WixStdBAUpdateAvailable]</String>
10 <String Id="InstallVersion">Version [WixBundleVersion]</String>
11 <String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
12 <String Id="ExecuteUpgradeRelatedBundleMessage">Previous version</String>
src/ext/Bal/wixstdba/Resources/RtfTheme.xml
+5
@@ -20,9 +20,13 @@
20 <CloseWindowAction />
21 </Button>
22 </Page>
23 + <Page Name="Loading">
24 + <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes" Visible="no" Name="CheckingForUpdatesLabel" />
25 + </Page>
26 <Page Name="Install">
27 <Richedit Name="EulaRichedit" X="11" Y="80" Width="-11" Height="-70" TabStop="yes" FontId="0" HexStyle="800000" />
28 <Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
29 + <Button Name="InstallUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
30 <Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" VisibleCondition="NOT WixStdBASuppressOptionsUI">
31 <Text>#(loc.InstallOptionsButton)</Text>
32 <ChangePageAction Page="Options" />
@@ -59,6 +63,7 @@
63 </Page>
64 <Page Name="Modify">
65 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label>
66 + <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
67 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
68 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
69 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp
+119 -2
@@ -23,6 +23,7 @@ static const LPCWSTR WIXSTDBA_VARIABLE_LANGUAGE_ID = L"WixStdBALanguageId";
23 static const LPCWSTR WIXSTDBA_VARIABLE_RESTART_REQUIRED = L"WixStdBARestartRequired";
24 static const LPCWSTR WIXSTDBA_VARIABLE_SHOW_VERSION = L"WixStdBAShowVersion";
25 static const LPCWSTR WIXSTDBA_VARIABLE_SUPPRESS_OPTIONS_UI = L"WixStdBASuppressOptionsUI";
26 +static const LPCWSTR WIXSTDBA_VARIABLE_UPDATE_AVAILABLE = L"WixStdBAUpdateAvailable";
27
28 enum WIXSTDBA_STATE
29 {
@@ -98,6 +99,11 @@ enum WIXSTDBA_CONTROL
99 WIXSTDBA_CONTROL_REPAIR_BUTTON,
100 WIXSTDBA_CONTROL_UNINSTALL_BUTTON,
101
102 + // Updates
103 + WIXSTDBA_CONTROL_CHECKING_FOR_UPDATES_LABEL,
104 + WIXSTDBA_CONTROL_INSTALL_UPDATE_BUTTON,
105 + WIXSTDBA_CONTROL_MODIFY_UPDATE_BUTTON,
106 +
107 // Progress page
108 WIXSTDBA_CONTROL_CACHE_PROGRESS_PACKAGE_TEXT,
109 WIXSTDBA_CONTROL_CACHE_PROGRESS_BAR,
@@ -342,6 +348,70 @@ public: // IBootstrapperApplication
348 }
349
350
351 + virtual STDMETHODIMP OnDetectUpdateBegin(
352 + __in_z LPCWSTR wzUpdateLocation,
353 + __inout BOOL* pfCancel,
354 + __inout BOOL* pfSkip
355 + )
356 + {
357 +#ifdef DEBUG
358 + BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "WIXSTDBA: OnDetectUpdateBegin() - update location: %ls", wzUpdateLocation);
359 +#endif
360 +
361 + // Try update detection only if we have a potential update source and are in full UI mode.
362 + *pfSkip = !wzUpdateLocation
363 + || !*wzUpdateLocation
364 + || BOOTSTRAPPER_DISPLAY_FULL != m_command.display;
365 +
366 + ThemeShowControl(m_pControlCheckingForUpdatesLabel, *pfSkip ? SW_HIDE : SW_SHOW);
367 +
368 + return __super::OnDetectUpdateBegin(wzUpdateLocation, pfCancel, pfSkip);
369 + }
370 +
371 +
372 + virtual STDMETHODIMP OnDetectUpdate(
373 + __in_z LPCWSTR wzUpdateLocation,
374 + __in DWORD64 dw64Size,
375 + __in_z_opt LPCWSTR wzHash,
376 + __in BOOTSTRAPPER_UPDATE_HASH_TYPE hashAlgorithm,
377 + __in LPCWSTR wzUpdateVersion,
378 + __in_z LPCWSTR wzTitle,
379 + __in_z LPCWSTR wzSummary,
380 + __in_z LPCWSTR wzContentType,
381 + __in_z LPCWSTR wzContent,
382 + __inout BOOL* pfCancel,
383 + __inout BOOL* pfStopProcessingUpdates
384 + )
385 + {
386 + HRESULT hr = S_OK;
387 + int nResult = 0;
388 +
389 + hr = VerCompareStringVersions(m_sczBundleVersion, wzUpdateVersion, TRUE/*fStrict*/, &nResult);
390 + BalExitOnFailure(hr, "Failed to compare bundle version: %ls to update version: %ls.", m_sczBundleVersion, wzUpdateVersion);
391 +
392 + // Burn sends the feed in descending version order so we need only the first one.
393 + *pfStopProcessingUpdates = TRUE;
394 +
395 + if (0 <= nResult)
396 + {
397 + BalLog(BOOTSTRAPPER_LOG_LEVEL_VERBOSE, "WIXSTDBA: Update version: %ls is a match or downgrade for bundle version: %ls.", wzUpdateVersion, m_sczBundleVersion);
398 + }
399 + else
400 + {
401 + BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "WIXSTDBA: Update v%ls for bundle v%ls available from: %ls.", wzUpdateVersion, m_sczBundleVersion, wzUpdateLocation);
402 +
403 + hr = BalSetVersionVariable(WIXSTDBA_VARIABLE_UPDATE_AVAILABLE, wzUpdateVersion);
404 + BalExitOnFailure(hr, "Failed to set WixStdBAUpdateAvailable value: %ls.", wzUpdateVersion);
405 +
406 + hr = m_pEngine->SetUpdate(NULL, wzUpdateLocation, dw64Size, hashAlgorithm, wzHash);
407 + BalExitOnFailure(hr, "Failed to set update location: %ls.", wzUpdateLocation);
408 + }
409 +
410 + LExit:
411 + return __super::OnDetectUpdate(wzUpdateLocation, dw64Size, wzHash, hashAlgorithm, wzUpdateVersion, wzTitle, wzSummary, wzContentType, wzContent, pfCancel, pfStopProcessingUpdates);
412 + }
413 +
414 +
415 virtual STDMETHODIMP OnDetectComplete(
416 __in HRESULT hrStatus,
417 __in BOOL /*fEligibleForCleanup*/
@@ -3741,10 +3811,10 @@ private:
3811
3812 m_state = state;
3813
3744 - // If our install is at the end (success or failure) and we're not showing full UI or
3814 + // If our install is at the end (success or failure) and we're not showing full UI or not updating or
3815 // we successfully installed the prerequisite(s) and either no restart is required or can automatically restart
3816 // then exit.
3747 - if ((WIXSTDBA_STATE_APPLIED <= m_state && BOOTSTRAPPER_DISPLAY_FULL > m_command.display) ||
3817 + if ((WIXSTDBA_STATE_APPLIED <= m_state && (BOOTSTRAPPER_DISPLAY_FULL > m_command.display || BOOTSTRAPPER_ACTION_UPDATE_REPLACE == m_plannedAction)) ||
3818 (WIXSTDBA_STATE_APPLIED == m_state && m_fPrereq && (!m_fRestartRequired || m_fShouldRestart && m_fAllowRestart)))
3819 {
3820 // Quietly exit.
@@ -4037,6 +4107,15 @@ private:
4107 }
4108
4109
4110 + //
4111 + // OnClickUpdateButton - start the update process.
4112 + //
4113 + void OnClickUpdateButton()
4114 + {
4115 + this->OnPlan(BOOTSTRAPPER_ACTION_UPDATE_REPLACE);
4116 + }
4117 +
4118 +
4119 //
4120 // OnClickCloseButton - close the application.
4121 //
@@ -4263,6 +4342,13 @@ private:
4342 pResults->lResult = 0;
4343 ExitFunction();
4344
4345 + case WIXSTDBA_CONTROL_INSTALL_UPDATE_BUTTON:
4346 + case WIXSTDBA_CONTROL_MODIFY_UPDATE_BUTTON:
4347 + OnClickUpdateButton();
4348 + fProcessed = TRUE;
4349 + pResults->lResult = 0;
4350 + ExitFunction();
4351 +
4352 case WIXSTDBA_CONTROL_LAUNCH_BUTTON:
4353 OnClickLaunchButton();
4354 fProcessed = TRUE;
@@ -4381,6 +4467,10 @@ LExit:
4467 __in HRESULT hrStatus
4468 )
4469 {
4470 +#ifdef DEBUG
4471 + BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "WIXSTDBA: SetState() - setting state to %u with status 0x%08x.", state, hrStatus);
4472 +#endif
4473 +
4474 if (FAILED(hrStatus))
4475 {
4476 m_hrFinal = hrStatus;
@@ -4786,6 +4876,27 @@ public:
4876 m_pControlUninstallButton = NULL;
4877 ++pAssignControl;
4878
4879 + pAssignControl->wId = WIXSTDBA_CONTROL_CHECKING_FOR_UPDATES_LABEL;
4880 + pAssignControl->wzName = L"CheckingForUpdatesLabel";
4881 + pAssignControl->ppControl = &m_pControlCheckingForUpdatesLabel;
4882 + pAssignControl->dwAutomaticBehaviorType = dwAutomaticBehaviorType;
4883 + m_pControlCheckingForUpdatesLabel = NULL;
4884 + ++pAssignControl;
4885 +
4886 + pAssignControl->wId = WIXSTDBA_CONTROL_INSTALL_UPDATE_BUTTON;
4887 + pAssignControl->wzName = L"InstallUpdateButton";
4888 + pAssignControl->ppControl = &m_pControlInstallUpdateButton;
4889 + pAssignControl->dwAutomaticBehaviorType = THEME_CONTROL_AUTOMATIC_BEHAVIOR_ALL;
4890 + m_pControlInstallUpdateButton = NULL;
4891 + ++pAssignControl;
4892 +
4893 + pAssignControl->wId = WIXSTDBA_CONTROL_MODIFY_UPDATE_BUTTON;
4894 + pAssignControl->wzName = L"ModifyUpdateButton";
4895 + pAssignControl->ppControl = &m_pControlModifyUpdateButton;
4896 + pAssignControl->dwAutomaticBehaviorType = THEME_CONTROL_AUTOMATIC_BEHAVIOR_ALL;
4897 + m_pControlModifyUpdateButton = NULL;
4898 + ++pAssignControl;
4899 +
4900 pAssignControl->wId = WIXSTDBA_CONTROL_CACHE_PROGRESS_PACKAGE_TEXT;
4901 pAssignControl->wzName = L"CacheProgressPackageText";
4902 pAssignControl->ppControl = &m_pControlCacheProgressPackageText;
@@ -4929,6 +5040,7 @@ public:
5040 ReleaseStr(m_sczLicenseUrl);
5041 ReleaseStr(m_sczBundleVersion);
5042 ReleaseStr(m_sczAfterForcedRestartPackage);
5043 +
5044 ReleaseNullObject(m_pEngine);
5045 }
5046
@@ -4966,6 +5078,11 @@ private:
5078 const THEME_CONTROL* m_pControlRepairButton;
5079 const THEME_CONTROL* m_pControlUninstallButton;
5080
5081 + // Update/loading pages
5082 + const THEME_CONTROL* m_pControlCheckingForUpdatesLabel;
5083 + const THEME_CONTROL* m_pControlInstallUpdateButton;
5084 + const THEME_CONTROL* m_pControlModifyUpdateButton;
5085 +
5086 // Progress page
5087 const THEME_CONTROL* m_pControlCacheProgressPackageText;
5088 const THEME_CONTROL* m_pControlCacheProgressbar;
src/test/burn/TestBA/TestBA.cs
+1 -1
@@ -220,7 +220,7 @@ namespace WixToolset.Test.BA
220 if (!this.UpdateAvailable && this.Engine.CompareVersions(e.Version, this.Version) > 0)
221 {
222 this.Log(String.Format("Selected update v{0}", e.Version));
223 - this.Engine.SetUpdate(null, e.UpdateLocation, e.Size, UpdateHashType.None, null);
223 + this.Engine.SetUpdate(null, e.UpdateLocation, e.Size, e.HashAlgorithm, e.Hash);
224 this.UpdateAvailable = true;
225 }
226 }
src/test/burn/TestData/WixStdBaTests/BundleA/Bundle.wxs
+2
@@ -4,6 +4,8 @@
4 <Bundle Name="~$(var.TestGroupName) - $(var.BundleName)" Version="$(var.Version)" UpgradeCode="$(var.UpgradeCode)" Compressed="yes" bal:CommandLineVariables="caseSensitive">
5 <Log Prefix="~$(var.TestGroupName)_$(var.BundleName)" />
6
7 + <Update Location='http://wixtoolset.org/releases/feed/v3.14' />
8 +
9 <Variable Name="TestGroupName" Value="$(var.TestGroupName)" />
10
11 <BootstrapperApplication>