aboutsummaryrefslogtreecommitdiff
path: root/src/ext
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2026-01-06 22:59:35 -0800
committerRob Mensching <rob@firegiant.com>2026-01-07 16:25:33 -0800
commitb337ce4678a5c66c7a2edc2bf9f87a71b4916b1b (patch)
treea0d807245cd7019dde71051bd9e8de9a39e313a4 /src/ext
parent164ea64ea05c1298979cadda1842feaf86a1bda9 (diff)
downloadwix-main.tar.gz
wix-main.tar.bz2
wix-main.zip
Provide Bundle Icon in BA container and update wixstdba to use itHEADmain
Fixes 8104
Diffstat (limited to 'src/ext')
-rw-r--r--src/ext/Bal/stdbas/WixInternalUIBootstrapperApplication.cpp25
-rw-r--r--src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp33
-rw-r--r--src/ext/Bal/stdbas/precomp.h6
-rw-r--r--src/ext/Bal/stdbas/stdbas.cpp50
-rw-r--r--src/ext/Bal/stdbas/stdbas.vcxproj3
-rw-r--r--src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs18
-rw-r--r--src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/.Data/test.icobin0 -> 766 bytes
-rw-r--r--src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/BootstrapperApplicationId.wxs3
-rw-r--r--src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/Bundle.wxs3
-rw-r--r--src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayFilesInUseDialogConditionBundle.wxs3
-rw-r--r--src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayInternalUIConditionBundle.wxs3
11 files changed, 126 insertions, 21 deletions
diff --git a/src/ext/Bal/stdbas/WixInternalUIBootstrapperApplication.cpp b/src/ext/Bal/stdbas/WixInternalUIBootstrapperApplication.cpp
index 270ce40c..bae098d4 100644
--- a/src/ext/Bal/stdbas/WixInternalUIBootstrapperApplication.cpp
+++ b/src/ext/Bal/stdbas/WixInternalUIBootstrapperApplication.cpp
@@ -557,14 +557,19 @@ private:
557 HRESULT CreateMainWindow() 557 HRESULT CreateMainWindow()
558 { 558 {
559 HRESULT hr = S_OK; 559 HRESULT hr = S_OK;
560 WNDCLASSW wc = { }; 560 WNDCLASSEXW wc = { };
561 DWORD dwWindowStyle = WS_POPUP; 561 DWORD dwWindowStyle = WS_POPUP;
562 562
563 LoadBundleIcon(m_hModule, &m_hIcon, &m_hSmallIcon);
564
565 wc.cbSize = sizeof(WNDCLASSEXW);
563 wc.lpfnWndProc = CWixInternalUIBootstrapperApplication::WndProc; 566 wc.lpfnWndProc = CWixInternalUIBootstrapperApplication::WndProc;
564 wc.hInstance = m_hModule; 567 wc.hInstance = m_hModule;
565 wc.lpszClassName = WIXIUIBA_WINDOW_CLASS; 568 wc.lpszClassName = WIXIUIBA_WINDOW_CLASS;
569 wc.hIcon = m_hIcon;
570 wc.hIconSm = m_hSmallIcon;
566 571
567 if (!::RegisterClassW(&wc)) 572 if (!::RegisterClassExW(&wc))
568 { 573 {
569 ExitWithLastError(hr, "Failed to register window."); 574 ExitWithLastError(hr, "Failed to register window.");
570 } 575 }
@@ -601,6 +606,18 @@ private:
601 ::UnregisterClassW(WIXIUIBA_WINDOW_CLASS, m_hModule); 606 ::UnregisterClassW(WIXIUIBA_WINDOW_CLASS, m_hModule);
602 m_fRegistered = FALSE; 607 m_fRegistered = FALSE;
603 } 608 }
609
610 if (m_hIcon)
611 {
612 ::DestroyIcon(m_hIcon);
613 m_hIcon = NULL;
614 }
615
616 if (m_hSmallIcon)
617 {
618 ::DestroyIcon(m_hSmallIcon);
619 m_hSmallIcon = NULL;
620 }
604 } 621 }
605 622
606 // 623 //
@@ -807,6 +824,8 @@ public:
807 m_sczFailedMessage = NULL; 824 m_sczFailedMessage = NULL;
808 825
809 m_hUiThread = NULL; 826 m_hUiThread = NULL;
827 m_hIcon = NULL;
828 m_hSmallIcon = NULL;
810 m_fRegistered = FALSE; 829 m_fRegistered = FALSE;
811 m_hWnd = NULL; 830 m_hWnd = NULL;
812 831
@@ -847,6 +866,8 @@ private:
847 LPWSTR m_sczConfirmCloseMessage; 866 LPWSTR m_sczConfirmCloseMessage;
848 867
849 HANDLE m_hUiThread; 868 HANDLE m_hUiThread;
869 HICON m_hIcon;
870 HICON m_hSmallIcon;
850 BOOL m_fRegistered; 871 BOOL m_fRegistered;
851 HWND m_hWnd; 872 HWND m_hWnd;
852 873
diff --git a/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp b/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp
index ddb2d1c5..c1e8b2b3 100644
--- a/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp
+++ b/src/ext/Bal/stdbas/WixStandardBootstrapperApplication.cpp
@@ -3301,26 +3301,24 @@ private:
3301 HRESULT CreateMainWindow() 3301 HRESULT CreateMainWindow()
3302 { 3302 {
3303 HRESULT hr = S_OK; 3303 HRESULT hr = S_OK;
3304 WNDCLASSW wc = { }; 3304 WNDCLASSEXW wc = { sizeof(WNDCLASSEXW)};
3305 DWORD dwWindowStyle = 0; 3305 DWORD dwWindowStyle = 0;
3306 int x = CW_USEDEFAULT; 3306 int x = CW_USEDEFAULT;
3307 int y = CW_USEDEFAULT; 3307 int y = CW_USEDEFAULT;
3308 POINT ptCursor = { }; 3308 POINT ptCursor = { };
3309 3309
3310 ThemeInitializeWindowClass(m_pTheme, &wc, CWixStandardBootstrapperApplication::WndProc, m_hModule, WIXSTDBA_WINDOW_CLASS); 3310 ThemeInitializeWindowClassEx(m_pTheme, &wc, CWixStandardBootstrapperApplication::WndProc, m_hModule, WIXSTDBA_WINDOW_CLASS);
3311 3311
3312 // If the theme did not provide an icon, try using the icon from the bundle engine. 3312 // If the theme did not provide an icon, try using the icon from the bundle then fallback to the bundle engine.
3313 if (!wc.hIcon) 3313 if (!wc.hIcon)
3314 { 3314 {
3315 HMODULE hBootstrapperEngine = ::GetModuleHandleW(NULL); 3315 LoadBundleIcon(m_hModule, &m_hIcon, &m_hSmallIcon);
3316 if (hBootstrapperEngine) 3316 wc.hIcon = m_hIcon;
3317 { 3317 wc.hIconSm = m_hSmallIcon;
3318 wc.hIcon = ::LoadIconW(hBootstrapperEngine, MAKEINTRESOURCEW(1));
3319 }
3320 } 3318 }
3321 3319
3322 // Register the window class and create the window. 3320 // Register the window class and create the window.
3323 if (!::RegisterClassW(&wc)) 3321 if (!::RegisterClassExW(&wc))
3324 { 3322 {
3325 ExitWithLastError(hr, "Failed to register window."); 3323 ExitWithLastError(hr, "Failed to register window.");
3326 } 3324 }
@@ -3358,7 +3356,6 @@ private:
3358 return hr; 3356 return hr;
3359 } 3357 }
3360 3358
3361
3362 // 3359 //
3363 // InitializeTaskbarButton - initializes taskbar button for progress. 3360 // InitializeTaskbarButton - initializes taskbar button for progress.
3364 // 3361 //
@@ -3397,6 +3394,18 @@ private:
3397 ::UnregisterClassW(WIXSTDBA_WINDOW_CLASS, m_hModule); 3394 ::UnregisterClassW(WIXSTDBA_WINDOW_CLASS, m_hModule);
3398 m_fRegistered = FALSE; 3395 m_fRegistered = FALSE;
3399 } 3396 }
3397
3398 if (m_hIcon)
3399 {
3400 ::DestroyIcon(m_hIcon);
3401 m_hIcon = NULL;
3402 }
3403
3404 if (m_hSmallIcon)
3405 {
3406 ::DestroyIcon(m_hSmallIcon);
3407 m_hSmallIcon = NULL;
3408 }
3400 } 3409 }
3401 3410
3402 3411
@@ -4822,6 +4831,8 @@ public:
4822 m_pTheme = NULL; 4831 m_pTheme = NULL;
4823 memset(m_rgdwPageIds, 0, sizeof(m_rgdwPageIds)); 4832 memset(m_rgdwPageIds, 0, sizeof(m_rgdwPageIds));
4824 m_hUiThread = NULL; 4833 m_hUiThread = NULL;
4834 m_hIcon = NULL;
4835 m_hSmallIcon = NULL;
4825 m_fRegistered = FALSE; 4836 m_fRegistered = FALSE;
4826 m_hWnd = NULL; 4837 m_hWnd = NULL;
4827 4838
@@ -5110,6 +5121,8 @@ private:
5110 THEME_ASSIGN_CONTROL_ID m_rgInitControls[LAST_WIXSTDBA_CONTROL - WIXSTDBA_FIRST_ASSIGN_CONTROL_ID]; 5121 THEME_ASSIGN_CONTROL_ID m_rgInitControls[LAST_WIXSTDBA_CONTROL - WIXSTDBA_FIRST_ASSIGN_CONTROL_ID];
5111 DWORD m_rgdwPageIds[countof(vrgwzPageNames)]; 5122 DWORD m_rgdwPageIds[countof(vrgwzPageNames)];
5112 HANDLE m_hUiThread; 5123 HANDLE m_hUiThread;
5124 HICON m_hIcon;
5125 HICON m_hSmallIcon;
5113 BOOL m_fRegistered; 5126 BOOL m_fRegistered;
5114 HWND m_hWnd; 5127 HWND m_hWnd;
5115 5128
diff --git a/src/ext/Bal/stdbas/precomp.h b/src/ext/Bal/stdbas/precomp.h
index a6c4cfe4..0faf1548 100644
--- a/src/ext/Bal/stdbas/precomp.h
+++ b/src/ext/Bal/stdbas/precomp.h
@@ -42,3 +42,9 @@
42 42
43#include "stdbas.messages.h" 43#include "stdbas.messages.h"
44#include "WixStandardBootstrapperApplication.h" 44#include "WixStandardBootstrapperApplication.h"
45
46HRESULT LoadBundleIcon(
47 __in HMODULE hModule,
48 __out HICON* phIcon,
49 __out HICON* phSmallIcon
50);
diff --git a/src/ext/Bal/stdbas/stdbas.cpp b/src/ext/Bal/stdbas/stdbas.cpp
new file mode 100644
index 00000000..909bdc23
--- /dev/null
+++ b/src/ext/Bal/stdbas/stdbas.cpp
@@ -0,0 +1,50 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3#include "precomp.h"
4
5static const LPCWSTR WIX_BUNDLE_ICON_FILENAME = L"WixBundle.ico";
6
7
8//
9// LoadBundleIcon - loads the icon that was (optionally) authored in the bundle otherwise use the one embedded in the bootstrapper application.
10//
11HRESULT LoadBundleIcon(
12 __in HMODULE hModule,
13 __out HICON* phIcon,
14 __out HICON* phSmallIcon
15)
16{
17 HRESULT hr = S_OK;
18 LPWSTR sczIconPath = NULL;
19 int nIconWidth = ::GetSystemMetrics(SM_CXICON);
20 int nIconHeight = ::GetSystemMetrics(SM_CYICON);
21 int nSmallIconWidth = ::GetSystemMetrics(SM_CXSMICON);
22 int nSmallIconHeight = ::GetSystemMetrics(SM_CYSMICON);
23 HICON hIcon = NULL;
24 HICON hSmallIcon = NULL;
25
26 // First look for the optional authored bundle icon.
27 hr = PathRelativeToModule(&sczIconPath, WIX_BUNDLE_ICON_FILENAME, hModule);
28 ExitOnFailure(hr, "Failed to get path to bundle icon: %ls", WIX_BUNDLE_ICON_FILENAME);
29
30 if (FileExistsEx(sczIconPath, NULL))
31 {
32 hIcon = reinterpret_cast<HICON>(::LoadImageW(NULL, sczIconPath, IMAGE_ICON, nIconWidth, nIconHeight, LR_LOADFROMFILE));
33
34 hSmallIcon = reinterpret_cast<HICON>(::LoadImageW(NULL, sczIconPath, IMAGE_ICON, nSmallIconWidth, nSmallIconHeight, LR_LOADFROMFILE));
35 }
36 else // fallback to the first icon resource in the bootstrapper application.
37 {
38 hIcon = reinterpret_cast<HICON>(::LoadImageW(hModule, MAKEINTRESOURCEW(1), IMAGE_ICON, nIconWidth, nIconHeight, LR_DEFAULTCOLOR));
39
40 hSmallIcon = reinterpret_cast<HICON>(::LoadImageW(hModule, MAKEINTRESOURCEW(1), IMAGE_ICON, nSmallIconWidth, nSmallIconHeight, LR_DEFAULTCOLOR));
41 }
42
43 *phIcon = hIcon;
44 *phSmallIcon = hSmallIcon;
45
46LExit:
47 ReleaseStr(sczIconPath);
48
49 return hr;
50}
diff --git a/src/ext/Bal/stdbas/stdbas.vcxproj b/src/ext/Bal/stdbas/stdbas.vcxproj
index fb2b0682..ba990af7 100644
--- a/src/ext/Bal/stdbas/stdbas.vcxproj
+++ b/src/ext/Bal/stdbas/stdbas.vcxproj
@@ -60,6 +60,7 @@
60 <ClCompile Include="precomp.cpp"> 60 <ClCompile Include="precomp.cpp">
61 <PrecompiledHeader>Create</PrecompiledHeader> 61 <PrecompiledHeader>Create</PrecompiledHeader>
62 </ClCompile> 62 </ClCompile>
63 <ClCompile Include="stdbas.cpp" />
63 <ClCompile Include="WixInternalUIBootstrapperApplication.cpp" /> 64 <ClCompile Include="WixInternalUIBootstrapperApplication.cpp" />
64 <ClCompile Include="WixStandardBootstrapperApplication.cpp" /> 65 <ClCompile Include="WixStandardBootstrapperApplication.cpp" />
65 </ItemGroup> 66 </ItemGroup>
@@ -80,4 +81,4 @@ rc.exe -fo "$(OutDir)stdbas.res" "$(IntDir)stdbas.messages.rc"</Command>
80 </ItemGroup> 81 </ItemGroup>
81 82
82 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> 83 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
83</Project> 84</Project> \ No newline at end of file
diff --git a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs
index 576e7c6c..e599b8e2 100644
--- a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs
+++ b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/BalExtensionFixture.cs
@@ -24,7 +24,8 @@ namespace WixToolsetTest.BootstrapperApplications
24 { 24 {
25 var baseFolder = fs.GetFolder(); 25 var baseFolder = fs.GetFolder();
26 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe"); 26 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
27 var bundleSourceFolder = TestData.Get(@"TestData\WixStdBa"); 27 var bundleSourceFolder = TestData.Get(@"TestData", "WixStdBa");
28 var dataFolder = TestData.Get(@"TestData", ".Data");
28 var intermediateFolder = Path.Combine(baseFolder, "obj"); 29 var intermediateFolder = Path.Combine(baseFolder, "obj");
29 var baFolderPath = Path.Combine(baseFolder, "ba"); 30 var baFolderPath = Path.Combine(baseFolder, "ba");
30 var extractFolderPath = Path.Combine(baseFolder, "extract"); 31 var extractFolderPath = Path.Combine(baseFolder, "extract");
@@ -36,6 +37,7 @@ namespace WixToolsetTest.BootstrapperApplications
36 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"), 37 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"),
37 "-intermediateFolder", intermediateFolder, 38 "-intermediateFolder", intermediateFolder,
38 "-bindpath", Path.Combine(bundleSourceFolder, "data"), 39 "-bindpath", Path.Combine(bundleSourceFolder, "data"),
40 "-bindpath", dataFolder,
39 "-o", bundleFile, 41 "-o", bundleFile,
40 }); 42 });
41 compileResult.AssertSuccess(); 43 compileResult.AssertSuccess();
@@ -62,7 +64,8 @@ namespace WixToolsetTest.BootstrapperApplications
62 { 64 {
63 var baseFolder = fs.GetFolder(); 65 var baseFolder = fs.GetFolder();
64 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe"); 66 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
65 var bundleSourceFolder = TestData.Get(@"TestData\WixStdBa"); 67 var bundleSourceFolder = TestData.Get(@"TestData", "WixStdBa");
68 var dataFolder = TestData.Get(@"TestData", ".Data");
66 var intermediateFolder = Path.Combine(baseFolder, "obj"); 69 var intermediateFolder = Path.Combine(baseFolder, "obj");
67 var baFolderPath = Path.Combine(baseFolder, "ba"); 70 var baFolderPath = Path.Combine(baseFolder, "ba");
68 var extractFolderPath = Path.Combine(baseFolder, "extract"); 71 var extractFolderPath = Path.Combine(baseFolder, "extract");
@@ -74,6 +77,7 @@ namespace WixToolsetTest.BootstrapperApplications
74 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"), 77 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"),
75 "-intermediateFolder", intermediateFolder, 78 "-intermediateFolder", intermediateFolder,
76 "-bindpath", Path.Combine(bundleSourceFolder, "data"), 79 "-bindpath", Path.Combine(bundleSourceFolder, "data"),
80 "-bindpath", dataFolder,
77 "-o", bundleFile, 81 "-o", bundleFile,
78 }); 82 });
79 compileResult.AssertSuccess(); 83 compileResult.AssertSuccess();
@@ -101,6 +105,7 @@ namespace WixToolsetTest.BootstrapperApplications
101 var baseFolder = fs.GetFolder(); 105 var baseFolder = fs.GetFolder();
102 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe"); 106 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
103 var bundleSourceFolder = TestData.Get("TestData", "WixStdBa"); 107 var bundleSourceFolder = TestData.Get("TestData", "WixStdBa");
108 var dataFolder = TestData.Get(@"TestData", ".Data");
104 var intermediateFolder = Path.Combine(baseFolder, "obj"); 109 var intermediateFolder = Path.Combine(baseFolder, "obj");
105 var baFolderPath = Path.Combine(baseFolder, "ba"); 110 var baFolderPath = Path.Combine(baseFolder, "ba");
106 var extractFolderPath = Path.Combine(baseFolder, "extract"); 111 var extractFolderPath = Path.Combine(baseFolder, "extract");
@@ -112,6 +117,7 @@ namespace WixToolsetTest.BootstrapperApplications
112 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"), 117 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"),
113 "-intermediateFolder", intermediateFolder, 118 "-intermediateFolder", intermediateFolder,
114 "-bindpath", Path.Combine(bundleSourceFolder, "data"), 119 "-bindpath", Path.Combine(bundleSourceFolder, "data"),
120 "-bindpath", dataFolder,
115 "-o", bundleFile, 121 "-o", bundleFile,
116 }); 122 });
117 compileResult.AssertSuccess(); 123 compileResult.AssertSuccess();
@@ -141,7 +147,8 @@ namespace WixToolsetTest.BootstrapperApplications
141 { 147 {
142 var baseFolder = fs.GetFolder(); 148 var baseFolder = fs.GetFolder();
143 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe"); 149 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
144 var bundleSourceFolder = TestData.Get(@"TestData\Overridable"); 150 var bundleSourceFolder = TestData.Get(@"TestData", "Overridable");
151 var dataFolder = TestData.Get(@"TestData", ".Data");
145 var intermediateFolder = Path.Combine(baseFolder, "obj"); 152 var intermediateFolder = Path.Combine(baseFolder, "obj");
146 var baFolderPath = Path.Combine(baseFolder, "ba"); 153 var baFolderPath = Path.Combine(baseFolder, "ba");
147 var extractFolderPath = Path.Combine(baseFolder, "extract"); 154 var extractFolderPath = Path.Combine(baseFolder, "extract");
@@ -152,6 +159,7 @@ namespace WixToolsetTest.BootstrapperApplications
152 Path.Combine(bundleSourceFolder, "Bundle.wxs"), 159 Path.Combine(bundleSourceFolder, "Bundle.wxs"),
153 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"), 160 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"),
154 "-intermediateFolder", intermediateFolder, 161 "-intermediateFolder", intermediateFolder,
162 "-bindpath", dataFolder,
155 "-o", bundleFile, 163 "-o", bundleFile,
156 }); 164 });
157 compileResult.AssertSuccess(); 165 compileResult.AssertSuccess();
@@ -182,7 +190,8 @@ namespace WixToolsetTest.BootstrapperApplications
182 { 190 {
183 var baseFolder = fs.GetFolder(); 191 var baseFolder = fs.GetFolder();
184 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe"); 192 var bundleFile = Path.Combine(baseFolder, "bin", "test.exe");
185 var bundleSourceFolder = TestData.Get(@"TestData\WixStdBa"); 193 var bundleSourceFolder = TestData.Get(@"TestData", "WixStdBa");
194 var dataFolder = TestData.Get(@"TestData", ".Data");
186 var intermediateFolder = Path.Combine(baseFolder, "obj"); 195 var intermediateFolder = Path.Combine(baseFolder, "obj");
187 196
188 var compileResult = WixRunner.Execute(new[] 197 var compileResult = WixRunner.Execute(new[]
@@ -191,6 +200,7 @@ namespace WixToolsetTest.BootstrapperApplications
191 Path.Combine(bundleSourceFolder, "Bundle.wxs"), 200 Path.Combine(bundleSourceFolder, "Bundle.wxs"),
192 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"), 201 "-ext", TestData.Get(@"WixToolset.BootstrapperApplications.wixext.dll"),
193 "-intermediateFolder", intermediateFolder, 202 "-intermediateFolder", intermediateFolder,
203 "-bindpath", dataFolder,
194 "-o", bundleFile, 204 "-o", bundleFile,
195 }); 205 });
196 compileResult.AssertSuccess(); 206 compileResult.AssertSuccess();
diff --git a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/.Data/test.ico b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/.Data/test.ico
new file mode 100644
index 00000000..906ce324
--- /dev/null
+++ b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/.Data/test.ico
Binary files differ
diff --git a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/BootstrapperApplicationId.wxs b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/BootstrapperApplicationId.wxs
index e1945f53..44c15999 100644
--- a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/BootstrapperApplicationId.wxs
+++ b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/BootstrapperApplicationId.wxs
@@ -1,7 +1,8 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" 2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
3 xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal"> 3 xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
4 <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"> 4 <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"
5 IconSourceFile="test.ico">
5 <BootstrapperApplication Id="Custom"> 6 <BootstrapperApplication Id="Custom">
6 <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" /> 7 <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" />
7 </BootstrapperApplication> 8 </BootstrapperApplication>
diff --git a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/Bundle.wxs b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/Bundle.wxs
index c17b53ff..e0346900 100644
--- a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/Bundle.wxs
+++ b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/Bundle.wxs
@@ -1,7 +1,8 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" 2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
3 xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal"> 3 xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
4 <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"> 4 <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"
5 IconSourceFile="test.ico">
5 <BootstrapperApplication> 6 <BootstrapperApplication>
6 <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" /> 7 <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" />
7 </BootstrapperApplication> 8 </BootstrapperApplication>
diff --git a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayFilesInUseDialogConditionBundle.wxs b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayFilesInUseDialogConditionBundle.wxs
index 1041eb39..098d6f83 100644
--- a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayFilesInUseDialogConditionBundle.wxs
+++ b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayFilesInUseDialogConditionBundle.wxs
@@ -1,7 +1,8 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" 2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
3 xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal"> 3 xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
4 <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"> 4 <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"
5 IconSourceFile="test.ico">
5 <BootstrapperApplication> 6 <BootstrapperApplication>
6 <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" /> 7 <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" />
7 </BootstrapperApplication> 8 </BootstrapperApplication>
diff --git a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayInternalUIConditionBundle.wxs b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayInternalUIConditionBundle.wxs
index f08cfe6a..2dea66fd 100644
--- a/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayInternalUIConditionBundle.wxs
+++ b/src/ext/Bal/test/WixToolsetTest.BootstrapperApplications/TestData/WixStdBa/DisplayInternalUIConditionBundle.wxs
@@ -1,7 +1,8 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" 2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
3 xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal"> 3 xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal">
4 <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"> 4 <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"
5 IconSourceFile="test.ico">
5 <BootstrapperApplication> 6 <BootstrapperApplication>
6 <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" /> 7 <bal:WixStandardBootstrapperApplication LicenseUrl="http://wixtoolset.org/about/license/" Theme="hyperlinkLicense" />
7 </BootstrapperApplication> 8 </BootstrapperApplication>