aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2026-07-25 22:01:07 -0400
committerBob Arnson <github@bobs.org>2026-07-26 10:15:34 -0400
commitccfda4f4a158b19f61b018b944eb86272f427f55 (patch)
tree28460c23c443fff9811b3093243b1557ab4a35d8
parent3b6428b593ff4b8e1ca5e9c2240d539751a96c9a (diff)
downloadwix-ccfda4f4a158b19f61b018b944eb86272f427f55.tar.gz
wix-ccfda4f4a158b19f61b018b944eb86272f427f55.tar.bz2
wix-ccfda4f4a158b19f61b018b944eb86272f427f55.zip
Add UAC shield for fixed-scope per-machine bundles
Fixes https://github.com/wixtoolset/issues/issues/9321
-rw-r--r--src/api/burn/balutil/balinfo.cpp23
-rw-r--r--src/api/burn/balutil/inc/balinfo.h2
-rw-r--r--src/ext/Bal/stdbas/Resources/HyperlinkLargeTheme.xml6
-rw-r--r--src/ext/Bal/stdbas/Resources/HyperlinkSidebarTheme.xml6
-rw-r--r--src/ext/Bal/stdbas/Resources/HyperlinkTheme.xml6
-rw-r--r--src/ext/Bal/stdbas/Resources/RtfLargeTheme.xml6
-rw-r--r--src/ext/Bal/stdbas/Resources/RtfTheme.xml6
-rw-r--r--src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp5
8 files changed, 37 insertions, 23 deletions
diff --git a/src/api/burn/balutil/balinfo.cpp b/src/api/burn/balutil/balinfo.cpp
index ff0dfd9f..bff848c7 100644
--- a/src/api/burn/balutil/balinfo.cpp
+++ b/src/api/burn/balutil/balinfo.cpp
@@ -124,14 +124,32 @@ DAPI_(HRESULT) BalInfoParseFromXml(
124 HRESULT hr = S_OK; 124 HRESULT hr = S_OK;
125 IXMLDOMNode* pNode = NULL; 125 IXMLDOMNode* pNode = NULL;
126 BOOL fXmlFound = FALSE; 126 BOOL fXmlFound = FALSE;
127 LPWSTR scz = NULL;
127 128
128 hr = XmlSelectSingleNode(pixdManifest, L"/BootstrapperApplicationData/WixBundleProperties", &pNode); 129 hr = XmlSelectSingleNode(pixdManifest, L"/BootstrapperApplicationData/WixBundleProperties", &pNode);
129 BalExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to select bundle information."); 130 BalExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to select bundle information.");
130 131
131 if (fXmlFound) 132 if (fXmlFound)
132 { 133 {
133 hr = XmlGetYesNoAttribute(pNode, L"PerMachine", &pBundle->fPerMachine); 134 hr = XmlGetAttributeEx(pNode, L"Scope", &scz);
134 BalExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to read bundle information per-machine."); 135 BalExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to read bundle information scope.");
136
137 if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"perMachine", -1, TRUE))
138 {
139 pBundle->scope = BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE;
140 }
141 else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"perUser", -1, TRUE))
142 {
143 pBundle->scope = BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER;
144 }
145 else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"perUserOrMachine", -1, TRUE))
146 {
147 pBundle->scope = BOOTSTRAPPER_PACKAGE_SCOPE_PER_USER_OR_PER_MACHINE;
148 }
149 else if (CSTR_EQUAL == ::CompareStringOrdinal(scz, -1, L"perMachineOrUser", -1, TRUE))
150 {
151 pBundle->scope = BOOTSTRAPPER_PACKAGE_SCOPE_PER_MACHINE_OR_PER_USER;
152 }
135 153
136 hr = XmlGetAttributeEx(pNode, L"DisplayName", &pBundle->sczName); 154 hr = XmlGetAttributeEx(pNode, L"DisplayName", &pBundle->sczName);
137 BalExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to read bundle information display name."); 155 BalExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to read bundle information display name.");
@@ -150,6 +168,7 @@ DAPI_(HRESULT) BalInfoParseFromXml(
150 BalExitOnFailure(hr, "Failed to parse bal package information from bootstrapper application data."); 168 BalExitOnFailure(hr, "Failed to parse bal package information from bootstrapper application data.");
151 169
152LExit: 170LExit:
171 ReleaseStr(scz);
153 ReleaseObject(pNode); 172 ReleaseObject(pNode);
154 173
155 return hr; 174 return hr;
diff --git a/src/api/burn/balutil/inc/balinfo.h b/src/api/burn/balutil/inc/balinfo.h
index 8baee844..110fb688 100644
--- a/src/api/burn/balutil/inc/balinfo.h
+++ b/src/api/burn/balutil/inc/balinfo.h
@@ -93,7 +93,7 @@ typedef struct _BAL_INFO_OVERRIDABLE_VARIABLES
93 93
94typedef struct _BAL_INFO_BUNDLE 94typedef struct _BAL_INFO_BUNDLE
95{ 95{
96 BOOL fPerMachine; 96 BOOTSTRAPPER_PACKAGE_SCOPE scope;
97 LPWSTR sczName; 97 LPWSTR sczName;
98 LPWSTR sczLogVariable; 98 LPWSTR sczLogVariable;
99 BAL_INFO_PACKAGES packages; 99 BAL_INFO_PACKAGES packages;
diff --git a/src/ext/Bal/stdbas/Resources/HyperlinkLargeTheme.xml b/src/ext/Bal/stdbas/Resources/HyperlinkLargeTheme.xml
index ddf83ad7..a6b62e4e 100644
--- a/src/ext/Bal/stdbas/Resources/HyperlinkLargeTheme.xml
+++ b/src/ext/Bal/stdbas/Resources/HyperlinkLargeTheme.xml
@@ -37,7 +37,7 @@
37 <Text>#(loc.InstallOptionsButton)</Text> 37 <Text>#(loc.InstallOptionsButton)</Text>
38 <ChangePageAction Page="Options" /> 38 <ChangePageAction Page="Options" />
39 </Button> 39 </Button>
40 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.InstallInstallButton)</Button> 40 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.InstallInstallButton)</Button>
41 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 41 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
42 <Text>#(loc.InstallCancelButton)</Text> 42 <Text>#(loc.InstallCancelButton)</Text>
43 <CloseWindowAction /> 43 <CloseWindowAction />
@@ -74,8 +74,8 @@
74 <Page Name="Modify"> 74 <Page Name="Modify">
75 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label> 75 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label>
76 <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button> 76 <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
77 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyRepairButton)</Button> 77 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyRepairButton)</Button>
78 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyUninstallButton)</Button> 78 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyUninstallButton)</Button>
79 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 79 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
80 <Text>#(loc.ModifyCancelButton)</Text> 80 <Text>#(loc.ModifyCancelButton)</Text>
81 <CloseWindowAction /> 81 <CloseWindowAction />
diff --git a/src/ext/Bal/stdbas/Resources/HyperlinkSidebarTheme.xml b/src/ext/Bal/stdbas/Resources/HyperlinkSidebarTheme.xml
index 583f1037..13c0ca06 100644
--- a/src/ext/Bal/stdbas/Resources/HyperlinkSidebarTheme.xml
+++ b/src/ext/Bal/stdbas/Resources/HyperlinkSidebarTheme.xml
@@ -38,7 +38,7 @@
38 <Text>#(loc.InstallOptionsButton)</Text> 38 <Text>#(loc.InstallOptionsButton)</Text>
39 <ChangePageAction Page="Options" /> 39 <ChangePageAction Page="Options" />
40 </Button> 40 </Button>
41 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.InstallInstallButton)</Button> 41 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.InstallInstallButton)</Button>
42 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 42 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
43 <Text>#(loc.InstallCancelButton)</Text> 43 <Text>#(loc.InstallCancelButton)</Text>
44 <CloseWindowAction /> 44 <CloseWindowAction />
@@ -81,8 +81,8 @@
81 <ImageControl X="11" Y="11" Width="165" Height="400" ImageFile="logoside.png"/> 81 <ImageControl X="11" Y="11" Width="165" Height="400" ImageFile="logoside.png"/>
82 <Label X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label> 82 <Label X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label>
83 <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button> 83 <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
84 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyRepairButton)</Button> 84 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyRepairButton)</Button>
85 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyUninstallButton)</Button> 85 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyUninstallButton)</Button>
86 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 86 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
87 <Text>#(loc.ModifyCancelButton)</Text> 87 <Text>#(loc.ModifyCancelButton)</Text>
88 <CloseWindowAction /> 88 <CloseWindowAction />
diff --git a/src/ext/Bal/stdbas/Resources/HyperlinkTheme.xml b/src/ext/Bal/stdbas/Resources/HyperlinkTheme.xml
index f7a77629..faeb8ce8 100644
--- a/src/ext/Bal/stdbas/Resources/HyperlinkTheme.xml
+++ b/src/ext/Bal/stdbas/Resources/HyperlinkTheme.xml
@@ -31,7 +31,7 @@
31 <Text>#(loc.InstallOptionsButton)</Text> 31 <Text>#(loc.InstallOptionsButton)</Text>
32 <ChangePageAction Page="Options" /> 32 <ChangePageAction Page="Options" />
33 </Button> 33 </Button>
34 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.InstallInstallButton)</Button> 34 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.InstallInstallButton)</Button>
35 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 35 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
36 <Text>#(loc.InstallCancelButton)</Text> 36 <Text>#(loc.InstallCancelButton)</Text>
37 <CloseWindowAction /> 37 <CloseWindowAction />
@@ -68,8 +68,8 @@
68 <Page Name="Modify"> 68 <Page Name="Modify">
69 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label> 69 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label>
70 <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button> 70 <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
71 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyRepairButton)</Button> 71 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyRepairButton)</Button>
72 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyUninstallButton)</Button> 72 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyUninstallButton)</Button>
73 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 73 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
74 <Text>#(loc.ModifyCancelButton)</Text> 74 <Text>#(loc.ModifyCancelButton)</Text>
75 <CloseWindowAction /> 75 <CloseWindowAction />
diff --git a/src/ext/Bal/stdbas/Resources/RtfLargeTheme.xml b/src/ext/Bal/stdbas/Resources/RtfLargeTheme.xml
index 104ee1c8..138a8398 100644
--- a/src/ext/Bal/stdbas/Resources/RtfLargeTheme.xml
+++ b/src/ext/Bal/stdbas/Resources/RtfLargeTheme.xml
@@ -33,7 +33,7 @@
33 <Text>#(loc.InstallOptionsButton)</Text> 33 <Text>#(loc.InstallOptionsButton)</Text>
34 <ChangePageAction Page="Options" /> 34 <ChangePageAction Page="Options" />
35 </Button> 35 </Button>
36 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.InstallInstallButton)</Button> 36 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.InstallInstallButton)</Button>
37 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 37 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
38 <Text>#(loc.InstallCancelButton)</Text> 38 <Text>#(loc.InstallCancelButton)</Text>
39 <CloseWindowAction /> 39 <CloseWindowAction />
@@ -70,8 +70,8 @@
70 <Page Name="Modify"> 70 <Page Name="Modify">
71 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label> 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> 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" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyRepairButton)</Button> 73 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyRepairButton)</Button>
74 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyUninstallButton)</Button> 74 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyUninstallButton)</Button>
75 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 75 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
76 <Text>#(loc.ModifyCancelButton)</Text> 76 <Text>#(loc.ModifyCancelButton)</Text>
77 <CloseWindowAction /> 77 <CloseWindowAction />
diff --git a/src/ext/Bal/stdbas/Resources/RtfTheme.xml b/src/ext/Bal/stdbas/Resources/RtfTheme.xml
index 8a8d7ee9..f9db1bc9 100644
--- a/src/ext/Bal/stdbas/Resources/RtfTheme.xml
+++ b/src/ext/Bal/stdbas/Resources/RtfTheme.xml
@@ -31,7 +31,7 @@
31 <Text>#(loc.InstallOptionsButton)</Text> 31 <Text>#(loc.InstallOptionsButton)</Text>
32 <ChangePageAction Page="Options" /> 32 <ChangePageAction Page="Options" />
33 </Button> 33 </Button>
34 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.InstallInstallButton)</Button> 34 <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.InstallInstallButton)</Button>
35 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 35 <Button Name="InstallCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
36 <Text>#(loc.InstallCancelButton)</Text> 36 <Text>#(loc.InstallCancelButton)</Text>
37 <CloseWindowAction /> 37 <CloseWindowAction />
@@ -68,8 +68,8 @@
68 <Page Name="Modify"> 68 <Page Name="Modify">
69 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label> 69 <Label X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Label>
70 <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button> 70 <Button Name="ModifyUpdateButton" X="11" Y="-11" Width="200" Height="23" TabStop="yes" FontId="0" EnableCondition="WixStdBAUpdateAvailable" HideWhenDisabled="yes">#(loc.UpdateButton)</Button>
71 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyRepairButton)</Button> 71 <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyRepairButton)</Button>
72 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine"'>#(loc.ModifyUninstallButton)</Button> 72 <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" ElevationShieldCondition='(WixBundleAuthoredScope = 1 AND NOT WixBundleElevated) OR ((WixBundleAuthoredScope = 2 OR WixBundleAuthoredScope = 3) AND WixStdBAScope = "PerMachine")'>#(loc.ModifyUninstallButton)</Button>
73 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0"> 73 <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">
74 <Text>#(loc.ModifyCancelButton)</Text> 74 <Text>#(loc.ModifyCancelButton)</Text>
75 <CloseWindowAction /> 75 <CloseWindowAction />
diff --git a/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp b/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp
index e0b03f98..85ff8263 100644
--- a/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp
+++ b/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp
@@ -3967,8 +3967,6 @@ private:
3967 // Enable disable controls per-page. 3967 // Enable disable controls per-page.
3968 if (m_rgdwPageIds[WIXSTDBA_PAGE_INSTALL] == dwNewPageId) // on the "Install" page, ensure the install button is enabled/disabled correctly. 3968 if (m_rgdwPageIds[WIXSTDBA_PAGE_INSTALL] == dwNewPageId) // on the "Install" page, ensure the install button is enabled/disabled correctly.
3969 { 3969 {
3970 ThemeControlElevates(m_pControlInstallButton, (m_Bundle.fPerMachine && !llElevated));
3971
3972 // If the EULA control exists, show it only if a license URL is provided as well. 3970 // If the EULA control exists, show it only if a license URL is provided as well.
3973 if (m_pControlEulaHyperlink) 3971 if (m_pControlEulaHyperlink)
3974 { 3972 {
@@ -3982,9 +3980,6 @@ private:
3982 } 3980 }
3983 else if (m_rgdwPageIds[WIXSTDBA_PAGE_MODIFY] == dwNewPageId) 3981 else if (m_rgdwPageIds[WIXSTDBA_PAGE_MODIFY] == dwNewPageId)
3984 { 3982 {
3985 ThemeControlElevates(m_pControlRepairButton, (m_Bundle.fPerMachine && !llElevated));
3986 ThemeControlElevates(m_pControlUninstallButton, (m_Bundle.fPerMachine && !llElevated));
3987
3988 ThemeControlEnable(m_pControlRepairButton, !m_fSuppressRepair); 3983 ThemeControlEnable(m_pControlRepairButton, !m_fSuppressRepair);
3989 } 3984 }
3990 else if (m_rgdwPageIds[WIXSTDBA_PAGE_SUCCESS] == dwNewPageId) // on the "Success" page, check if the restart or launch button should be enabled. 3985 else if (m_rgdwPageIds[WIXSTDBA_PAGE_SUCCESS] == dwNewPageId) // on the "Success" page, check if the restart or launch button should be enabled.