Initial commit

This commit is contained in:
2014-11-12 19:36:56 -05:00
commit 58324fbbcc
91 changed files with 7909 additions and 0 deletions

82
BalExtensionExt.sln Normal file
View File

@@ -0,0 +1,82 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wixextba", "wixstdba\wixstdba.vcxproj", "{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "BalExtension", "wixlib\BalExtension.wixproj", "{3444D952-F21C-496F-AB6B-56435BFD0787}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBalExtensionExt", "wixext\WixBalExtensionExt.csproj", "{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}"
ProjectSection(ProjectDependencies) = postProject
{3444D952-F21C-496F-AB6B-56435BFD0787} = {3444D952-F21C-496F-AB6B-56435BFD0787}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bafunctions", "bafunctions\bafunctions.vcxproj", "{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Any CPU.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Any CPU.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Win32.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|Win32.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Debug|x86.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Any CPU.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Mixed Platforms.Build.0 = Release|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Win32.ActiveCfg = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|Win32.Build.0 = Debug|Win32
{41085A22-E6AA-4E8B-AB1B-DDEE0DC89DFA}.Release|x86.ActiveCfg = Debug|Win32
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Any CPU.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Mixed Platforms.Build.0 = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|Win32.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|x86.ActiveCfg = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Debug|x86.Build.0 = Debug|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Any CPU.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Mixed Platforms.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Mixed Platforms.Build.0 = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|Win32.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|x86.ActiveCfg = Release|x86
{3444D952-F21C-496F-AB6B-56435BFD0787}.Release|x86.Build.0 = Release|x86
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|Win32.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Debug|x86.ActiveCfg = Debug|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Any CPU.Build.0 = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|Win32.ActiveCfg = Release|Any CPU
{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}.Release|x86.ActiveCfg = Release|Any CPU
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Debug|Any CPU.ActiveCfg = Debug|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Debug|Win32.ActiveCfg = Debug|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Debug|Win32.Build.0 = Debug|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Debug|x86.ActiveCfg = Debug|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Debug|x86.Build.0 = Debug|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Release|Any CPU.ActiveCfg = Release|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Release|Mixed Platforms.ActiveCfg = Release|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Release|Mixed Platforms.Build.0 = Release|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Release|Win32.ActiveCfg = Release|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Release|Win32.Build.0 = Release|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Release|x86.ActiveCfg = Release|Win32
{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

63
Examples/Build.bat Normal file
View File

@@ -0,0 +1,63 @@
@echo off
path=%wix%\bin;%path%
rd obj /q/s 2>nul 1>nul
md obj 1>nul 2>nul
echo Building examples...
Call :build Setup msi
Call :build Bundle1 exe
Call :build Setup msi
Call :build Bundle2 exe
Call :build Setup msi
Call :build Bundle3 exe
Call :build Setup msi
Call :build Bundle4 exe
Call :build Setup msi
Call :build Bundle5 exe
Call :build Setup msi
Call :build Bundle6 exe
Call :build Setup msi
Call :build Bundle7 exe
Call :build Setup msi
Call :build Bundle8 exe
Call :build Setup msi
Call :build Bundle9 exe
Call :build Setup msi
Call :build Bundle11 exe
Call :build Setup msi
Call :build Bundle10 exe
echo.
echo Build complete
echo.
goto :EOF
REM *****************************************************************
REM End of Main
REM *****************************************************************
REM *****************************************************************
REM Build WiX code
REM *****************************************************************
:build
candle -nologo -ext WixUtilExtension -ext WixNetFxExtension -ext ..\build\WixBalExtensionExt.dll -out obj\ %1.wxs
if %errorlevel% neq 0 (
echo Candle error: %errorlevel%
pause
goto :EOF
)
light -nologo -spdb -ext WixUtilExtension -ext WixNetFxExtension -ext ..\build\WixBalExtensionExt.dll obj\%1.wixobj -o %1.%2
if %errorlevel% neq 0 (
echo Light error: %errorlevel%
pause
goto :EOF
)
rd obj /q/s 2>nul 1>nul
goto :EOF
REM *****************************************************************

35
Examples/Bundle1.wxs Normal file
View File

@@ -0,0 +1,35 @@
<?xml version="1.0"?>
<!--
This example demonstrates the HyperlinkLicense UI built in to WixBalExtensionExt.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<Update Location='http://wixtoolset.org/releases/feed/v3.7' />
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<Payload SourceFile="Resource\License.htm" Compressed="yes" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="License.htm" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Variable Name="InstallFolder2" Type="string" Value="[WindowsVolume]Database" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

46
Examples/Bundle10.wxs Normal file
View File

@@ -0,0 +1,46 @@
<?xml version="1.0"?>
<!--
This example demonstrates the Hyperlink2License UI built in to WixBalExtensionExt.
It also shows how to use the custom action extension.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<!-- Note: the name attibute must be "bafunctions.dll" but the source can be anything -->
<Payload Name="bafunctions.dll" Compressed="yes" SourceFile="bafunctions.dll" />
<Payload SourceFile="Resource\LogoSide.png" />
<Payload SourceFile="Resource\Logo.png" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="" />
<WixVariable Id="WixExtbaThemeXml" Value="Resource\Bundle3Theme.xml" />
<WixVariable Id="WixExtbaThemeWxl" Value="Resource\HyperlinkTheme.wxl" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Variable Name="InstallFolder2" Type="string" Value="[WindowsVolume]Database" />
<Variable Name="RadioButton1" Type="numeric" Value="0" />
<Variable Name="RadioButton2" Type="numeric" Value="1" />
<Variable Name="RadioButton3" Type="numeric" Value="0" />
<Variable Name="RadioButton4" Type="numeric" Value="0" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
<MsiProperty Name="RadioButton" Value="[RadioButton]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

53
Examples/Bundle11.wxs Normal file
View File

@@ -0,0 +1,53 @@
<?xml version="1.0"?>
<!--
This example demonstrates the Hyperlink2License UI built in to WixBalExtensionExt.
It also shows how to use the custom action extension.
Delayed OnDetect() to show splash screen.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
SplashScreenSourceFile="Resource\SplashScreen.bmp"
AboutUrl="http://wixtoolset.org">
<!-- This will delay the start by the time specified (in milloseconds) -->
<Variable Name="DelayStart" Type="numeric" Value="1000" />
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<!-- Note: the name attibute must be "bafunctions.dll" but the source can be anything -->
<Payload Name="bafunctions.dll" Compressed="yes" SourceFile="bafunctions.dll" />
<Payload SourceFile="Resource\LogoSide.png" />
<Payload SourceFile="Resource\Logo.png" />
<Payload Name="1031\thm.wxl" Compressed="yes" SourceFile="Resource\1031\HyperlinkTheme.wxl" />
<Payload Name="2057\thm.wxl" Compressed="yes" SourceFile="Resource\2057\HyperlinkTheme.wxl" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="" />
<WixVariable Id="WixExtbaThemeXml" Value="Resource\Bundle3Theme.xml" />
<WixVariable Id="WixExtbaThemeWxl" Value="Resource\HyperlinkLocaleTheme.wxl" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Variable Name="InstallFolder2" Type="string" Value="[WindowsVolume]Database" />
<Variable Name="RadioButton1" Type="numeric" Value="0" />
<Variable Name="RadioButton2" Type="numeric" Value="1" />
<Variable Name="RadioButton3" Type="numeric" Value="0" />
<Variable Name="RadioButton4" Type="numeric" Value="0" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
<MsiProperty Name="RadioButton" Value="[RadioButton]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

53
Examples/Bundle2.wxs Normal file
View File

@@ -0,0 +1,53 @@
<?xml version="1.0"?>
<!--
This example demonstrates the use of an external theme file to create the same UI as
Hyperlink2License built in to WixBalExtensionExt.
It also shows the use of two folder selections and radio buttons on the options page.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<Update Location="http://wixtoolset.org/releases/feed/v3.7"/>
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<Payload SourceFile="Resource\License.htm" />
<Payload SourceFile="Resource\LogoSide.png" />
<Payload SourceFile="Resource\Logo.png" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="License.htm" />
<WixVariable Id="WixExtbaThemeXml" Value="Resource\Bundle2Theme.xml" />
<WixVariable Id="WixExtbaThemeWxl" Value="Resource\HyperlinkTheme.wxl" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Variable Name="InstallFolder2" Type="string" Value="[WindowsVolume]Database" />
<Variable Name="RadioButton1" Type="numeric" Value="1" />
<Variable Name="RadioButton2" Type="numeric" Value="0" />
<Variable Name="RadioButton3" Type="numeric" Value="0" />
<Variable Name="RadioButton4" Type="numeric" Value="0" />
<Variable Name="FolderEditbox2State" Type="string" Value="disable" />
<Variable Name="BrowseButton2State" Type="string" Value="disable" />
<!-- Disable Option 4 -->
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\**NoValue**" Value="**NoValue**" Variable="RadioButton4" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

48
Examples/Bundle3.wxs Normal file
View File

@@ -0,0 +1,48 @@
<?xml version="1.0"?>
<!--
This example demonstrates the use of an external theme file to create the same UI as
Hyperlink2License built in to WixBalExtensionExt.
It also shows the use of radio buttons install page and a textbox on the options page.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<Payload SourceFile="Resource\License.htm" />
<Payload SourceFile="Resource\LogoSide.png" />
<Payload SourceFile="Resource\Logo.png" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="License.htm" />
<WixVariable Id="WixExtbaThemeXml" Value="Resource\Bundle3Theme.xml" />
<WixVariable Id="WixExtbaThemeWxl" Value="Resource\HyperlinkTheme.wxl" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Variable Name="InstallFolder2" Type="string" Value="[WindowsVolume]Database" />
<Variable Name="RadioButton1" Type="numeric" Value="0" />
<Variable Name="RadioButton2" Type="numeric" Value="1" />
<Variable Name="RadioButton3" Type="numeric" Value="0" />
<Variable Name="RadioButton4" Type="numeric" Value="0" />
<Variable Name="Username" Type="string" Value="Value of Username variable" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
<MsiProperty Name="USERNAME" Value="[Username]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

42
Examples/Bundle4.wxs Normal file
View File

@@ -0,0 +1,42 @@
<?xml version="1.0"?>
<!--
This example demonstrates the use of an external theme file to create the same UI as
Hyperlink2License built in to WixBalExtensionExt.
It also shows the use of checkboxes on the install and option pages.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<Payload SourceFile="Resource\LogoSide.png" />
<Payload SourceFile="Resource\Logo.png" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="" />
<WixVariable Id="WixExtbaThemeXml" Value="Resource\Bundle4Theme.xml" />
<WixVariable Id="WixExtbaThemeWxl" Value="Resource\HyperlinkTheme.wxl" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Variable Name="InstallFolder2" Type="string" Value="[WindowsVolume]Database" />
<Variable Name="Checkbox2" Type="numeric" Value="1" />
<Variable Name="Checkbox3" Type="numeric" Value="1" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

33
Examples/Bundle5.wxs Normal file
View File

@@ -0,0 +1,33 @@
<?xml version="1.0"?>
<!--
This example demonstrates the RtfLicense UI built in to WixBalExtensionExt.
It also shows how to replace the standard logo with your own.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.RtfLicense" />
<WixVariable Id="WixExtbaLicenseRtf" Value="Resource\License.rtf" />
<WixVariable Id="WixExtbaLogo" Value="Resource\Logo.png" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

32
Examples/Bundle6.wxs Normal file
View File

@@ -0,0 +1,32 @@
<?xml version="1.0"?>
<!--
This example demonstrates the Hyperlink2License UI built in to WixBalExtensionExt.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.Hyperlink2License">
<Payload SourceFile="Resource\License.htm" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="License.htm" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

33
Examples/Bundle7.wxs Normal file
View File

@@ -0,0 +1,33 @@
<?xml version="1.0"?>
<!--
This example demonstrates the HyperlinkLicense UI built in to WixBalExtensionExt.
It also shows how to disable the options page and license link.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<bal:WixExtendedBootstrapperApplication SuppressOptionsUI="yes" LicenseUrl="" />
</BootstrapperApplicationRef>
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

35
Examples/Bundle8.wxs Normal file
View File

@@ -0,0 +1,35 @@
<?xml version="1.0"?>
<!--
This example demonstrates the HyperlinkLicense UI built in to WixBalExtensionExt.
It also shows how to override the default logo.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<Payload SourceFile="Resource\License.htm" />
</BootstrapperApplicationRef>
<WixVariable Id="WixExtbaLicenseUrl" Value="License.htm" />
<WixVariable Id="WixExtbaLogo" Value="Resource\Logo.png" />
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

35
Examples/Bundle9.wxs Normal file
View File

@@ -0,0 +1,35 @@
<?xml version="1.0"?>
<!--
This example demonstrates the HyperlinkLicense UI built in to WixBalExtensionExt.
It also shows how to use the custom action extension.
-->
<Wix RequiredVersion="3.7.1224.0"
xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="Sample Burn Installation" Version="$(bal.Version(1.0))" UpgradeCode="2C81F0BB-1891-4E83-B71A-5160BA33D985"
Manufacturer="ACME"
AboutUrl="http://wixtoolset.org">
<BootstrapperApplicationRef Id="WixExtendedBootstrapperApplication.HyperlinkLicense">
<bal:WixExtendedBootstrapperApplication LicenseUrl="" />
<!-- Note: the name attibute must be "bafunctions.dll" but the source can be anything -->
<Payload Name="bafunctions.dll" Compressed="yes" SourceFile="bafunctions.dll" />
</BootstrapperApplicationRef>
<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]ACME" />
<Chain DisableSystemRestore="yes">
<PackageGroupRef Id="NetFx40Redist" />
<MsiPackage
Id="Setup"
Compressed="yes"
SourceFile="Setup.msi"
Vital="yes">
<MsiProperty Name="APPLICATIONFOLDER" Value="[InstallFolder]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="de-de" Language="1031" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[WixBundleName] Setup</String>
<String Id="Title">[WixBundleName]</String>
<String Id="InstallHeader">Welcome (de-de [UserLanguageID])</String>
<String Id="InstallMessage">Setup will install [WixBundleName] on your computer. Click install to continue, options to set the install directory or Close to exit.</String>
<String Id="InstallVersion">Version [WixBundleVersion]</String>
<String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
<String Id="HelpHeader">Setup Help</String>
<String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or creates a complete local copy of the bundle in directory. Install is the default.
/passive | /quiet - displays minimal UI with no prompts or displays no UI and no prompts. By default UI and all prompts are displayed.
/norestart - suppress any attempts to restart. By default UI will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
<String Id="HelpCloseButton">&amp;Close</String>
<String Id="InstallLicenseLinkText">[WixBundleName] &lt;a href="#"&gt;license terms&lt;/a&gt;.</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Close</String>
<String Id="InstallUpgradeLinkText">Version [WixBundleVersion] &lt;a href="#"&gt;upgrade available&lt;/a&gt;</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse...</String>
<String Id="OptionsLocationLabel2">Database location:</String>
<String Id="OptionsBrowseButton2">B&amp;rowse...</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Setup Progress</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">Modify Setup</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;Close</String>
<String Id="FailureHeader">Setup Failed</String>
<String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</String>
</WixLocalization>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-GB" Language="2057" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[WixBundleName] Setup</String>
<String Id="Title">[WixBundleName]</String>
<String Id="InstallHeader">Welcome (en-GB [UserLanguageID])</String>
<String Id="InstallMessage">Setup will install [WixBundleName] on your computer. Click install to continue, options to set the install directory or Close to exit.</String>
<String Id="InstallVersion">Version [WixBundleVersion]</String>
<String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
<String Id="HelpHeader">Setup Help</String>
<String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or creates a complete local copy of the bundle in directory. Install is the default.
/passive | /quiet - displays minimal UI with no prompts or displays no UI and no prompts. By default UI and all prompts are displayed.
/norestart - suppress any attempts to restart. By default UI will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
<String Id="HelpCloseButton">&amp;Close</String>
<String Id="InstallLicenseLinkText">[WixBundleName] &lt;a href="#"&gt;license terms&lt;/a&gt;.</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Close</String>
<String Id="InstallUpgradeLinkText">Version [WixBundleVersion] &lt;a href="#"&gt;upgrade available&lt;/a&gt;</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse...</String>
<String Id="OptionsLocationLabel2">Database location:</String>
<String Id="OptionsBrowseButton2">B&amp;rowse...</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Setup Progress</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">Modify Setup</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;Close</String>
<String Id="FailureHeader">Setup Failed</String>
<String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</String>
</WixLocalization>

View File

@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="600" Height="450" HexStyle="100a0000" FontId="0">#(loc.Caption)</Window>
<Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="1" Height="-24" Weight="500" Foreground="000000">Segoe UI</Font>
<Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font>
<Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font>
<!-- Upgrade shown on install and modify pages so reference globally -->
<Hypertext Name="UpgradeHyperlink" X="185" Y="-81" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallUpgradeLinkText)</Hypertext>
<Page Name="Help">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="32" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Text>
<Button Name="HelpCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button>
</Page>
<Page Name="Install">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="32" FontId="2" DisablePrefix="yes">#(loc.InstallHeader)</Text>
<Text X="185" Y="91" Width="-11" Height="64" FontId="3" DisablePrefix="yes">#(loc.InstallMessage)</Text><!-- HexStyle="0x800000" -->
<Hypertext Name="EulaHyperlink" X="185" Y="-111" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext>
<Text X="185" Y="-81" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<!--<Hypertext Name="UpgradeHyperlink" X="185" Y="-81" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallUpgradeLinkText)</Hypertext>-->
<Checkbox Name="EulaAcceptCheckbox" X="185" Y="-51" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
<Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
<Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
<Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="Options">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.OptionsHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="17" FontId="3">#(loc.OptionsLocationLabel)</Text>
<Editbox Name="FolderEditbox" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" />
<Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton)</Button>
<Text X="11" Y="171" Width="-11" Height="17" FontId="3">#(loc.OptionsLocationLabel2)</Text>
<Editbox Name="FolderEditbox2" X="11" Y="193" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" />
<Button Name="BrowseButton2" X="-11" Y="192" Width="75" Height="23" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.OptionsBrowseButton2)</Button>
<Text X="11" Y="221" Width="-11" Height="17" FontId="3">Select option</Text>
<Button Name="RadioButton1" X="11" Y="241" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="no" HexStyle="0x000009">Option 1</Button>
<Button Name="RadioButton2" X="11" Y="261" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="no" HexStyle="0x000009">Option 2</Button>
<Button Name="RadioButton3" X="11" Y="281" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="no" HexStyle="0x000009">Option 3</Button>
<Button Name="RadioButton4" X="11" Y="301" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="no" HexStyle="0x000009">Option 3</Button>
<Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsOkButton)</Button>
<Button Name="OptionsCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsCancelButton)</Button>
</Page>
<Page Name="Progress">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text>
<Text X="11" Y="141" Width="70" Height="17" FontId="3" DisablePrefix="yes">#(loc.ProgressLabel)</Text>
<Text Name="OverallProgressPackageText" X="85" Y="141" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OverallProgressPackageText)</Text>
<Progressbar Name="OverallCalculatedProgressbar" X="11" Y="163" Width="-11" Height="20" />
<Button Name="ProgressCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button>
</Page>
<Page Name="Modify">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
<Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
<Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
<Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button>
</Page>
<Page Name="Success">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.SuccessHeader)</Text>
<Button Name="LaunchButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button>
<Text Name="SuccessRestartText" X="185" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRestartText)</Text>
<Button Name="SuccessRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button>
<Button Name="SuccessCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button>
</Page>
<Page Name="Failure">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FailureHeader)</Text>
<Hypertext Name="FailureLogFileLink" X="185" Y="121" Width="-11" Height="68" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="185" Y="-115" Width="-11" Height="80" FontId="3" TabStop="yes" HideWhenDisabled="yes" />
<Text Name="FailureRestartText" X="185" Y="-57" Width="-11" Height="80" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
</Page>
</Theme>

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="600" Height="450" HexStyle="100a0000" FontId="0">#(loc.Caption)</Window>
<Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="1" Height="-24" Weight="500" Foreground="000000">Segoe UI</Font>
<Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font>
<Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font>
<Page Name="Help">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="32" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Text>
<Button Name="HelpCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button>
</Page>
<Page Name="Install">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="32" FontId="2" DisablePrefix="yes">#(loc.InstallHeader)</Text>
<Text X="185" Y="91" Width="-11" Height="64" FontId="3" DisablePrefix="yes">#(loc.InstallMessage)</Text><!-- HexStyle="0x800000" -->
<Text X="185" Y="171" Width="-11" Height="17" FontId="3">Select option</Text>
<!-- BS_AUTORADIOBUTTON - HexStyle="0x000009" -->
<Button Name="RadioButton1" X="205" Y="191" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="no" HexStyle="0x000009">Option 1</Button>
<Button Name="RadioButton2" X="205" Y="211" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="no" HexStyle="0x000009">Option 2</Button>
<Button Name="RadioButton3" X="205" Y="231" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="no" HexStyle="0x000009">Option 3</Button>
<Button Name="RadioButton4" X="205" Y="251" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="no" HexStyle="0x000009">Option 4</Button>
<Hypertext Name="EulaHyperlink" X="185" Y="-111" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext>
<Text X="185" Y="-81" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Checkbox Name="EulaAcceptCheckbox" X="185" Y="-51" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
<Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
<Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
<Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="Options">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.OptionsHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="17" FontId="3">#(loc.OptionsLocationLabel)</Text>
<Editbox Name="FolderEditbox" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" />
<Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton)</Button>
<Text X="11" Y="171" Width="-11" Height="17" FontId="3">Textbox</Text>
<Editbox Name="Username" X="11" Y="193" Width="-91" Height="21" TabStop="yes" FontId="3">[Username]</Editbox>
<Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsOkButton)</Button>
<Button Name="OptionsCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsCancelButton)</Button>
</Page>
<Page Name="Progress">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text>
<Text X="11" Y="141" Width="70" Height="17" FontId="3" DisablePrefix="yes">#(loc.ProgressLabel)</Text>
<Text Name="OverallProgressPackageText" X="85" Y="141" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OverallProgressPackageText)</Text>
<Progressbar Name="OverallCalculatedProgressbar" X="11" Y="163" Width="-11" Height="20" />
<Button Name="ProgressCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button>
</Page>
<Page Name="Modify">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
<Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
<Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
<Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button>
</Page>
<Page Name="Success">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.SuccessHeader)</Text>
<Button Name="LaunchButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button>
<Text Name="SuccessRestartText" X="185" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRestartText)</Text>
<Button Name="SuccessRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button>
<Button Name="SuccessCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button>
</Page>
<Page Name="Failure">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FailureHeader)</Text>
<Hypertext Name="FailureLogFileLink" X="185" Y="121" Width="-11" Height="68" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="185" Y="-115" Width="-11" Height="80" FontId="3" TabStop="yes" HideWhenDisabled="yes" />
<Text Name="FailureRestartText" X="185" Y="-57" Width="-11" Height="80" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
</Page>
</Theme>

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="600" Height="450" HexStyle="100a0000" FontId="0">#(loc.Caption)</Window>
<Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="1" Height="-24" Weight="500" Foreground="000000">Segoe UI</Font>
<Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font>
<Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font>
<Page Name="Help">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="32" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Text>
<Button Name="HelpCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button>
</Page>
<Page Name="Install">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="32" FontId="2" DisablePrefix="yes">#(loc.InstallHeader)</Text>
<Text X="185" Y="91" Width="-11" Height="64" FontId="3" DisablePrefix="yes">#(loc.InstallMessage)</Text><!-- HexStyle="0x800000" -->
<Checkbox Name="Checkbox1" X="185" Y="191" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">Checkbox Option 1</Checkbox>
<Checkbox Name="Checkbox2" X="185" Y="211" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">Checkbox Option 2</Checkbox>
<Hypertext Name="EulaHyperlink" X="185" Y="-111" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext>
<Text X="185" Y="-81" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Checkbox Name="EulaAcceptCheckbox" X="185" Y="-51" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
<Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
<Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
<Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="Options">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.OptionsHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="17" FontId="3">#(loc.OptionsLocationLabel)</Text>
<Editbox Name="FolderEditbox" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" />
<Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton)</Button>
<Text X="11" Y="171" Width="-11" Height="17" FontId="3">#(loc.OptionsLocationLabel2)</Text>
<Editbox Name="FolderEditbox2" X="11" Y="193" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" />
<Button Name="BrowseButton2" X="-11" Y="192" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton2)</Button>
<Text X="11" Y="221" Width="-11" Height="17" FontId="3">Textbox</Text>
<Editbox Name="ExtraText" X="11" Y="243" Width="-91" Height="21" TabStop="yes" FontId="3">Useful Text</Editbox>
<Checkbox Name="Checkbox3" X="11" Y="-51" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">Checkbox Option 3</Checkbox>
<Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsOkButton)</Button>
<Button Name="OptionsCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsCancelButton)</Button>
</Page>
<Page Name="Progress">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text>
<Text X="11" Y="141" Width="70" Height="17" FontId="3" DisablePrefix="yes">#(loc.ProgressLabel)</Text>
<Text Name="OverallProgressPackageText" X="85" Y="141" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OverallProgressPackageText)</Text>
<Progressbar Name="OverallCalculatedProgressbar" X="11" Y="163" Width="-11" Height="15" />
<Button Name="ProgressCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button>
</Page>
<Page Name="Modify">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
<Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
<Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
<Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button>
</Page>
<Page Name="Success">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.SuccessHeader)</Text>
<Button Name="LaunchButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button>
<Text Name="SuccessRestartText" X="185" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRestartText)</Text>
<Button Name="SuccessRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button>
<Button Name="SuccessCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button>
</Page>
<Page Name="Failure">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FailureHeader)</Text>
<Hypertext Name="FailureLogFileLink" X="185" Y="121" Width="-11" Height="68" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="185" Y="-115" Width="-11" Height="51" FontId="3" TabStop="yes" HideWhenDisabled="yes" />
<Text Name="FailureRestartText" X="185" Y="-57" Width="-11" Height="51" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
</Page>
</Theme>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[WixBundleName] Setup</String>
<String Id="Title">[WixBundleName]</String>
<String Id="InstallHeader">Welcome ([UserLanguageID])</String>
<String Id="InstallMessage">Setup will install [WixBundleName] on your computer. Click install to continue, options to set the install directory or Close to exit.</String>
<String Id="InstallVersion">Version [WixBundleVersion]</String>
<String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
<String Id="HelpHeader">Setup Help</String>
<String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or creates a complete local copy of the bundle in directory. Install is the default.
/passive | /quiet - displays minimal UI with no prompts or displays no UI and no prompts. By default UI and all prompts are displayed.
/norestart - suppress any attempts to restart. By default UI will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
<String Id="HelpCloseButton">&amp;Close</String>
<String Id="InstallLicenseLinkText">[WixBundleName] &lt;a href="#"&gt;license terms&lt;/a&gt;.</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Close</String>
<String Id="InstallUpgradeLinkText">Version [WixBundleVersion] &lt;a href="#"&gt;upgrade available&lt;/a&gt;</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse...</String>
<String Id="OptionsLocationLabel2">Database location:</String>
<String Id="OptionsBrowseButton2">B&amp;rowse...</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Setup Progress</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">Modify Setup</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;Close</String>
<String Id="FailureHeader">Setup Failed</String>
<String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</String>
</WixLocalization>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[WixBundleName] Setup</String>
<String Id="Title">[WixBundleName]</String>
<String Id="InstallHeader">Welcome</String>
<String Id="InstallMessage">Setup will install [WixBundleName] on your computer. Click install to continue, options to set the install directory or Close to exit.</String>
<String Id="InstallVersion">Version [WixBundleVersion]</String>
<String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
<String Id="HelpHeader">Setup Help</String>
<String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or creates a complete local copy of the bundle in directory. Install is the default.
/passive | /quiet - displays minimal UI with no prompts or displays no UI and no prompts. By default UI and all prompts are displayed.
/norestart - suppress any attempts to restart. By default UI will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
<String Id="HelpCloseButton">&amp;Close</String>
<String Id="InstallLicenseLinkText">[WixBundleName] &lt;a href="#"&gt;license terms&lt;/a&gt;.</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Close</String>
<String Id="InstallUpgradeLinkText">Version [WixBundleVersion] &lt;a href="#"&gt;upgrade available&lt;/a&gt;</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse...</String>
<String Id="OptionsLocationLabel2">Database location:</String>
<String Id="OptionsBrowseButton2">B&amp;rowse...</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Setup Progress</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">Modify Setup</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;Close</String>
<String Id="FailureHeader">Setup Failed</String>
<String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</String>
</WixLocalization>

View File

@@ -0,0 +1,127 @@
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=Generator content="Microsoft Word 14 (filtered)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:0cm;
margin-right:0cm;
margin-bottom:10.0pt;
margin-left:0cm;
line-height:115%;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
.MsoChpDefault
{font-size:11.0pt;}
.MsoPapDefault
{margin-bottom:10.0pt;
line-height:115%;}
/* Page Definitions */
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
-->
</style>
</head>
<body lang=EN-GB style='text-justify-trim:punctuation'>
<div class=WordSection1>
<p class=MsoNormal style='text-autospace:none'><b><span style='font-size:20.0pt;
line-height:115%;font-family:Consolas'>[Put Your License Agreement Here]</span></b></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN-US
style='font-size:9.5pt;line-height:115%;font-family:Consolas'>L</span><span
lang=EN style='font-size:9.5pt;line-height:115%;font-family:Consolas'>orem
ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies ultricies
arcu id commodo. Ut dignissim ante nec urna elementum imperdiet. Praesent
pretium condimentum orci sit amet laoreet. Fusce condimentum tempor leo, vitae
tempor quam interdum et. Nulla ante dui, tincidunt sed porta nec, pulvinar in
felis. Pellentesque pellentesque ornare nibh id accumsan. In eu arcu nibh.
Aenean ut vulputate nisl. Proin at nibh lacinia urna elementum commodo. Donec semper
lorem quis neque fringilla quis facilisis dolor dignissim. Suspendisse a massa
in odio viverra vehicula. Curabitur id lectus purus, non bibendum arcu. Cras
dictum, turpis eget gravida condimentum, turpis ante varius leo, molestie
pulvinar mauris libero ut leo. Morbi libero diam, sollicitudin id interdum sit
amet, rhoncus eget turpis.</span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN style='font-size:
9.5pt;line-height:115%;font-family:Consolas'>Vestibulum arcu dui, suscipit
vitae suscipit laoreet, posuere eget risus. Sed vitae massa in justo vehicula
elementum sed at arcu. Pellentesque arcu ante, accumsan sed lacinia sed,
lacinia vel urna. Vivamus at ligula nulla, lobortis ultricies tortor. Vivamus
suscipit dolor non velit adipiscing venenatis. Nullam adipiscing accumsan
condimentum. Nullam ut lorem neque, et iaculis felis. Donec sed massa diam, et
feugiat velit. Pellentesque facilisis mi a odio ultrices facilisis. Nam porta,
lorem feugiat aliquet placerat, ipsum risus accumsan sem, euismod bibendum
velit dolor sed turpis. Suspendisse tincidunt, lectus congue rhoncus
sollicitudin, magna erat porttitor ante, eget sodales ante sem eu augue. Aenean
risus risus, mattis vitae pretium at, venenatis dictum est. Vestibulum
consectetur euismod magna vel sodales.</span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN style='font-size:
9.5pt;line-height:115%;font-family:Consolas'>Quisque eu urna lacus. Nunc eget
dictum odio. Pellentesque vel dolor leo. Praesent aliquet, erat vel fringilla
lobortis, ante nibh dapibus augue, sed semper ligula odio vitae nulla. Nullam
dictum gravida lectus nec lacinia. Vivamus fermentum ultricies lobortis. In
quis magna massa, ut commodo lectus. Donec nunc velit, gravida id euismod
luctus, luctus sed ante. Nunc elementum mollis sapien, ac interdum quam
fringilla eu. Pellentesque habitant morbi tristique senectus et netus et
malesuada fames ac turpis egestas. Aliquam dui enim, tempus vel aliquam sed,
pretium sed nisi. Fusce vitae magna nec nibh aliquam suscipit vel a felis.
Etiam gravida, lorem id laoreet gravida, nisl leo hendrerit dolor, quis porta
mauris enim vitae justo. Maecenas congue, felis at rhoncus vestibulum, nisl
urna pellentesque urna, id iaculis augue metus eget neque. Curabitur pretium
risus nec tortor vulputate et rhoncus ipsum gravida.</span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN style='font-size:
9.5pt;line-height:115%;font-family:Consolas'>Maecenas elementum volutpat arcu,
nec ultricies velit faucibus facilisis. Etiam sem lacus, mattis eget gravida
ut, rhoncus porta lorem. Vivamus volutpat dui sit amet risus mollis venenatis.
Quisque velit velit, condimentum id pharetra sed, varius vitae lectus. Praesent
nisi turpis, porttitor nec accumsan a, aliquam sit amet augue. Quisque
facilisis enim sed enim pretium tristique. Aliquam commodo varius mi, ut
iaculis nunc tempus non. Vivamus velit nunc, dictum a dignissim vitae, commodo
id metus. Integer volutpat, neque at ultrices dignissim, felis nulla commodo
orci, at auctor nisl quam nec sem. Pellentesque interdum pellentesque nulla, ac
fermentum tortor porttitor a. Etiam condimentum aliquet sapien vel adipiscing. Quisque
est velit, vulputate a iaculis ut, tempus in nibh. Cras consectetur quam nibh,
vel lobortis justo. Aenean a elit leo. Aenean mollis dolor a odio accumsan
mollis. Proin blandit neque erat. Integer lectus urna, volutpat quis vulputate
et, fermentum et ante. Maecenas vitae ultricies dui.</span></p>
<p class=MsoNormal style='text-autospace:none'><span lang=EN style='font-size:
9.5pt;line-height:115%;font-family:Consolas'>Mauris accumsan varius luctus. In
hac habitasse platea dictumst. Mauris malesuada tempus nibh, porta accumsan
tortor tincidunt eu. Proin orci mauris, commodo id malesuada nec, adipiscing ut
sapien. Phasellus at dui vel nisi adipiscing auctor quis vel sem. Phasellus
fermentum, enim id sodales ullamcorper, magna sapien facilisis urna, ac
lobortis nunc augue ut ligula. Quisque vulputate nibh sed velit pharetra
dictum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque
mi metus, vestibulum vitae dapibus vel, ultrices at tellus. Vivamus iaculis dui
a nisl faucibus eget congue velit gravida. Donec vel quam ligula. Nam magna
ante, vulputate id pharetra ac, dapibus commodo velit. Cras nisl nulla, congue
sit amet laoreet eget, cursus et lorem. Mauris diam tortor, porttitor vitae
fringilla id, iaculis sit amet eros. Donec sed enim eget felis fermentum
posuere. Pellentesque sodales feugiat dolor, vel molestie est adipiscing non.
Morbi tincidunt viverra felis ut hendrerit.</span></p>
</div>
</body>
</html>

Binary file not shown.

BIN
Examples/Resource/Logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

38
Examples/Setup.wxs Normal file
View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Simple WiX install for BalExtensionExt examples.
-->
<!-- This is application version number, update for each release -->
<?ifndef Version?>
<?define Version = "$(bal.Version(1.0))" ?>
<?endif ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Product Id="*" Name="BalExtensionExt example $(var.Version)" Language="1033" Version="$(var.Version)" Manufacturer="ACME Corporation" UpgradeCode="FBE213AF-D840-4FCE-8719-3DA26AC76F12">
<Package Description="WiX install for BalExtensionExt examples." InstallerVersion="200" Compressed="yes" InstallPrivileges="elevated" InstallScope="perMachine" />
<MajorUpgrade Schedule="afterInstallValidate" DowngradeErrorMessage="A later version of [ProductName] is already installed." />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="Program Files">
<Directory Id="APPLICATIONFOLDER" Name="ACME" />
</Directory>
</Directory>
<Feature Id="DefaultFeature" Level="1" ConfigurableDirectory="APPLICATIONFOLDER">
<ComponentGroupRef Id="Test" />
</Feature>
<MediaTemplate EmbedCab="yes" />
</Product>
<Fragment>
<ComponentGroup Id="Test">
<Component Directory="APPLICATIONFOLDER">
<File Source="Resource\License.htm" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>

View File

@@ -0,0 +1,29 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="IBootstrapperBAFunction.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//-------------------------------------------------------------------------------------------------
#pragma once
#include <windows.h>
#include "IBootstrapperEngine.h"
interface IBootstrapperBAFunction
{
STDMETHOD(OnDetect)() = 0;
STDMETHOD(OnDetectComplete)() = 0;
STDMETHOD(OnPlan)() = 0;
STDMETHOD(OnPlanComplete)() = 0;
};
extern "C" typedef HRESULT (WINAPI *PFN_BOOTSTRAPPER_BA_FUNCTION_CREATE)(
__in IBootstrapperEngine* pEngine,
__in HMODULE hModule,
__out IBootstrapperBAFunction** ppBAFunction
);

View File

@@ -0,0 +1,85 @@
This is a sample project showing how to create a BA function assembly.
The four interfaces are in the WixBootstrapperBAFunction.cpp file.
Example code:
~~~~~~~~~~~~~
HRESULT hr = S_OK;
HKEY hkKey = NULL;
LPWSTR sczValue = NULL;
LPWSTR sczFormatedValue = NULL;
//---------------------------------------------------------------------------------------------
// Example of BA function failure
hr = E_NOTIMPL;
BalExitOnFailure(hr, "Test failure.");
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
// Example of setting a variables
hr = m_pEngine->SetVariableString(L"Variable1", L"String value");
BalExitOnFailure(hr, "Failed to set variable.");
hr = m_pEngine->SetVariableNumeric(L"Variable2", 1234);
BalExitOnFailure(hr, "Failed to set variable.");
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
// Example of reading burn variable.
BalGetStringVariable(L"WixBundleName", &sczValue);
BalExitOnFailure(hr, "Failed to get variable.");
hr = m_pEngine->SetVariableString(L"Variable4", sczValue);
BalExitOnFailure(hr, "Failed to set variable.");
//---------------------------------------------------------------------------------------------
ReleaseNullStr(sczValue); // Release string so it can be re-used
//---------------------------------------------------------------------------------------------
// Examples of reading burn variable and formatting it.
BalGetStringVariable(L"InstallFolder", &sczValue);
BalExitOnFailure(hr, "Failed to get variable.");
hr = m_pEngine->SetVariableString(L"Variable5", sczValue);
BalExitOnFailure(hr, "Failed to set variable.");
BalFormatString(sczValue, &sczFormatedValue);
BalExitOnFailure(hr, "Failed to format variable.");
hr = m_pEngine->SetVariableString(L"Variable6", sczFormatedValue);
BalExitOnFailure(hr, "Failed to set variable.");
//---------------------------------------------------------------------------------------------
ReleaseNullStr(sczValue); // Release string so it can be re-used
//---------------------------------------------------------------------------------------------
// Example of reading 64 bit registry and setting the InstallFolder variable to the value read.
hr = RegOpen(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.5", KEY_READ | KEY_WOW64_64KEY, &hkKey);
BalExitOnFailure(hr, "Failed to open registry key.");
hr = RegReadString(hkKey, L"InstallPath", &sczValue);
BalExitOnFailure(hr, "Failed to read registry value.");
// Example of function call
PathBackslashTerminate(&sczValue);
hr = m_pEngine->SetVariableString(L"InstallFolder", sczValue);
BalExitOnFailure(hr, "Failed to set variable.");
//---------------------------------------------------------------------------------------------
ReleaseNullStr(sczValue); // Release string so it can be re-used
//---------------------------------------------------------------------------------------------
// Example of calling a function that return HRESULT
hr = GetFileVersion();
BalExitOnFailure(hr, "Failed to get version.");
//---------------------------------------------------------------------------------------------
LExit:
ReleaseRegKey(hkKey);
ReleaseStr(sczValue);
ReleaseStr(sczFormatedValue);

View File

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="WriteVersionFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<MajorBuildNumber>1</MajorBuildNumber>
<MinorBuildNumber>0</MinorBuildNumber>
<CppVersionFile>.\bafunctionsver.h</CppVersionFile>
</PropertyGroup>
<PropertyGroup>
<Base>$([System.DateTime]::new(2000, 1, 1))</Base>
<BuildNumber>$([System.Convert]::ToInt32($([System.DateTime]::Now.ToUniversalTime().Subtract($(Base)).TotalDays)))</BuildNumber>
<BuildRevision>$([System.Convert]::ToInt32($([MSBuild]::Divide($([System.Convert]::ToInt32($([System.DateTime]::Now.ToUniversalTime().TimeOfDay.TotalSeconds))), 2))))</BuildRevision>
<FullBuildVersionString>$(MajorBuildNumber).$(MinorBuildNumber).$(BuildNumber).$(BuildRevision)</FullBuildVersionString>
</PropertyGroup>
<!--
================================================================================================
VersionPrint
Displays the versions of this build.
================================================================================================
-->
<Target Name="VersionPrint">
<Message Text="FullBuildVersionString = $(FullBuildVersionString)" />
</Target>
<!--
================================================================================================
WriteCppVersionFile
Creates the wixver.h version file for C++ code.
================================================================================================
-->
<Target Name="WriteCppVersionFile"
Returns="$(CppVersionFile)">
<ItemGroup>
<CppVersionLines Include="
// &lt;auto-generated/&gt;
#ifndef _VERSION_FILE_H_
#define _VERSION_FILE_H_
#define szVerMajorMinor &quot;$(MajorBuildNumber).$(MinorBuildNumber)&quot;
#define szVerMajorMinorBuildRev &quot;$(FullBuildVersionString)&quot;
#define rmj $(MajorBuildNumber)
#define rmm $(MinorBuildNumber)
#define rbd $(BuildNumber)
#define rev $(BuildRevision)
#endif
"/>
</ItemGroup>
<WriteLinesToFile Overwrite="true"
File="$(CppVersionFile)"
Lines="@(CppVersionLines)" />
<ItemGroup>
<FileWrites Include="$(CppVersionFile)" />
</ItemGroup>
</Target>
<!--
================================================================================================
WriteVersionFiles
Creates the version files.
================================================================================================
-->
<Target Name="WriteVersionFiles" DependsOnTargets="VersionPrint;WriteCppVersionFile" />
</Project>

View File

@@ -0,0 +1,134 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="WixBootstrapperBAFunction.cpp" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//-------------------------------------------------------------------------------------------------
#include "precomp.h"
class CWixBootstrapperBAFunction : IBootstrapperBAFunction
{
public:
STDMETHODIMP OnDetect()
{
HRESULT hr = S_OK;
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running detect BA function");
//-------------------------------------------------------------------------------------------------
// YOUR CODE GOES HERE
BalExitOnFailure(hr, "Change this message to represent real error handling.");
//-------------------------------------------------------------------------------------------------
LExit:
return hr;
}
STDMETHODIMP OnDetectComplete() { return S_OK; }
STDMETHODIMP OnPlan() { return S_OK; }
STDMETHODIMP OnPlanComplete() { return S_OK; }
/*
STDMETHODIMP OnDetectComplete()
{
HRESULT hr = S_OK;
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running detect complete BA function");
//-------------------------------------------------------------------------------------------------
// YOUR CODE GOES HERE
BalExitOnFailure(hr, "Change this message to represent real error handling.");
//-------------------------------------------------------------------------------------------------
LExit:
return hr;
}
STDMETHODIMP OnPlan()
{
HRESULT hr = S_OK;
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running plan BA function");
//-------------------------------------------------------------------------------------------------
// YOUR CODE GOES HERE
BalExitOnFailure(hr, "Change this message to represent real error handling.");
//-------------------------------------------------------------------------------------------------
LExit:
return hr;
}
STDMETHODIMP OnPlanComplete()
{
HRESULT hr = S_OK;
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running plan complete BA function");
//-------------------------------------------------------------------------------------------------
// YOUR CODE GOES HERE
BalExitOnFailure(hr, "Change this message to represent real error handling.");
//-------------------------------------------------------------------------------------------------
LExit:
return hr;
}
*/
private:
HMODULE m_hModule;
IBootstrapperEngine* m_pEngine;
public:
//
// Constructor - initialize member variables.
//
CWixBootstrapperBAFunction(
__in IBootstrapperEngine* pEngine,
__in HMODULE hModule
)
{
m_hModule = hModule;
m_pEngine = pEngine;
}
//
// Destructor - release member variables.
//
~CWixBootstrapperBAFunction()
{
}
};
extern "C" HRESULT WINAPI CreateBootstrapperBAFunction(
__in IBootstrapperEngine* pEngine,
__in HMODULE hModule,
__out CWixBootstrapperBAFunction** ppBAFunction
)
{
HRESULT hr = S_OK;
CWixBootstrapperBAFunction* pBAFunction = NULL;
// This is required to enable logging functions
BalInitialize(pEngine);
pBAFunction = new CWixBootstrapperBAFunction(pEngine, hModule);
ExitOnNull(pBAFunction, hr, E_OUTOFMEMORY, "Failed to create new bootstrapper BA function object.");
*ppBAFunction = pBAFunction;
pBAFunction = NULL;
LExit:
delete pBAFunction;
return hr;
}

View File

@@ -0,0 +1,37 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="bafunctions.cpp" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// Entry point for bootstrapper BA function DLL.
// </summary>
//-------------------------------------------------------------------------------------------------
#include "precomp.h"
static HINSTANCE vhInstance = NULL;
extern "C" BOOL WINAPI DllMain(
IN HINSTANCE hInstance,
IN DWORD dwReason,
IN LPVOID /* pvReserved */
)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
::DisableThreadLibraryCalls(hInstance);
vhInstance = hInstance;
break;
case DLL_PROCESS_DETACH:
vhInstance = NULL;
break;
}
return TRUE;
}

View File

@@ -0,0 +1,16 @@
;-------------------------------------------------------------------------------------------------
; <copyright file="bafunctions.def" company="Outercurve Foundation">
; Copyright (c) 2004, Outercurve Foundation.
; This software is released under Microsoft Reciprocal License (MS-RL).
; The license and further copyright text can be found in the file
; LICENSE.TXT at the root directory of the distribution.
; </copyright>
;
; <summary>
; Bootstrapper Application function DLL entry points.
; </summary>
;-------------------------------------------------------------------------------------------------
EXPORTS
CreateBootstrapperBAFunction

View File

@@ -0,0 +1,129 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="bafunctions.rc" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// WiX Extendend Bootstrapper BA function resource file.
// </summary>
//-------------------------------------------------------------------------------------------------
#include <winver.h>
#include <windows.h>
#include "bafunctionsver.h"
#define VER_APP
#define VER_ORIGINAL_FILENAME "bafunctions.dll"
#define VER_INTERNAL_NAME "bafunctions"
#define VER_PRODUCT_NAME "WiX Bootstrapper functions"
#define VER_FILE_DESCRIPTION "WiX Bootstrapper functions"
#ifdef DEBUG
#define VER_DEBUG VS_FF_DEBUG
#define VER_PRIVATE_BUILD VS_FF_PRIVATEBUILD
#define VER_PRE_RELEASE (VS_FF_PRERELEASE | VS_FF_SPECIALBUILD)
#else
#define VER_DEBUG 0
#define VER_PRIVATE_BUILD 0
#define VER_PRE_RELEASE 0
#endif
#if defined(VER_APP)
#define VER_FILE_TYPE VFT_APP
#elif defined(VER_DLL)
#define VER_FILE_TYPE VFT_DLL
#elif defined(VER_TYPELIB)
#define VER_FILE_TYPE VFT_UNKNOWN
#else
#define VER_FILE_TYPE VFT_UNKNOWN
#endif
#if defined(VER_LANG_NEUTRAL)
#ifndef VER_LANG
#define VER_LANG 0x0000
#endif
#ifndef VER_CP
#define VER_CP 0x04E4
#endif
#ifndef VER_BLOCK
#define VER_BLOCK "000004E4"
#endif
#else
#ifndef VER_LANG
#define VER_LANG 0x0409
#endif
#ifndef VER_CP
#define VER_CP 0x04E4
#endif
#ifndef VER_BLOCK
#define VER_BLOCK "040904E4"
#endif
#endif
#define VER_FILE_VERSION rmj, rmm, rbd, rev
#define VER_PRODUCT_VERSION rmj, rmm, rbd, rev
#define VER_FILE_VERSION_STRING szVerMajorMinorBuildRev
#define VER_PRODUCT_VERSION_STRING VER_FILE_VERSION_STRING
#define VER_FILE_FLAGS_MASK VS_FFI_FILEFLAGSMASK
#define VER_FILE_FLAGS (VER_DEBUG | VER_PRIVATE_BUILD | VER_PRE_RELEASE)
#define VER_FILE_OS VOS__WINDOWS32
#define VER_COMPANY_NAME "Outercurve Foundation"
#ifndef VER_PRODUCT_NAME
#define VER_PRODUCT_NAME "Windows Installer XML (WiX)"
#endif
#ifndef VER_FILE_DESCRIPTION
#define VER_FILE_DESCRIPTION "Windows Installer XML (WiX) component"
#endif
#if defined(VER_LEGAL_COPYRIGHT)
#error
#endif
#define VER_LEGAL_COPYRIGHT "Copyright (c) Outercurve Foundation.\240 All rights reserved."
#if !defined(VER_FILE_SUBTYPE)
#define VER_FILE_SUBTYPE 0
#endif
#ifdef RC_INVOKED
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILE_VERSION
PRODUCTVERSION VER_PRODUCT_VERSION
FILEFLAGSMASK VER_FILE_FLAGS_MASK
FILEFLAGS VER_FILE_FLAGS
FILEOS VER_FILE_OS
FILETYPE VER_FILE_TYPE
FILESUBTYPE VER_FILE_SUBTYPE
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK VER_BLOCK
BEGIN
VALUE "CompanyName", VER_COMPANY_NAME
VALUE "FileDescription", VER_FILE_DESCRIPTION
VALUE "FileVersion", VER_FILE_VERSION_STRING
VALUE "InternalName", VER_INTERNAL_NAME
VALUE "LegalCopyright", VER_LEGAL_COPYRIGHT
VALUE "OriginalFilename", VER_ORIGINAL_FILENAME
VALUE "ProductName", VER_PRODUCT_NAME
VALUE "ProductVersion", VER_FILE_VERSION_STRING
#if defined(DEBUG)
VALUE "WiX Common Resource Format", "Debug Only"
#endif
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", VER_LANG, VER_CP
END
END
#endif

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="bafunctions.vcxproj" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}</ProjectGuid>
<RootNamespace>BaFunctions</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<ProjectName>bafunctions</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<PropertyGroup>
<ExtraDefinitions>
</ExtraDefinitions>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WiX)SDK\VS2010\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;DEBUG;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WiX)SDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>bafunctions.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WiX)SDK\VS2010\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WiX)SDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>bafunctions.def</ModuleDefinitionFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="WixBootstrapperBAFunction.cpp" />
<ClCompile Include="bafunctions.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="bafunctions.def" />
<None Include="Readme.txt" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="bafunctions.rc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="precomp.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="IBootstrapperBAFunction.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="WixBootstrapperBAFunction.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="bafunctions.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="precomp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="IBootstrapperBAFunction.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="bafunctions.def">
<Filter>Source Files</Filter>
</None>
<None Include="Readme.txt" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="bafunctions.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,12 @@
// <auto-generated/>
#ifndef _VERSION_FILE_H_
#define _VERSION_FILE_H_
#define szVerMajorMinor "1.0"
#define szVerMajorMinorBuildRev "1.0.0.0"
#define rmj 1
#define rmm 0
#define rbd 0
#define rev 0
#endif

View File

@@ -0,0 +1,23 @@
@echo off
echo Configuring environment...
set MSBUILD="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"
echo.
set outdir=%~dp0build
rem %MSBUILD% Version.proj
%MSBUILD% bafunctions.vcxproj /t:Rebuild /p:Configuration=Release,Platform=Win32 /p:RunCodeAnalysis=false /p:DefineConstants="TRACE" /p:OutDir="%outdir%\\" /l:FileLogger,Microsoft.Build.Engine;logfile=build.log
if %errorlevel% neq 0 (
echo Build failed
pause
goto :EOF
)
echo.
goto :EOF
REM *****************************************************************
REM End of Main
REM *****************************************************************

View File

@@ -0,0 +1,52 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="precomp.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// Precompiled header for standard bootstrapper application.
// </summary>
//-------------------------------------------------------------------------------------------------
#pragma once
#include <windows.h>
#include <gdiplus.h>
#include <msiquery.h>
#include <objbase.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <stdlib.h>
#include <strsafe.h>
// Standard WiX header files, include as required
#include "dutil.h"
//#include "memutil.h"
//#include "dictutil.h"
//#include "dirutil.h"
#include "fileutil.h"
//#include "locutil.h"
//#include "logutil.h"
#include "pathutil.h"
//#include "resrutil.h"
//#include "shelutil.h"
#include "strutil.h"
//#include "thmutil.h"
//#include "uriutil.h"
//#include "xmlutil.h"
#include "regutil.h"
//#include "IBootstrapperEngine.h"
//#include "IBootstrapperApplication.h"
#include "BalBaseBootstrapperApplication.h"
//#include "balinfo.h"
//#include "balcondition.h"
#include "balutil.h"
#include "IBootstrapperBAFunction.h"

View File

@@ -0,0 +1,25 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="resource.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//-------------------------------------------------------------------------------------------------
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
//
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

BIN
Examples/bafunctions.dll Normal file

Binary file not shown.

28
LICENSE.TXT Normal file
View File

@@ -0,0 +1,28 @@
Copyright (c) 2004, Outercurve Foundation.
This software is released under the Microsoft Reciprocal License (MS-RL) (the "License"); you may not use the software except in compliance with the License.
The text of the Microsoft Reciprocal License (MS-RL) can be found online at:
http://opensource.org/licenses/ms-rl
Microsoft Reciprocal License (MS-RL)
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
A "contribution" is the original software, or any additions or changes to the software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor's patent claims that read directly on its contribution.
2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
3. Conditions and Limitations
(A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose.
(B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
(C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
(D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
(E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
(F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.

View File

@@ -0,0 +1,29 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="IBootstrapperBAFunction.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//-------------------------------------------------------------------------------------------------
#pragma once
#include <windows.h>
#include "IBootstrapperEngine.h"
interface IBootstrapperBAFunction
{
STDMETHOD(OnDetect)() = 0;
STDMETHOD(OnDetectComplete)() = 0;
STDMETHOD(OnPlan)() = 0;
STDMETHOD(OnPlanComplete)() = 0;
};
extern "C" typedef HRESULT (WINAPI *PFN_BOOTSTRAPPER_BA_FUNCTION_CREATE)(
__in IBootstrapperEngine* pEngine,
__in HMODULE hModule,
__out IBootstrapperBAFunction** ppBAFunction
);

72
bafunctions/Version.proj Normal file
View File

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="WriteVersionFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<MajorBuildNumber>1</MajorBuildNumber>
<MinorBuildNumber>0</MinorBuildNumber>
<CppVersionFile>.\bafunctionsver.h</CppVersionFile>
</PropertyGroup>
<PropertyGroup>
<Base>$([System.DateTime]::new(2000, 1, 1))</Base>
<BuildNumber>$([System.Convert]::ToInt32($([System.DateTime]::Now.ToUniversalTime().Subtract($(Base)).TotalDays)))</BuildNumber>
<BuildRevision>$([System.Convert]::ToInt32($([MSBuild]::Divide($([System.Convert]::ToInt32($([System.DateTime]::Now.ToUniversalTime().TimeOfDay.TotalSeconds))), 2))))</BuildRevision>
<FullBuildVersionString>$(MajorBuildNumber).$(MinorBuildNumber).$(BuildNumber).$(BuildRevision)</FullBuildVersionString>
</PropertyGroup>
<!--
================================================================================================
VersionPrint
Displays the versions of this build.
================================================================================================
-->
<Target Name="VersionPrint">
<Message Text="FullBuildVersionString = $(FullBuildVersionString)" />
</Target>
<!--
================================================================================================
WriteCppVersionFile
Creates the wixver.h version file for C++ code.
================================================================================================
-->
<Target Name="WriteCppVersionFile"
Returns="$(CppVersionFile)">
<ItemGroup>
<CppVersionLines Include="
// &lt;auto-generated/&gt;
#ifndef _VERSION_FILE_H_
#define _VERSION_FILE_H_
#define szVerMajorMinor &quot;$(MajorBuildNumber).$(MinorBuildNumber)&quot;
#define szVerMajorMinorBuildRev &quot;$(FullBuildVersionString)&quot;
#define rmj $(MajorBuildNumber)
#define rmm $(MinorBuildNumber)
#define rbd $(BuildNumber)
#define rev $(BuildRevision)
#endif
"/>
</ItemGroup>
<WriteLinesToFile Overwrite="true"
File="$(CppVersionFile)"
Lines="@(CppVersionLines)" />
<ItemGroup>
<FileWrites Include="$(CppVersionFile)" />
</ItemGroup>
</Target>
<!--
================================================================================================
WriteVersionFiles
Creates the version files.
================================================================================================
-->
<Target Name="WriteVersionFiles" DependsOnTargets="VersionPrint;WriteCppVersionFile" />
</Project>

View File

@@ -0,0 +1,278 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="WixBootstrapperBAFunction.cpp" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//-------------------------------------------------------------------------------------------------
#include "precomp.h"
class CWixBootstrapperBAFunction : IBootstrapperBAFunction
{
public:
STDMETHODIMP OnDetect()
{
HRESULT hr = S_OK;
HKEY hkKey = NULL;
LPWSTR sczValue = NULL;
LPWSTR sczFormatedValue = NULL;
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running detect BA function");
//---------------------------------------------------------------------------------------------
// Example of BA function failure
//hr = E_NOTIMPL;
//BalExitOnFailure(hr, "Test failure.");
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
// Example of setting a variables
hr = m_pEngine->SetVariableString(L"Variable1", L"String value");
BalExitOnFailure(hr, "Failed to set variable.");
hr = m_pEngine->SetVariableNumeric(L"Variable2", 1234);
BalExitOnFailure(hr, "Failed to set variable.");
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
// Example of reading burn variable.
BalGetStringVariable(L"WixBundleName", &sczValue);
BalExitOnFailure(hr, "Failed to get variable.");
hr = m_pEngine->SetVariableString(L"Variable4", sczValue);
BalExitOnFailure(hr, "Failed to set variable.");
//---------------------------------------------------------------------------------------------
ReleaseNullStr(sczValue); // Release string so it can be re-used
//---------------------------------------------------------------------------------------------
// Examples of reading burn variable and formatting it.
BalGetStringVariable(L"InstallFolder", &sczValue);
BalExitOnFailure(hr, "Failed to get variable.");
hr = m_pEngine->SetVariableString(L"Variable5", sczValue);
BalExitOnFailure(hr, "Failed to set variable.");
BalFormatString(sczValue, &sczFormatedValue);
BalExitOnFailure(hr, "Failed to format variable.");
hr = m_pEngine->SetVariableString(L"Variable6", sczFormatedValue);
BalExitOnFailure(hr, "Failed to set variable.");
//---------------------------------------------------------------------------------------------
ReleaseNullStr(sczValue); // Release string so it can be re-used
//---------------------------------------------------------------------------------------------
BalFormatString(L"WixBundleVersion=[WixBundleVersion]", &sczValue);
BalExitOnFailure(hr, "Failed to format variable.");
hr = m_pEngine->SetVariableString(L"Variable7", sczValue);
BalExitOnFailure(hr, "Failed to set variable.");
//---------------------------------------------------------------------------------------------
ReleaseNullStr(sczValue); // Release string so it can be re-used
//---------------------------------------------------------------------------------------------
// Example of reading 64 bit registry and setting the InstallFolder variable to the value read.
hr = RegOpen(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.5", KEY_READ | KEY_WOW64_64KEY, &hkKey);
BalExitOnFailure(hr, "Failed to open registry key.");
hr = RegReadString(hkKey, L"InstallPath", &sczValue);
BalExitOnFailure(hr, "Failed to read registry value.");
// Example of function call
PathBackslashTerminate(&sczValue);
hr = m_pEngine->SetVariableString(L"InstallFolder", sczValue);
BalExitOnFailure(hr, "Failed to set variable.");
//---------------------------------------------------------------------------------------------
ReleaseNullStr(sczValue); // Release string so it can be re-used
//---------------------------------------------------------------------------------------------
hr = PathRelativeToModule(&sczValue, NULL, m_hModule);
hr = m_pEngine->SetVariableString(L"ModulePath", sczValue);
//---------------------------------------------------------------------------------------------
ReleaseNullStr(sczValue); // Release string so it can be re-used
//---------------------------------------------------------------------------------------------
hr = GetFileVersion();
BalExitOnFailure(hr, "Failed to get version.");
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
// Delay start to show splashscreen handling
Delay();
//---------------------------------------------------------------------------------------------
LExit:
ReleaseRegKey(hkKey);
ReleaseStr(sczValue);
ReleaseStr(sczFormatedValue);
return hr;
}
STDMETHODIMP OnDetectComplete() { return S_OK; }
/*
STDMETHODIMP OnDetectComplete()
{
HRESULT hr = S_OK;
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running detect complete BA function");
//-------------------------------------------------------------------------------------------------
// YOUR CODE GOES HERE
BalExitOnFailure(hr, "Change this message to represent real error handling.");
//-------------------------------------------------------------------------------------------------
LExit:
return hr;
}
*/
STDMETHODIMP OnPlan()
{
HRESULT hr = S_OK;
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running plan BA function");
//---------------------------------------------------------------------------------------------
// Example of converting 4 radio button values in to 1
LONGLONG llValue = 0;
if (SUCCEEDED(BalGetNumericVariable(L"RadioButton1", &llValue)) && llValue)
{
m_pEngine->SetVariableNumeric(L"RadioButton", 1);
BalExitOnFailure(hr, "Failed to set variable.");
}
else if (SUCCEEDED(BalGetNumericVariable(L"RadioButton2", &llValue)) && llValue)
{
m_pEngine->SetVariableNumeric(L"RadioButton", 2);
BalExitOnFailure(hr, "Failed to set variable.");
}
else if (SUCCEEDED(BalGetNumericVariable(L"RadioButton3", &llValue)) && llValue)
{
m_pEngine->SetVariableNumeric(L"RadioButton", 3);
BalExitOnFailure(hr, "Failed to set variable.");
}
else if (SUCCEEDED(BalGetNumericVariable(L"RadioButton4", &llValue)) && llValue)
{
m_pEngine->SetVariableNumeric(L"RadioButton", 4);
BalExitOnFailure(hr, "Failed to set variable.");
}
else
{
m_pEngine->SetVariableNumeric(L"RadioButton", 0);
BalExitOnFailure(hr, "Failed to set variable.");
}
//---------------------------------------------------------------------------------------------
LExit:
return hr;
}
STDMETHODIMP OnPlanComplete()
{
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Running plan complete BA function");
return S_OK;
}
private:
//---------------------------------------------------------------------------------------------
// Example of function call to get the file version of this bundle
//---------------------------------------------------------------------------------------------
HRESULT GetFileVersion()
{
HRESULT hr = S_OK;
LPWSTR sczValue = NULL;
ULARGE_INTEGER uliVersion = { };
BalFormatString(L"[WixBundleOriginalSource]", &sczValue);
BalExitOnFailure(hr, "Failed to format variable.");
FileVersion(sczValue, &uliVersion.HighPart, &uliVersion.LowPart);
BalExitOnFailure(hr, "Failed to get file version.");
hr = m_pEngine->SetVariableVersion(L"FileVersion", uliVersion.QuadPart);
BalExitOnFailure(hr, "Failed to set variable.");
LExit:
ReleaseStr(sczValue);
return hr;
}
HRESULT Delay()
{
HRESULT hr = S_OK;
LONGLONG llDelay = 0;
BalGetNumericVariable(L"DelayStart", &llDelay);
if (llDelay)
{
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Delay for %dms", (DWORD)llDelay);
::Sleep((DWORD)llDelay);
}
return hr;
}
private:
HMODULE m_hModule;
IBootstrapperEngine* m_pEngine;
public:
//
// Constructor - initialize member variables.
//
CWixBootstrapperBAFunction(
__in IBootstrapperEngine* pEngine,
__in HMODULE hModule
)
{
m_hModule = hModule;
m_pEngine = pEngine;
}
//
// Destructor - release member variables.
//
~CWixBootstrapperBAFunction()
{
}
};
extern "C" HRESULT WINAPI CreateBootstrapperBAFunction(
__in IBootstrapperEngine* pEngine,
__in HMODULE hModule,
__out CWixBootstrapperBAFunction** ppBAFunction
)
{
HRESULT hr = S_OK;
CWixBootstrapperBAFunction* pBAFunction = NULL;
// This is required to enable logging functions
BalInitialize(pEngine);
pBAFunction = new CWixBootstrapperBAFunction(pEngine, hModule);
ExitOnNull(pBAFunction, hr, E_OUTOFMEMORY, "Failed to create new bootstrapper BA function object.");
*ppBAFunction = pBAFunction;
pBAFunction = NULL;
LExit:
delete pBAFunction;
return hr;
}

View File

@@ -0,0 +1,37 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="bafunctions.cpp" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// Entry point for bootstrapper BA function DLL.
// </summary>
//-------------------------------------------------------------------------------------------------
#include "precomp.h"
static HINSTANCE vhInstance = NULL;
extern "C" BOOL WINAPI DllMain(
IN HINSTANCE hInstance,
IN DWORD dwReason,
IN LPVOID /* pvReserved */
)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
::DisableThreadLibraryCalls(hInstance);
vhInstance = hInstance;
break;
case DLL_PROCESS_DETACH:
vhInstance = NULL;
break;
}
return TRUE;
}

View File

@@ -0,0 +1,16 @@
;-------------------------------------------------------------------------------------------------
; <copyright file="bafunctions.def" company="Outercurve Foundation">
; Copyright (c) 2004, Outercurve Foundation.
; This software is released under Microsoft Reciprocal License (MS-RL).
; The license and further copyright text can be found in the file
; LICENSE.TXT at the root directory of the distribution.
; </copyright>
;
; <summary>
; Bootstrapper Application function DLL entry points.
; </summary>
;-------------------------------------------------------------------------------------------------
EXPORTS
CreateBootstrapperBAFunction

129
bafunctions/bafunctions.rc Normal file
View File

@@ -0,0 +1,129 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="bafunctions.rc" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// WiX Extendend Bootstrapper BA function resource file.
// </summary>
//-------------------------------------------------------------------------------------------------
#include <winver.h>
#include <windows.h>
#include "bafunctionsver.h"
#define VER_APP
#define VER_ORIGINAL_FILENAME "bafunctions.dll"
#define VER_INTERNAL_NAME "bafunctions"
#define VER_PRODUCT_NAME "WiX Bootstrapper functions"
#define VER_FILE_DESCRIPTION "WiX Bootstrapper functions"
#ifdef DEBUG
#define VER_DEBUG VS_FF_DEBUG
#define VER_PRIVATE_BUILD VS_FF_PRIVATEBUILD
#define VER_PRE_RELEASE (VS_FF_PRERELEASE | VS_FF_SPECIALBUILD)
#else
#define VER_DEBUG 0
#define VER_PRIVATE_BUILD 0
#define VER_PRE_RELEASE 0
#endif
#if defined(VER_APP)
#define VER_FILE_TYPE VFT_APP
#elif defined(VER_DLL)
#define VER_FILE_TYPE VFT_DLL
#elif defined(VER_TYPELIB)
#define VER_FILE_TYPE VFT_UNKNOWN
#else
#define VER_FILE_TYPE VFT_UNKNOWN
#endif
#if defined(VER_LANG_NEUTRAL)
#ifndef VER_LANG
#define VER_LANG 0x0000
#endif
#ifndef VER_CP
#define VER_CP 0x04E4
#endif
#ifndef VER_BLOCK
#define VER_BLOCK "000004E4"
#endif
#else
#ifndef VER_LANG
#define VER_LANG 0x0409
#endif
#ifndef VER_CP
#define VER_CP 0x04E4
#endif
#ifndef VER_BLOCK
#define VER_BLOCK "040904E4"
#endif
#endif
#define VER_FILE_VERSION rmj, rmm, rbd, rev
#define VER_PRODUCT_VERSION rmj, rmm, rbd, rev
#define VER_FILE_VERSION_STRING szVerMajorMinorBuildRev
#define VER_PRODUCT_VERSION_STRING VER_FILE_VERSION_STRING
#define VER_FILE_FLAGS_MASK VS_FFI_FILEFLAGSMASK
#define VER_FILE_FLAGS (VER_DEBUG | VER_PRIVATE_BUILD | VER_PRE_RELEASE)
#define VER_FILE_OS VOS__WINDOWS32
#define VER_COMPANY_NAME "Outercurve Foundation"
#ifndef VER_PRODUCT_NAME
#define VER_PRODUCT_NAME "Windows Installer XML (WiX)"
#endif
#ifndef VER_FILE_DESCRIPTION
#define VER_FILE_DESCRIPTION "Windows Installer XML (WiX) component"
#endif
#if defined(VER_LEGAL_COPYRIGHT)
#error
#endif
#define VER_LEGAL_COPYRIGHT "Copyright (c) Outercurve Foundation.\240 All rights reserved."
#if !defined(VER_FILE_SUBTYPE)
#define VER_FILE_SUBTYPE 0
#endif
#ifdef RC_INVOKED
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILE_VERSION
PRODUCTVERSION VER_PRODUCT_VERSION
FILEFLAGSMASK VER_FILE_FLAGS_MASK
FILEFLAGS VER_FILE_FLAGS
FILEOS VER_FILE_OS
FILETYPE VER_FILE_TYPE
FILESUBTYPE VER_FILE_SUBTYPE
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK VER_BLOCK
BEGIN
VALUE "CompanyName", VER_COMPANY_NAME
VALUE "FileDescription", VER_FILE_DESCRIPTION
VALUE "FileVersion", VER_FILE_VERSION_STRING
VALUE "InternalName", VER_INTERNAL_NAME
VALUE "LegalCopyright", VER_LEGAL_COPYRIGHT
VALUE "OriginalFilename", VER_ORIGINAL_FILENAME
VALUE "ProductName", VER_PRODUCT_NAME
VALUE "ProductVersion", VER_FILE_VERSION_STRING
#if defined(DEBUG)
VALUE "WiX Common Resource Format", "Debug Only"
#endif
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", VER_LANG, VER_CP
END
END
#endif

View File

@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="bafunctions.vcxproj" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{EB0A7D51-2133-4EE7-B6CA-87DBEAC67E02}</ProjectGuid>
<RootNamespace>BaFunctions</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<ProjectName>bafunctions</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<PropertyGroup>
<ExtraDefinitions>
</ExtraDefinitions>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WiX)SDK\VS2010\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;DEBUG;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WiX)SDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>bafunctions.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WiX)SDK\VS2010\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WiX)SDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>bafunctions.def</ModuleDefinitionFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="WixBootstrapperBAFunction.cpp" />
<ClCompile Include="bafunctions.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="bafunctions.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="bafunctions.rc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="precomp.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="IBootstrapperBAFunction.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="bafunctions.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="WixBootstrapperBAFunction.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="bafunctions.def">
<Filter>Source Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="precomp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="IBootstrapperBAFunction.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="bafunctions.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,12 @@
// <auto-generated/>
#ifndef _VERSION_FILE_H_
#define _VERSION_FILE_H_
#define szVerMajorMinor "1.0"
#define szVerMajorMinorBuildRev "1.0.5260.23891"
#define rmj 1
#define rmm 0
#define rbd 5260
#define rev 23891
#endif

25
bafunctions/build.bat Normal file
View File

@@ -0,0 +1,25 @@
@echo off
echo Configuring environment...
set MSBUILD="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"
echo.
set outdir=%~dp0build
%MSBUILD% Version.proj
%MSBUILD% bafunctions.vcxproj /t:Rebuild /p:Configuration=Release,Platform=Win32 /p:RunCodeAnalysis=false /p:DefineConstants="TRACE" /p:OutDir="%outdir%\\" /l:FileLogger,Microsoft.Build.Engine;logfile=build.log
if %errorlevel% neq 0 (
echo Build failed
pause
goto :EOF
)
copy build\bafunctions.dll ..\Examples /y
echo.
goto :EOF
REM *****************************************************************
REM End of Main
REM *****************************************************************

52
bafunctions/precomp.h Normal file
View File

@@ -0,0 +1,52 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="precomp.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// Precompiled header for standard bootstrapper application.
// </summary>
//-------------------------------------------------------------------------------------------------
#pragma once
#include <windows.h>
#include <gdiplus.h>
#include <msiquery.h>
#include <objbase.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <stdlib.h>
#include <strsafe.h>
// Standard WiX header files, include as required
#include "dutil.h"
//#include "memutil.h"
//#include "dictutil.h"
//#include "dirutil.h"
#include "fileutil.h"
//#include "locutil.h"
//#include "logutil.h"
#include "pathutil.h"
//#include "resrutil.h"
//#include "shelutil.h"
#include "strutil.h"
//#include "thmutil.h"
//#include "uriutil.h"
//#include "xmlutil.h"
#include "regutil.h"
//#include "IBootstrapperEngine.h"
//#include "IBootstrapperApplication.h"
#include "BalBaseBootstrapperApplication.h"
//#include "balinfo.h"
//#include "balcondition.h"
#include "balutil.h"
#include "IBootstrapperBAFunction.h"

25
bafunctions/resource.h Normal file
View File

@@ -0,0 +1,25 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="resource.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//-------------------------------------------------------------------------------------------------
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
//
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

44
build.bat Normal file
View File

@@ -0,0 +1,44 @@
@echo off
echo Configuring environment...
set MSBUILD="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe"
echo.
set outdir=%~dp0build
echo Removing release folder...
Call :DeleteDir "%outdir%"
Call :DeleteDir "ipch"
%MSBUILD% inc\Version.proj
%MSBUILD% bafunctions\Version.proj
%MSBUILD% BalExtensionExt.sln /t:Rebuild /p:Configuration=Release /p:Platform="Mixed Platforms" /p:RunCodeAnalysis=false /p:DefineConstants="TRACE" /p:OutDir="%outdir%\\" /l:FileLogger,Microsoft.Build.Engine;logfile=build.log
if %errorlevel% neq 0 (
echo Build failed
pause
goto :EOF
)
copy build\bafunctions.dll Examples /y
pushd Examples
Call Build
popd
echo.
pause
goto :EOF
REM *****************************************************************
REM End of Main
REM *****************************************************************
REM *****************************************************************
REM Delete/create directory
REM *****************************************************************
:DeleteDir
rd %1% /q/s 2>nul 1>nul
goto :EOF

Binary file not shown.

BIN
build/balExt.wixlib Normal file

Binary file not shown.

100
inc/Version.proj Normal file
View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="WriteVersionFiles" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<MajorBuildNumber>3</MajorBuildNumber>
<MinorBuildNumber>8</MinorBuildNumber>
<CppVersionFile>.\wixver.h</CppVersionFile>
<CSharpVersionFile>.\wixver.cs</CSharpVersionFile>
</PropertyGroup>
<PropertyGroup>
<Base>$([System.DateTime]::new(2000, 1, 1))</Base>
<BuildNumber>$([System.Convert]::ToInt32($([System.DateTime]::Now.ToUniversalTime().Subtract($(Base)).TotalDays)))</BuildNumber>
<BuildRevision>$([System.Convert]::ToInt32($([MSBuild]::Divide($([System.Convert]::ToInt32($([System.DateTime]::Now.ToUniversalTime().TimeOfDay.TotalSeconds))), 2))))</BuildRevision>
<FullBuildVersionString>$(MajorBuildNumber).$(MinorBuildNumber).$(BuildNumber).$(BuildRevision)</FullBuildVersionString>
</PropertyGroup>
<!--
================================================================================================
VersionPrint
Displays the versions of this build.
================================================================================================
-->
<Target Name="VersionPrint">
<Message Text="FullBuildVersionString = $(FullBuildVersionString)" />
</Target>
<!--
================================================================================================
WriteCppVersionFile
Creates the wixver.h version file for C++ code.
================================================================================================
-->
<Target Name="WriteCppVersionFile"
Returns="$(CppVersionFile)">
<ItemGroup>
<CppVersionLines Include="
// &lt;auto-generated/&gt;
#ifndef _VERSION_FILE_H_
#define _VERSION_FILE_H_
#define szVerMajorMinor &quot;$(MajorBuildNumber).$(MinorBuildNumber)&quot;
#define szVerMajorMinorBuildRev &quot;$(FullBuildVersionString)&quot;
#define rmj $(MajorBuildNumber)
#define rmm $(MinorBuildNumber)
#define rbd $(BuildNumber)
#define rev $(BuildRevision)
#define szVerName &quot;BalExtensionExt Release&quot;
#endif
"/>
</ItemGroup>
<WriteLinesToFile Overwrite="true"
File="$(CppVersionFile)"
Lines="@(CppVersionLines)" />
<ItemGroup>
<FileWrites Include="$(CppVersionFile)" />
</ItemGroup>
</Target>
<!--
================================================================================================
WriteCSharpVersionFile
Creates the wixver.cs version file for C# code.
================================================================================================
-->
<Target Name="WriteCSharpVersionFile"
Returns="$(CSharpVersionFile)">
<ItemGroup>
<CSharpLines Include="
// &lt;auto-generated/&gt;
using System.Reflection%3B
[assembly:AssemblyVersion(&quot;$(MajorBuildNumber).0.0.0&quot;)]
[assembly:AssemblyFileVersion(&quot;$(FullBuildVersionString)&quot;)]
"/>
</ItemGroup>
<WriteLinesToFile Overwrite="true"
File="$(CSharpVersionFile)"
Lines="@(CSharpLines)" />
<ItemGroup>
<FileWrites Include="$(CSharpVersionFile)" />
</ItemGroup>
</Target>
<!--
================================================================================================
WriteVersionFiles
Creates the wixver.* version files.
================================================================================================
-->
<Target Name="WriteVersionFiles" DependsOnTargets="VersionPrint;WriteCppVersionFile;WriteCSharpVersionFile" />
</Project>

13
inc/WixDistribution.cs Normal file
View File

@@ -0,0 +1,13 @@
using System.Reflection;
using System.Resources;
[assembly: AssemblyCompany("Outercurve Foundation")]
[assembly: AssemblyCopyright("Copyright © Outercurve Foundation. All rights reserved.")]
[assembly: AssemblyTrademark("")]
#if DEBUG
[assembly: AssemblyConfiguration("DEBUG")]
#else
[assembly: AssemblyConfiguration("")]
#endif
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: AssemblyProduct("Windows Installer XML")]

17
inc/WixDistribution.h Normal file
View File

@@ -0,0 +1,17 @@
/* **************************************************************************
* WixDistribution.h file contains disribution specific items, such as
* Product Name.
*
* **************************************************************************/
#pragma once
#ifndef __WIXDISTRIBUTION_FILE_H_
#define __WIXDISTRIBUTION_FILE_H_
#ifdef VER_PRODUCT_NAME
#undef VER_PRODUCT_NAME
#endif
#define VER_PRODUCT_NAME "Windows Installer XML"
#endif // __WIXDISTRIBUTION_FILE_H_

140
inc/wix.rc Normal file
View File

@@ -0,0 +1,140 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="wix.rc" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// Common resource file for any native wix resources.
// </summary>
// <remarks>
// Usage:
// #define VER_APP (VER_DLL, VER_TYPELIB, none)
// #define VER_LANG_NEUTRAL (optional)
// #define VER_ORIGINAL_FILENAME "FooBar.Exe"
// #define VER_INTERNAL_NAME "FooBar"
// #define VER_PRODUCT_NAME
// #define VER_FILE_DESCRIPTION
// #include "wix.rc"
//
// Optional to add before the #include (must add as a group and VER_BLOCK must match to VER_LANG and VER_CP)
// You should not have to do this except for some extreme cases.
// #define VER_LANG 0x0000
// #define VER_CP 0x04E4
// #define VER_BLOCK "000004E4"
// </remarks>
//-------------------------------------------------------------------------------------------------
#include <winver.h>
#include <windows.h>
#include "wixver.h"
#include "WixDistribution.h"
#ifdef DEBUG
#define VER_DEBUG VS_FF_DEBUG
#define VER_PRIVATE_BUILD VS_FF_PRIVATEBUILD
#define VER_PRE_RELEASE (VS_FF_PRERELEASE | VS_FF_SPECIALBUILD)
#else
#define VER_DEBUG 0
#define VER_PRIVATE_BUILD 0
#define VER_PRE_RELEASE 0
#endif
#if defined(VER_APP)
#define VER_FILE_TYPE VFT_APP
#elif defined(VER_DLL)
#define VER_FILE_TYPE VFT_DLL
#elif defined(VER_TYPELIB)
#define VER_FILE_TYPE VFT_UNKNOWN
#else
#define VER_FILE_TYPE VFT_UNKNOWN
#endif
#if defined(VER_LANG_NEUTRAL)
#ifndef VER_LANG
#define VER_LANG 0x0000
#endif
#ifndef VER_CP
#define VER_CP 0x04E4
#endif
#ifndef VER_BLOCK
#define VER_BLOCK "000004E4"
#endif
#else
#ifndef VER_LANG
#define VER_LANG 0x0409
#endif
#ifndef VER_CP
#define VER_CP 0x04E4
#endif
#ifndef VER_BLOCK
#define VER_BLOCK "040904E4"
#endif
#endif
#define VER_FILE_VERSION rmj, rmm, rbd, rev
#define VER_PRODUCT_VERSION rmj, rmm, rbd, rev
#define VER_FILE_VERSION_STRING szVerMajorMinorBuildRev
#define VER_PRODUCT_VERSION_STRING VER_FILE_VERSION_STRING
#define VER_FILE_FLAGS_MASK VS_FFI_FILEFLAGSMASK
#define VER_FILE_FLAGS (VER_DEBUG | VER_PRIVATE_BUILD | VER_PRE_RELEASE)
#define VER_FILE_OS VOS__WINDOWS32
#define VER_COMPANY_NAME "Outercurve Foundation"
#ifndef VER_PRODUCT_NAME
#define VER_PRODUCT_NAME "Windows Installer XML (WiX)"
#endif
#ifndef VER_FILE_DESCRIPTION
#define VER_FILE_DESCRIPTION "Windows Installer XML (WiX) component"
#endif
#if defined(VER_LEGAL_COPYRIGHT)
#error
#endif
#define VER_LEGAL_COPYRIGHT "Copyright (c) Outercurve Foundation.\240 All rights reserved."
#if !defined(VER_FILE_SUBTYPE)
#define VER_FILE_SUBTYPE 0
#endif
#ifdef RC_INVOKED
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILE_VERSION
PRODUCTVERSION VER_PRODUCT_VERSION
FILEFLAGSMASK VER_FILE_FLAGS_MASK
FILEFLAGS VER_FILE_FLAGS
FILEOS VER_FILE_OS
FILETYPE VER_FILE_TYPE
FILESUBTYPE VER_FILE_SUBTYPE
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK VER_BLOCK
BEGIN
VALUE "CompanyName", VER_COMPANY_NAME
VALUE "FileDescription", VER_FILE_DESCRIPTION
VALUE "FileVersion", VER_FILE_VERSION_STRING
VALUE "InternalName", VER_INTERNAL_NAME
VALUE "LegalCopyright", VER_LEGAL_COPYRIGHT
VALUE "OriginalFilename", VER_ORIGINAL_FILENAME
VALUE "ProductName", VER_PRODUCT_NAME
VALUE "ProductVersion", VER_FILE_VERSION_STRING
#if defined(DEBUG)
VALUE "WiX Common Resource Format", "Debug Only"
#endif
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", VER_LANG, VER_CP
END
END
#endif

4
inc/wixver.cs Normal file
View File

@@ -0,0 +1,4 @@
// <auto-generated/>
using System.Reflection;
[assembly:AssemblyVersion("3.0.0.0")]
[assembly:AssemblyFileVersion("3.8.5260.23891")]

13
inc/wixver.h Normal file
View File

@@ -0,0 +1,13 @@
// <auto-generated/>
#ifndef _VERSION_FILE_H_
#define _VERSION_FILE_H_
#define szVerMajorMinor "3.8"
#define szVerMajorMinorBuildRev "3.8.5260.23891"
#define rmj 3
#define rmm 8
#define rbd 5260
#define rev 23891
#define szVerName "BalExtensionExt Release"
#endif

373
wixext/BalCompiler.cs Normal file
View File

@@ -0,0 +1,373 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="BalCompiler.cs" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// The compiler for the Windows Installer XML Toolset Bal Extension.
// </summary>
//-------------------------------------------------------------------------------------------------
namespace Microsoft.Tools.WindowsInstallerXml.Extensions
{
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Xml;
using System.Xml.Schema;
using Microsoft.Tools.WindowsInstallerXml;
/// <summary>
/// The compiler for the Windows Installer XML Toolset Bal Extension.
/// </summary>
public sealed class BalCompiler : CompilerExtension
{
private SourceLineNumberCollection addedConditionLineNumber;
private XmlSchema schema;
/// <summary>
/// Instantiate a new BalCompiler.
/// </summary>
public BalCompiler()
{
this.addedConditionLineNumber = null;
this.schema = LoadXmlSchemaHelper(Assembly.GetExecutingAssembly(), "Microsoft.Tools.WindowsInstallerXml.Extensions.Xsd.bal.xsd");
}
/// <summary>
/// Gets the schema for this extension.
/// </summary>
/// <value>Schema for this extension.</value>
public override XmlSchema Schema
{
get { return this.schema; }
}
/// <summary>
/// Processes an element for the Compiler.
/// </summary>
/// <param name="sourceLineNumbers">Source line number for the parent element.</param>
/// <param name="parentElement">Parent element of element to process.</param>
/// <param name="element">Element to process.</param>
/// <param name="contextValues">Extra information about the context in which this element is being parsed.</param>
public override void ParseElement(SourceLineNumberCollection sourceLineNumbers, XmlElement parentElement, XmlElement element, params string[] contextValues)
{
switch (parentElement.LocalName)
{
case "Bundle":
case "Fragment":
switch (element.LocalName)
{
case "Condition":
this.ParseConditionElement(element);
break;
default:
this.Core.UnexpectedElement(parentElement, element);
break;
}
break;
case "BootstrapperApplicationRef":
switch (element.LocalName)
{
case "WixExtendedBootstrapperApplication":
this.ParseWixExtendedBootstrapperApplicationElement(element);
break;
default:
this.Core.UnexpectedElement(parentElement, element);
break;
}
break;
default:
this.Core.UnexpectedElement(parentElement, element);
break;
}
}
/// <summary>
/// Processes an attribute for the Compiler.
/// </summary>
/// <param name="sourceLineNumbers">Source line number for the parent element.</param>
/// <param name="parentElement">Parent element of element to process.</param>
/// <param name="attribute">Attribute to process.</param>
/// <param name="contextValues">Extra information about the context in which this element is being parsed.</param>
public override void ParseAttribute(SourceLineNumberCollection sourceLineNumbers, XmlElement parentElement, XmlAttribute attribute, Dictionary<string, string> contextValues)
{
switch (parentElement.LocalName)
{
case "Variable":
// at the time the extension attribute is parsed, the compiler might not yet have
// parsed the Name attribute, so we need to get it directly from the parent element.
string variableName = parentElement.GetAttribute("Name");
if (String.IsNullOrEmpty(variableName))
{
this.Core.OnMessage(WixErrors.ExpectedParentWithAttribute(sourceLineNumbers, "Variable", "Overridable", "Name"));
}
else
{
switch (attribute.LocalName)
{
case "Overridable":
if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attribute))
{
Row row = this.Core.CreateRow(sourceLineNumbers, "WixStdbaOverridableVariable");
row[0] = variableName;
}
break;
default:
this.Core.UnexpectedAttribute(sourceLineNumbers, attribute);
break;
}
}
break;
default:
this.Core.UnexpectedAttribute(sourceLineNumbers, attribute);
break;
}
}
/// <summary>
/// Parses a Condition element for Bundles.
/// </summary>
/// <param name="node">The element to parse.</param>
private void ParseConditionElement(XmlNode node)
{
SourceLineNumberCollection sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
string condition = CompilerCore.GetConditionInnerText(node); // condition is the inner text of the element.
string message = null;
foreach (XmlAttribute attrib in node.Attributes)
{
if (0 == attrib.NamespaceURI.Length || attrib.NamespaceURI == this.schema.TargetNamespace)
{
switch (attrib.LocalName)
{
case "Message":
message = this.Core.GetAttributeValue(sourceLineNumbers, attrib, false);
break;
default:
this.Core.UnexpectedAttribute(sourceLineNumbers, attrib);
break;
}
}
else
{
this.Core.UnsupportedExtensionAttribute(sourceLineNumbers, attrib);
}
}
foreach (XmlNode child in node.ChildNodes)
{
if (XmlNodeType.Element == child.NodeType)
{
if (child.NamespaceURI == this.schema.TargetNamespace)
{
this.Core.UnexpectedElement(node, child);
}
else
{
this.Core.UnsupportedExtensionElement(node, child);
}
}
}
// Error check the values.
if (String.IsNullOrEmpty(condition))
{
this.Core.OnMessage(WixErrors.ConditionExpected(sourceLineNumbers, node.Name));
}
if (null == message)
{
this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Message"));
}
if (!this.Core.EncounteredError)
{
Row row = this.Core.CreateRow(sourceLineNumbers, "WixBalCondition");
row[0] = condition;
row[1] = message;
if (null == this.addedConditionLineNumber)
{
this.addedConditionLineNumber = sourceLineNumbers;
}
}
}
/// <summary>
/// Parses a WixExtendedBootstrapperApplication element for Bundles.
/// </summary>
/// <param name="node">The element to parse.</param>
private void ParseWixExtendedBootstrapperApplicationElement(XmlNode node)
{
SourceLineNumberCollection sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
string launchTarget = null;
string licenseFile = null;
string licenseUrl = null;
string logoFile = null;
string logoSideFile = null;
string themeFile = null;
string localizationFile = null;
YesNoType suppressOptionsUI = YesNoType.NotSet;
YesNoType suppressDowngradeFailure = YesNoType.NotSet;
YesNoType suppressRepair = YesNoType.NotSet;
YesNoType showVersion = YesNoType.NotSet;
YesNoType launchPassive = YesNoType.NotSet;
YesNoType launchQuiet = YesNoType.NotSet;
foreach (XmlAttribute attrib in node.Attributes)
{
if (0 == attrib.NamespaceURI.Length || attrib.NamespaceURI == this.schema.TargetNamespace)
{
switch (attrib.LocalName)
{
case "LaunchTarget":
launchTarget = this.Core.GetAttributeValue(sourceLineNumbers, attrib, false);
break;
case "LicenseFile":
licenseFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib, false);
break;
case "LicenseUrl":
licenseUrl = this.Core.GetAttributeValue(sourceLineNumbers, attrib, true);
break;
case "LogoFile":
logoFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib, false);
break;
case "LogoSideFile":
logoSideFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib, false);
break;
case "ThemeFile":
themeFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib, false);
break;
case "LocalizationFile":
localizationFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib, false);
break;
case "SuppressOptionsUI":
suppressOptionsUI = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
break;
case "LaunchPassive":
launchPassive = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
break;
case "LaunchQuiet":
launchQuiet = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
break;
case "SuppressDowngradeFailure":
suppressDowngradeFailure = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
break;
case "SuppressRepair":
suppressRepair = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
break;
case "ShowVersion":
showVersion = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
break;
default:
this.Core.UnexpectedAttribute(sourceLineNumbers, attrib);
break;
}
}
else
{
this.Core.UnsupportedExtensionAttribute(sourceLineNumbers, attrib);
}
}
foreach (XmlNode child in node.ChildNodes)
{
if (XmlNodeType.Element == child.NodeType)
{
if (child.NamespaceURI == this.schema.TargetNamespace)
{
this.Core.UnexpectedElement(node, child);
}
else
{
this.Core.UnsupportedExtensionElement(node, child);
}
}
}
if (String.IsNullOrEmpty(licenseFile) && null == licenseUrl)
{
this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "LicenseFile", "LicenseUrl", true));
}
if (!this.Core.EncounteredError)
{
if (!String.IsNullOrEmpty(launchTarget))
{
this.Core.CreateVariableRow(sourceLineNumbers, "LaunchTarget", launchTarget, "string", false, false);
}
if (!String.IsNullOrEmpty(licenseFile))
{
this.Core.CreateWixVariableRow(sourceLineNumbers, "WixExtbaLicenseRtf", licenseFile, false);
}
if (null != licenseUrl)
{
this.Core.CreateWixVariableRow(sourceLineNumbers, "WixExtbaLicenseUrl", licenseUrl, false);
}
if (!String.IsNullOrEmpty(logoFile))
{
this.Core.CreateWixVariableRow(sourceLineNumbers, "WixExtbaLogo", logoFile, false);
}
if (!String.IsNullOrEmpty(logoSideFile))
{
this.Core.CreateWixVariableRow(sourceLineNumbers, "WixExtbaLogoSide", logoSideFile, false);
}
if (!String.IsNullOrEmpty(themeFile))
{
this.Core.CreateWixVariableRow(sourceLineNumbers, "WixExtbaThemeXml", themeFile, false);
}
if (!String.IsNullOrEmpty(localizationFile))
{
this.Core.CreateWixVariableRow(sourceLineNumbers, "WixExtbaThemeWxl", localizationFile, false);
}
if (YesNoType.Yes == suppressOptionsUI || YesNoType.Yes == suppressDowngradeFailure || YesNoType.Yes == suppressRepair)
{
Row row = this.Core.CreateRow(sourceLineNumbers, "WixExtbaOptions");
if (YesNoType.Yes == suppressOptionsUI)
{
row[0] = 1;
}
if (YesNoType.Yes == suppressDowngradeFailure)
{
row[1] = 1;
}
if (YesNoType.Yes == suppressRepair)
{
row[2] = 1;
}
if (YesNoType.Yes == showVersion)
{
row[3] = 1;
}
if (YesNoType.Yes == launchPassive)
{
row[4] = 1;
}
if (YesNoType.Yes == launchQuiet)
{
row[5] = 1;
}
}
}
}
}
}

96
wixext/BalExtension.cs Normal file
View File

@@ -0,0 +1,96 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="BalExtension.cs" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// The Windows Installer XML Toolset Bal extension.
// </summary>
//-------------------------------------------------------------------------------------------------
namespace Microsoft.Tools.WindowsInstallerXml.Extensions
{
using System;
using System.Reflection;
/// <summary>
/// The Windows Installer XML Toolset Bal Extension.
/// </summary>
public sealed class BalExtension : WixExtension
{
private BalCompiler compilerExtension;
private Library library;
private TableDefinitionCollection tableDefinitions;
private BalPreprocessorExtension preprocessorExtension;
/// <summary>
/// Gets the optional compiler extension.
/// </summary>
/// <value>The optional compiler extension.</value>
public override CompilerExtension CompilerExtension
{
get
{
if (null == this.compilerExtension)
{
this.compilerExtension = new BalCompiler();
}
return this.compilerExtension;
}
}
/// <summary>
/// Gets the optional table definitions for this extension.
/// </summary>
/// <value>The optional table definitions for this extension.</value>
public override TableDefinitionCollection TableDefinitions
{
get
{
if (null == this.tableDefinitions)
{
this.tableDefinitions = LoadTableDefinitionHelper(Assembly.GetExecutingAssembly(), "Microsoft.Tools.WindowsInstallerXml.Extensions.Data.tables.xml");
}
return this.tableDefinitions;
}
}
/// <summary>
/// Gets the library associated with this extension.
/// </summary>
/// <param name="tableDefinitions">The table definitions to use while loading the library.</param>
/// <returns>The loaded library.</returns>
public override Library GetLibrary(TableDefinitionCollection tableDefinitions)
{
if (null == this.library)
{
this.library = LoadLibraryHelper(Assembly.GetExecutingAssembly(), "Microsoft.Tools.WindowsInstallerXml.Extensions.Data.balExt.wixlib", tableDefinitions);
}
return this.library;
}
/// <summary>
/// Gets the optional preprocessor extension.
/// </summary>
/// <value>The optional preprocessor extension.</value>
public override PreprocessorExtension PreprocessorExtension
{
get
{
if (null == this.preprocessorExtension)
{
this.preprocessorExtension = new BalPreprocessorExtension();
}
return this.preprocessorExtension;
}
}
}
}

View File

@@ -0,0 +1,63 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="ValuePreprocessorExtension.cs" company="">
// </copyright>
//
// <summary>
// A WiX preprocessor extension.
// </summary>
//-------------------------------------------------------------------------------------------------
namespace Microsoft.Tools.WindowsInstallerXml.Extensions
{
using System;
using Microsoft.Tools.WindowsInstallerXml;
/// <summary>
/// The preprocessor extension.
/// </summary>
public sealed class BalPreprocessorExtension : PreprocessorExtension
{
private static readonly string[] prefixes = {"bal"};
/// <summary>
/// Gets the variable prefixes for this extension.
/// </summary>
/// <value>The variable prefixes for this extension.</value>
public override string[] Prefixes
{
get { return prefixes; }
}
public override string EvaluateFunction(string prefix, string function, string[] args)
{
string result = null;
switch (prefix)
{
case "bal":
switch (function)
{
case "Version":
// Make sure the base version is specified
if (args.Length == 0 || args[0].Length == 0)
{
throw new ArgumentException("Version template not specified");
}
// Build = days since 1/1/2000; Revision = seconds since midnight / 2
DateTime now = DateTime.Now.ToUniversalTime();
double build = (now - new DateTime(2000, 1, 1)).TotalDays;
double revision = now.TimeOfDay.TotalSeconds / 2;
result = String.Format("{0}.{1}.{2}", args[0], (int)build, (int)revision);
break;
}
break;
}
return result;
}
}
}

View File

@@ -0,0 +1,27 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="AssemblyInfo.cs" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file LICENSE.TXT
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// The assembly information for the Windows Installer XML Toolset Bootstrapper Application Layer Extension.
// </summary>
//-------------------------------------------------------------------------------------------------
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Microsoft.Tools.WindowsInstallerXml;
using Microsoft.Tools.WindowsInstallerXml.Extensions;
[assembly: AssemblyTitle("WiX Toolset Bootstrapper Application Layer Extension")]
[assembly: AssemblyDescription("Windows Installer XML Toolset Bootstrapper Application Layer Extension")]
[assembly: AssemblyCulture("")]
[assembly: CLSCompliant(true)]
[assembly: ComVisible(false)]
[assembly: AssemblyDefaultWixExtension(typeof(BalExtension))]

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="WixBalExtension.csproj" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{6F9B6AFD-538B-4DF6-A1E8-6C224CBD7B05}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Microsoft.Tools.WindowsInstallerXml.Extensions</RootNamespace>
<AssemblyName>WixBalExtensionExt</AssemblyName>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="wix, Version=3.0.0.0, Culture=neutral, PublicKeyToken=ce35f76fcda82bad, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(WIX)bin\wix.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\inc\WixDistribution.cs">
<Link>Properties\WixDistribution.cs</Link>
</Compile>
<Compile Include="..\inc\wixver.cs">
<Link>Properties\wixver.cs</Link>
</Compile>
<Compile Include="BalCompiler.cs" />
<Compile Include="BalExtension.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="BalPreprocessorExtension.cs" />
<MsgGenSource Include="Data\messages.xml">
<ResourcesLogicalName>$(RootNamespace).Data.Messages.resources</ResourcesLogicalName>
</MsgGenSource>
<EmbeddedResource Include="Data\tables.xml">
<LogicalName>$(RootNamespace).Data.tables.xml</LogicalName>
</EmbeddedResource>
<EmbeddedResource Include="Xsd\bal.xsd">
<LogicalName>$(RootNamespace).Xsd.bal.xsd</LogicalName>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<XsdGenSource Include="Xsd\bal.xsd">
<CommonNamespace>Microsoft.Tools.WindowsInstallerXml.Serialize</CommonNamespace>
<Namespace>Microsoft.Tools.WindowsInstallerXml.Extensions.Serialize.Bal</Namespace>
</XsdGenSource>
<EmbeddedResource Include="..\build\balExt.wixlib">
<Link>Data\balExt.wixlib</Link>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

154
wixext/Xsd/bal.xsd Normal file
View File

@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="bal.xsd" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xse="http://schemas.microsoft.com/wix/2005/XmlSchemaExtension"
xmlns:html="http://www.w3.org/1999/xhtml"
targetNamespace="http://schemas.microsoft.com/wix/BalExtension"
xmlns="http://schemas.microsoft.com/wix/BalExtension">
<xs:annotation>
<xs:documentation>
The source code schema for the Windows Installer XML Toolset Burn User Experience Extension.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://schemas.microsoft.com/wix/2006/wi" />
<xs:element name="Condition">
<xs:annotation>
<xs:documentation>
Conditions for a bundle. The condition is specified in the inner text of the element.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Fragment" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:annotation>
<xs:documentation>
The condition that must evaluate to true for the installation to continue.
</xs:documentation>
</xs:annotation>
<xs:attribute name="Message" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
Set the value to the text to display when the condition fails and the installation must be terminated.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="WixExtendedBootstrapperApplication">
<xs:annotation>
<xs:documentation>
Configures WixExtendedBootstrapperApplication for a Bundle.
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="BootstrapperApplicationRef" />
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="LaunchTarget" type="xs:string">
<xs:annotation>
<xs:documentation>If set, the success page will show a Launch button the user can use to launch the application being installed. The string value can be formatted using Burn variables enclosed in brackets, to refer to installation directories and so forth.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LicenseFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the RTF license file. Cannot be used simultaneously with LicenseUrl.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LicenseUrl" type="xs:string">
<xs:annotation>
<xs:documentation>URL target of the license link. Cannot be used simultaneously with LicenseFile. This attribute can be empty to hide the license link completely.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LogoFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the logo graphic.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LogoSideFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the side logo graphic.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ThemeFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme XML.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LocalizationFile" type="xs:string">
<xs:annotation>
<xs:documentation>Source file of the theme localization .wxl file.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressOptionsUI" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the Options button will not be shown and the user will not be able to choose an installation directory.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchPassive" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the LaunchTarget option will be executed automatically at the end of a passive install.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LaunchQuiet" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the LaunchTarget option will be executed automatically at the end of a quiet install.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressDowngradeFailure" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", attempting to installer a downgraded version of a bundle will be treated as a successful do-nothing operation.
The default behavior (or when explicitly set to "no") is to treat downgrade attempts as failures. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="SuppressRepair" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the Repair button will not be shown in the maintenance-mode UI.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ShowVersion" type="YesNoType">
<xs:annotation>
<xs:documentation>If set to "yes", the application version will be displayed on the UI.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:attribute name="Overridable">
<xs:annotation>
<xs:documentation>
When set to "yes", lets the user override the variable's default value by specifying another value on the command line,
in the form Variable=Value. Otherwise, WixStdBA won't overwrite the default value and will log
"Ignoring attempt to set non-overridable variable: 'BAR'."
</xs:documentation>
<xs:appinfo>
<xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Variable" />
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:simpleType name="YesNoType">
<xs:annotation>
<xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="no"/>
<xs:enumeration value="yes"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

16
wixext/data/messages.xml Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="messages.xml" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<!--
The messages for the Windows Installer XML Toolset Bal Extension.
-->
<Messages Namespace="Microsoft.Tools.WindowsInstallerXml.Extensions" Resources="Data.Messages" xmlns="http://schemas.microsoft.com/genmsgs/2004/07/messages">
<Class Name="BalErrors" ContainerName="BalErrorEventArgs" BaseContainerName="WixErrorEventArgs">
</Class>
</Messages>

40
wixext/data/tables.xml Normal file
View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="tables.xml" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<!--
The table definitions for the Windows Installer XML Toolset Bal Extension.
-->
<tableDefinitions xmlns="http://schemas.microsoft.com/wix/2006/tables">
<tableDefinition name="WixBalCondition" bootstrapperApplicationData="yes">
<columnDefinition name="Condition" type="string" length="255" primaryKey="yes" localizable="yes"
category="condition" description="Expression which must evaluate to TRUE in order for install to commence."/>
<columnDefinition name="Message" type="localized" length="255" escapeIdtCharacters="yes"
category="formatted" description="Localizable text to display when condition fails and install must abort."/>
</tableDefinition>
<tableDefinition name="WixExtbaOptions" bootstrapperApplicationData="yes">
<columnDefinition name="SuppressOptionsUI" type="number" length="2" nullable="yes"
maxValue="1" description="If 1, don't show Options button during install."/>
<columnDefinition name="SuppressDowngradeFailure" type="number" length="2" nullable="yes"
maxValue="1" description="If 1, attempts to downgrade are treated as a successful no-op."/>
<columnDefinition name="SuppressRepair" type="number" length="2" nullable="yes"
maxValue="1" description="If 1, don't show Repair button during maintenance."/>
<columnDefinition name="ShowVersion" type="number" length="2" nullable="yes"
maxValue="1" description="If 1, show the version number on the UI."/>
<columnDefinition name="LaunchPassive" type="number" length="2" nullable="yes"
maxValue="1" description="If 1, execute LaunchTarget automatically during passive install."/>
<columnDefinition name="LaunchQuiet" type="number" length="2" nullable="yes"
maxValue="1" description="If 1, execute LaunchTarget automatically during quiet install."/>
</tableDefinition>
<tableDefinition name="WixStdbaOverridableVariable" bootstrapperApplicationData="yes">
<columnDefinition name="Name" type="string" length="255" primaryKey="yes"
category="identifier" description="Variable name user can override."/>
</tableDefinition>
</tableDefinitions>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
<copyright file="BalExtension.wixproj" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectGuid>{3444d952-f21c-496f-ab6b-56435bfd0787}</ProjectGuid>
<OutputName>balExt</OutputName>
<OutputType>Library</OutputType>
<BindFiles>True</BindFiles>
<Pedantic>True</Pedantic>
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
<Cultures>en-us</Cultures>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<OutputPath>$(Configuration)\$(Platform)</OutputPath>
<LibBindFiles>True</LibBindFiles>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>..\build\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>..\build\</OutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="BalExtension.wxs" />
<Compile Include="wixstdba.wxs" />
<Compile Include="wixstdba_x86.wxs" />
</ItemGroup>
<ItemGroup>
<Content Include="wixstdba_platform.wxi" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\wixstdba\wixstdba.vcxproj">
<Name>wixextba</Name>
<Project>{41085a22-e6aa-4e8b-ab1b-ddee0dc89dfa}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
</Project>

13
wixlib/BalExtension.wxs Normal file
View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
<copyright file="BalExtension.wxs" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
</Fragment>
</Wix>

66
wixlib/wixstdba.wxs Normal file
View File

@@ -0,0 +1,66 @@
<?xml version='1.0' encoding='utf-8'?>
<!--
<copyright file="wixstdba.wxs" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<!-- RTF License Payload Group -->
<Fragment>
<PayloadGroup Id='WixExtbaRtfLicensePayloads'>
<Payload Name='thm.xml' Compressed='yes' SourceFile='!(wix.WixExtbaThemeXml=$(var.wixextba.ProjectDir)Resources\RtfTheme.xml)' />
<Payload Name='thm.wxl' Compressed='yes' SourceFile='!(wix.WixExtbaThemeWxl=$(var.wixextba.ProjectDir)Resources\RtfTheme.wxl)' />
<Payload Name='Logo.png' Compressed='yes' SourceFile='!(wix.WixExtbaLogo=$(var.wixextba.ProjectDir)Resources\Logo.png)' />
<Payload Name='!(wix.WixExtbaLicenseRtfName=license.rtf)' Compressed='yes' SourceFile='!(wix.WixExtbaLicenseRtf=$(var.wixextba.ProjectDir)Resources\LoremIpsumLicense.rtf)' />
</PayloadGroup>
<CustomTable Id='WixExtbaInformation'>
<Row>
<Data Column='LicenseFile'>!(wix.WixExtbaLicenseRtfName=license.rtf)</Data>
</Row>
</CustomTable>
</Fragment>
<!-- Hyperlink License Payload Group -->
<Fragment>
<PayloadGroup Id='WixExtbaHyperlinkLicensePayloads'>
<Payload Name='thm.xml' Compressed='yes' SourceFile='!(wix.WixExtbaThemeXml=$(var.wixextba.ProjectDir)Resources\HyperlinkTheme.xml)' />
<Payload Name='thm.wxl' Compressed='yes' SourceFile='!(wix.WixExtbaThemeWxl=$(var.wixextba.ProjectDir)Resources\HyperlinkTheme.wxl)' />
<Payload Name='Logo.png' Compressed='yes' SourceFile='!(wix.WixExtbaLogo=$(var.wixextba.ProjectDir)Resources\Logo.png)' />
</PayloadGroup>
<CustomTable Id='WixExtbaInformation'>
<Row>
<Data Column='LicenseUrl'>!(wix.WixExtbaLicenseUrl)</Data>
</Row>
</CustomTable>
</Fragment>
<!-- Hyperlink2 License Payload Group -->
<Fragment>
<PayloadGroup Id='WixExtbaHyperlink2LicensePayloads'>
<Payload Name='thm.xml' Compressed='yes' SourceFile='!(wix.WixExtbaThemeXml=$(var.wixextba.ProjectDir)Resources\Hyperlink2Theme.xml)' />
<Payload Name='thm.wxl' Compressed='yes' SourceFile='!(wix.WixExtbaThemeWxl=$(var.wixextba.ProjectDir)Resources\HyperlinkTheme.wxl)' />
<Payload Name='LogoSide.png' Compressed='yes' SourceFile='!(wix.WixExtbaLogoSide=$(var.wixextba.ProjectDir)Resources\LogoSide.png)' />
<Payload Name='Logo.png' Compressed='yes' SourceFile='!(wix.WixExtbaLogo=$(var.wixextba.ProjectDir)Resources\Logo.png)' />
</PayloadGroup>
<CustomTable Id='WixExtbaInformation'>
<Row>
<Data Column='LicenseUrl'>!(wix.WixExtbaLicenseUrl)</Data>
</Row>
</CustomTable>
</Fragment>
<!-- BootstrapperApplicationData tables definition -->
<Fragment>
<CustomTable Id='WixExtbaInformation' BootstrapperApplicationData='yes'>
<Column Id='LicenseFile' Category='Text' Type='string' Width='0' Nullable='yes' PrimaryKey='yes' />
<Column Id='LicenseUrl' Category='Text' Type='string' Width='0' Nullable='yes' PrimaryKey='yes' />
</CustomTable>
</Fragment>
</Wix>

View File

@@ -0,0 +1,32 @@
<?xml version='1.0' encoding='utf-8'?>
<!--
<copyright file="wixstdba_platform.wxi" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Include xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Fragment>
<BootstrapperApplication Id='WixExtendedBootstrapperApplication.RtfLicense' SourceFile='$(var.wixextba.TargetDir)wixextba.dll'>
<PayloadGroupRef Id='WixExtbaRtfLicensePayloads' />
</BootstrapperApplication>
</Fragment>
<Fragment>
<BootstrapperApplication Id='WixExtendedBootstrapperApplication.HyperlinkLicense' SourceFile='$(var.wixextba.TargetDir)wixextba.dll'>
<PayloadGroupRef Id='WixExtbaHyperlinkLicensePayloads' />
</BootstrapperApplication>
</Fragment>
<Fragment>
<BootstrapperApplication Id='WixExtendedBootstrapperApplication.Hyperlink2License' SourceFile='$(var.wixextba.TargetDir)wixextba.dll'>
<PayloadGroupRef Id='WixExtbaHyperlink2LicensePayloads' />
</BootstrapperApplication>
</Fragment>
<Fragment>
<BootstrapperApplication Id='WixExtendedBootstrapperApplication.Foundation' SourceFile='$(var.wixextba.TargetDir)wixextba.dll' />
</Fragment>
</Include>

13
wixlib/wixstdba_x86.wxs Normal file
View File

@@ -0,0 +1,13 @@
<?xml version='1.0' encoding='utf-8'?>
<!--
<copyright file="wixstdba_x86.wxs" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<?define platform=x86 ?>
<?include wixstdba_platform.wxi ?>
</Wix>

View File

@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="600" Height="450" HexStyle="100a0000" FontId="0">#(loc.Caption)</Window>
<Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="1" Height="-24" Weight="500" Foreground="000000">Segoe UI</Font>
<Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font>
<Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font>
<Page Name="Help">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="32" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Text>
<Button Name="HelpCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button>
</Page>
<Page Name="Install">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="32" FontId="2" DisablePrefix="yes">#(loc.InstallHeader)</Text>
<Text X="185" Y="91" Width="-11" Height="64" FontId="3" DisablePrefix="yes">#(loc.InstallMessage)</Text><!-- HexStyle="0x800000" -->
<Hypertext Name="EulaHyperlink" X="185" Y="-111" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext>
<Text X="185" Y="-81" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Hypertext Name="UpgradeHyperlink" X="185" Y="-81" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallUpgradeLinkText)</Hypertext>
<Checkbox Name="EulaAcceptCheckbox" X="185" Y="-51" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
<Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
<Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
<Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="Options">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.OptionsHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="17" FontId="3">#(loc.OptionsLocationLabel)</Text>
<Editbox Name="FolderEditbox" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" />
<Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton)</Button>
<Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsOkButton)</Button>
<Button Name="OptionsCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsCancelButton)</Button>
</Page>
<Page Name="Progress">
<Text X="80" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png"/>
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text>
<Text X="11" Y="141" Width="70" Height="17" FontId="3" DisablePrefix="yes">#(loc.ProgressLabel)</Text>
<Text Name="OverallProgressPackageText" X="85" Y="141" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OverallProgressPackageText)</Text>
<Progressbar Name="OverallCalculatedProgressbar" X="11" Y="163" Width="-11" Height="20" />
<Button Name="ProgressCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button>
</Page>
<Page Name="Modify">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
<Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
<Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
<Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button>
</Page>
<Page Name="Success">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.SuccessHeader)</Text>
<Button Name="LaunchButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button>
<Text Name="SuccessRestartText" X="185" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRestartText)</Text>
<Button Name="SuccessRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button>
<Button Name="SuccessCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button>
</Page>
<Page Name="Failure">
<Text X="185" Y="11" Width="-11" Height="32" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
<Image X="11" Y="11" Width="165" Height="400" ImageFile="LogoSide.png"/>
<Text X="185" Y="50" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FailureHeader)</Text>
<Hypertext Name="FailureLogFileLink" X="185" Y="121" Width="-11" Height="68" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="185" Y="-115" Width="-11" Height="80" FontId="3" TabStop="yes" HideWhenDisabled="yes" />
<Text Name="FailureRestartText" X="185" Y="-57" Width="-11" Height="80" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
</Page>
</Theme>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[WixBundleName] Setup</String>
<String Id="Title">[WixBundleName]</String>
<String Id="InstallHeader">Welcome</String>
<String Id="InstallMessage">Setup will install [WixBundleName] on your computer. Click install to continue, options to set the install directory or Close to exit.</String>
<String Id="InstallVersion">Version [WixBundleVersion]</String>
<String Id="InstallUpgradeLinkText">Version [WixBundleVersion] &lt;a href="#"&gt;upgrade available&lt;/a&gt;</String>
<String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
<String Id="HelpHeader">Setup Help</String>
<String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory. Install is the default.
/passive | /quiet - displays minimal UI with no prompts or displays no UI and
no prompts. By default UI and all prompts are displayed.
/norestart - suppress any attempts to restart. By default UI will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
<String Id="HelpCloseButton">&amp;Close</String>
<String Id="InstallLicenseLinkText">[WixBundleName] &lt;a href="#"&gt;license terms&lt;/a&gt;.</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Close</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Setup Progress</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">Modify Setup</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;Close</String>
<String Id="FailureHeader">Setup Failed</String>
<String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</String>
</WixLocalization>

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="500" Height="390" HexStyle="100a0000" FontId="0">#(loc.Caption)</Window>
<Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="1" Height="-24" Weight="500" Foreground="000000">Segoe UI</Font>
<Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font>
<Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png" Visible="yes"/>
<Text X="80" Y="11" Width="-11" Height="64" FontId="1" Visible="yes" DisablePrefix="yes">#(loc.Title)</Text>
<Page Name="Help">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="11" Y="112" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Text>
<Button Name="HelpCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button>
</Page>
<Page Name="Install">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.InstallHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="-129" FontId="3" DisablePrefix="yes">#(loc.InstallMessage)</Text>
<!-- HexStyle="0x800000" -->
<Hypertext Name="EulaHyperlink" X="11" Y="-107" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext>
<Text X="11" Y="-73" Width="246" Height="17" FontId="3" DisablePrefix="yes">#(loc.InstallVersion)</Text>
<Hypertext Name="UpgradeHyperlink" X="11" Y="-73" Width="-11" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallUpgradeLinkText)</Hypertext>
<Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
<Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
<Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
<Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="Options">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.OptionsHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="17" FontId="3">#(loc.OptionsLocationLabel)</Text>
<Editbox Name="FolderEditbox" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" />
<Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton)</Button>
<Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsOkButton)</Button>
<Button Name="OptionsCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsCancelButton)</Button>
</Page>
<Page Name="Progress">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text>
<Text X="11" Y="121" Width="70" Height="17" FontId="3" DisablePrefix="yes">#(loc.ProgressLabel)</Text>
<Text Name="OverallProgressPackageText" X="85" Y="121" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OverallProgressPackageText)</Text>
<Progressbar Name="OverallCalculatedProgressbar" X="11" Y="143" Width="-11" Height="15" />
<Button Name="ProgressCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button>
</Page>
<Page Name="Modify">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
<Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
<Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
<Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button>
</Page>
<Page Name="Success">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.SuccessHeader)</Text>
<Button Name="LaunchButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button>
<Text Name="SuccessRestartText" X="-11" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRestartText)</Text>
<Button Name="SuccessRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button>
<Button Name="SuccessCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button>
</Page>
<Page Name="Failure">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FailureHeader)</Text>
<Hypertext Name="FailureLogFileLink" X="11" Y="121" Width="-11" Height="42" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="22" Y="163" Width="-11" Height="51" FontId="3" TabStop="yes" HideWhenDisabled="yes" />
<Text Name="FailureRestartText" X="-11" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
</Page>
</Theme>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Caption">[WixBundleName] Setup</String>
<String Id="Title">[WixBundleName]</String>
<String Id="ConfirmCancelMessage">Are you sure you want to cancel?</String>
<String Id="HelpHeader">Setup Help</String>
<String Id="HelpText">/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory. Install is the default.
/passive | /quiet - displays minimal UI with no prompts or displays no UI and
no prompts. By default UI and all prompts are displayed.
/norestart - suppress any attempts to restart. By default UI will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.</String>
<String Id="HelpCloseButton">&amp;Close</String>
<String Id="InstallAcceptCheckbox">I &amp;agree to the license terms and conditions</String>
<String Id="InstallOptionsButton">&amp;Options</String>
<String Id="InstallInstallButton">&amp;Install</String>
<String Id="InstallCloseButton">&amp;Close</String>
<String Id="OptionsHeader">Setup Options</String>
<String Id="OptionsLocationLabel">Install location:</String>
<String Id="OptionsBrowseButton">&amp;Browse</String>
<String Id="OptionsOkButton">&amp;OK</String>
<String Id="OptionsCancelButton">&amp;Cancel</String>
<String Id="ProgressHeader">Setup Progress</String>
<String Id="ProgressLabel">Processing:</String>
<String Id="OverallProgressPackageText">Initializing...</String>
<String Id="ProgressCancelButton">&amp;Cancel</String>
<String Id="ModifyHeader">Modify Setup</String>
<String Id="ModifyRepairButton">&amp;Repair</String>
<String Id="ModifyUninstallButton">&amp;Uninstall</String>
<String Id="ModifyCloseButton">&amp;Close</String>
<String Id="SuccessHeader">Setup Successful</String>
<String Id="SuccessLaunchButton">&amp;Launch</String>
<String Id="SuccessRestartText">You must restart your computer before you can use the software.</String>
<String Id="SuccessRestartButton">&amp;Restart</String>
<String Id="SuccessCloseButton">&amp;Close</String>
<String Id="FailureHeader">Setup Failed</String>
<String Id="FailureHyperlinkLogText">One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the &lt;a href="#"&gt;log file&lt;/a&gt;.</String>
<String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String>
<String Id="FailureRestartButton">&amp;Restart</String>
<String Id="FailureCloseButton">&amp;Close</String>
</WixLocalization>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010">
<Window Width="500" Height="390" HexStyle="100a0000" FontId="0">#(loc.Caption)</Window>
<Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="1" Height="-24" Weight="500" Foreground="000000">Segoe UI</Font>
<Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font>
<Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="Logo.png" Visible="yes"/>
<Text X="80" Y="11" Width="-11" Height="64" FontId="1" Visible="yes" DisablePrefix="yes">#(loc.Title)</Text>
<Page Name="Help">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text>
<Text X="11" Y="112" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Text>
<Button Name="HelpCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button>
</Page>
<Page Name="Install">
<Text X="11" Y="80" Width="-11" Height="-70" TabStop="no" FontId="2" HexStyle="0x800000" DisablePrefix="yes" />
<Richedit Name="EulaRichedit" X="12" Y="81" Width="-12" Height="-71" TabStop="yes" FontId="0" />
<Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox>
<Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
<Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
<Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>
<Page Name="Options">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.OptionsHeader)</Text>
<Text X="11" Y="121" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OptionsLocationLabel)</Text>
<Editbox Name="FolderEditbox" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" />
<Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton)</Button>
<Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsOkButton)</Button>
<Button Name="OptionsCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsCancelButton)</Button>
</Page>
<Page Name="Progress">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text>
<Text X="11" Y="121" Width="70" Height="17" FontId="3" DisablePrefix="yes">#(loc.ProgressLabel)</Text>
<Text Name="OverallProgressPackageText" X="85" Y="121" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OverallProgressPackageText)</Text>
<Progressbar Name="OverallCalculatedProgressbar" X="11" Y="143" Width="-11" Height="15" />
<Button Name="ProgressCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button>
</Page>
<Page Name="Modify">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text>
<Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button>
<Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button>
<Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button>
</Page>
<Page Name="Success">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.SuccessHeader)</Text>
<Button Name="LaunchButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button>
<Text Name="SuccessRestartText" X="-11" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessRestartText)</Text>
<Button Name="SuccessRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button>
<Button Name="SuccessCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button>
</Page>
<Page Name="Failure">
<Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FailureHeader)</Text>
<Hypertext Name="FailureLogFileLink" X="11" Y="121" Width="-11" Height="42" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="22" Y="163" Width="-11" Height="51" FontId="3" TabStop="yes" HideWhenDisabled="yes" />
<Text Name="FailureRestartText" X="-11" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>
</Page>
</Theme>

BIN
wixstdba/Resources/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 880 B

File diff suppressed because it is too large Load Diff

56
wixstdba/precomp.h Normal file
View File

@@ -0,0 +1,56 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="precomp.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// Precompiled header for standard bootstrapper application.
// </summary>
//-------------------------------------------------------------------------------------------------
#pragma once
#include <windows.h>
#include <gdiplus.h>
#include <msiquery.h>
#include <objbase.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <stdlib.h>
#include <strsafe.h>
#include "dutil.h"
#include "memutil.h"
#include "dictutil.h"
#include "dirutil.h"
#include "fileutil.h"
#include "locutil.h"
#include "logutil.h"
#include "pathutil.h"
#include "resrutil.h"
#include "shelutil.h"
#include "strutil.h"
#include "thmutil.h"
#include "uriutil.h"
#include "xmlutil.h"
#include "IBootstrapperEngine.h"
#include "IBootstrapperApplication.h"
#include "BalBaseBootstrapperApplication.h"
#include "balinfo.h"
#include "balcondition.h"
HRESULT CreateBootstrapperApplication(
__in HMODULE hModule,
__in BOOL fPrereq,
__in IBootstrapperEngine* pEngine,
__in const BOOTSTRAPPER_COMMAND* pCommand,
__out IBootstrapperApplication** ppApplication
);
#include "..\bafunctions\IBootstrapperBAFunction.h"

25
wixstdba/resource.h Normal file
View File

@@ -0,0 +1,25 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="resource.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//-------------------------------------------------------------------------------------------------
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
//
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

61
wixstdba/wixstdba.cpp Normal file
View File

@@ -0,0 +1,61 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="wixstdba.cpp" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// Setup chainer/bootstrapper standard UI for WiX toolset.
// </summary>
//-------------------------------------------------------------------------------------------------
#include "precomp.h"
static HINSTANCE vhInstance = NULL;
extern "C" BOOL WINAPI DllMain(
IN HINSTANCE hInstance,
IN DWORD dwReason,
IN LPVOID /* pvReserved */
)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
::DisableThreadLibraryCalls(hInstance);
vhInstance = hInstance;
break;
case DLL_PROCESS_DETACH:
vhInstance = NULL;
break;
}
return TRUE;
}
extern "C" HRESULT WINAPI BootstrapperApplicationCreate(
__in IBootstrapperEngine* pEngine,
__in const BOOTSTRAPPER_COMMAND* pCommand,
__out IBootstrapperApplication** ppApplication
)
{
HRESULT hr = S_OK;
BalInitialize(pEngine);
hr = CreateBootstrapperApplication(vhInstance, FALSE, pEngine, pCommand, ppApplication);
BalExitOnFailure(hr, "Failed to create bootstrapper application interface.");
LExit:
return hr;
}
extern "C" void WINAPI BootstrapperApplicationDestroy()
{
BalUninitialize();
}

16
wixstdba/wixstdba.def Normal file
View File

@@ -0,0 +1,16 @@
;-------------------------------------------------------------------------------------------------
; <copyright file="wixstdba.def" company="Outercurve Foundation">
; Copyright (c) 2004, Outercurve Foundation.
; This software is released under Microsoft Reciprocal License (MS-RL).
; The license and further copyright text can be found in the file
; LICENSE.TXT at the root directory of the distribution.
; </copyright>
;
; <summary>
; WiX Standard Bootstrapper Application DLL entry points.
; </summary>
;-------------------------------------------------------------------------------------------------
EXPORTS
BootstrapperApplicationCreate
BootstrapperApplicationDestroy

19
wixstdba/wixstdba.rc Normal file
View File

@@ -0,0 +1,19 @@
//-------------------------------------------------------------------------------------------------
// <copyright file="wixstdba.rc" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// WiX Extendend Bootstrapper Application resource file.
// </summary>
//-------------------------------------------------------------------------------------------------
#define VER_APP
#define VER_ORIGINAL_FILENAME "wixextba.dll"
#define VER_INTERNAL_NAME "wixextba"
#define VER_PRODUCT_NAME "WiX Extendend Bootstrapper Application"
#define VER_FILE_DESCRIPTION "WiX Extendend Bootstrapper Application"
#include "wix.rc"

144
wixstdba/wixstdba.vcxproj Normal file
View File

@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="wixstdba.vcxproj" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{41085a22-e6aa-4e8b-ab1b-ddee0dc89dfa}</ProjectGuid>
<RootNamespace>WixStdBA</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<ProjectName>wixextba</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</GenerateManifest>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
</PropertyGroup>
<PropertyGroup>
<ExtraDefinitions>
</ExtraDefinitions>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WiX)SDK\VS2010\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;DEBUG;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>$(ProjectDir)..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WiX)SDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>wixstdba.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WiX)SDK\VS2010\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);$(ExtraDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
<ProgramDataBaseFileName>$(IntDir)$(ProjectName).pdb</ProgramDataBaseFileName>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CallingConvention>StdCall</CallingConvention>
<TreatWarningAsError>true</TreatWarningAsError>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>$(ProjectDir)..\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>dutil.lib;balutil.lib;comctl32.lib;gdiplus.lib;shlwapi.lib;wininet.lib;version.lib;msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WiX)SDK\VS2010\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>wixstdba.def</ModuleDefinitionFile>
<GenerateDebugInformation>false</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="WixStandardBootstrapperApplication.cpp" />
<ClCompile Include="wixstdba.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="Resources\logo.png" />
<None Include="Resources\LoremIpsumLicense.rtf" />
<None Include="Resources\HyperlinkTheme.wxl" />
<None Include="Resources\HyperlinkTheme.xml" />
<None Include="Resources\RtfTheme.wxl" />
<None Include="Resources\RtfTheme.xml">
<SubType>Designer</SubType>
</None>
<None Include="wixstdba.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="wixstdba.rc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="precomp.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="WixStandardBootstrapperApplication.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wixstdba.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="wixstdba.def">
<Filter>Source Files</Filter>
</None>
<None Include="Resources\HyperlinkTheme.wxl">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\HyperlinkTheme.xml">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\logo.png">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\LoremIpsumLicense.rtf">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\RtfTheme.wxl">
<Filter>Resource Files</Filter>
</None>
<None Include="Resources\RtfTheme.xml">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="precomp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="wixstdba.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>