Wix: how to create database using SqlScript - database

I need to create a simple database named MyDB by using Wix by using SqlString. Below is my code snippet. For the line (SQL="CREATE DATABASE MyDB"), may i know is this correct and will it create 'MyDB' database? I've set the User and Server attribute correctly. However, this allows installation but it does not create the database. Can anyone point out what is wrong or missing?
<sql:SqlDatabase Id='SqlDatabase' Database='master' User='SQLUser' Server='[SQLSERVER]'
CreateOnInstall='no' DropOnUninstall='no' ContinueOnError='yes'>
<sql:SqlString Id="InitialCreateDB" ExecuteOnInstall="no" ContinueOnError="yes"
SQL="CREATE DATABASE MyDB"/>
</sql:SqlDatabase>
Thanks in advance.

Why don't you have a script file containing SQL code to create the database.
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">
<Product Name='SQL app 1.0' Id='DB501C18-86C7-4D14-AEC0-86416A69ABDE' Language='1033' Codepage='1252'
Version='1.0.0' Manufacturer='ABC Ltd.'>
<Package Id='????????-????-????-????-????????????' Keywords='Installer' Description="SQL App 1.0 Installer"
Comments='Comment.' Manufacturer='ABC Ltd.' InstallerVersion='100'
Languages='1033' Compressed='yes' SummaryCodepage='1252' />
<Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' />
<User Id="MySQLUser" Name="[SQLUSER]" Password="[SQLUSERPASSWORD]"></User>
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='INSTALLDIR' Name='TestSQL'>
<Component Id="MySqlComponent" Guid="C50999A0-02FD-42d5-9F65-7375318DD328">
<SqlDatabase Id="MySqlDatabase" Database="MyDatabase" Server="[SQLSERVER]" Instance="[SQLINSTANCE]"
CreateOnInstall="yes" DropOnUninstall="yes" User="MySQLUser" ContinueOnError="yes">
<SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateTablesBin"></SqlScript>
</SqlDatabase>
</Component>
</Directory>
</Directory>
</Directory>
<Binary Id="CreateTablesBin" src="CreateDatabase.sql"></Binary>
<Feature Id='Complete' Level='1' Description="Full" Title="Full Installation">
<ComponentRef Id='MySqlComponent' />
</Feature>
</Product>
</Wix>

Set the CreateOnInstall value to "yes". This will than create an instance of the database.

Related

Showing WixUI_dialog conditionally

Currently struggling with an installer that should have different behaviour depending on a registry value.
If the registry value is not set then the installer should show the classic dialog to select the installation path and then store that path in the registry so that next time the .msi file, or an updated version thereof, is processed, it "knows" exactly where the repair should be made or the update deployed.
I have these snippets in my product.wxs:
<!-- Registry key location -->
<Property Id="MBREGISTRYKEY" Value="SOFTWARE\MyCompany\MyApp" Secure="yes"/>
<Property Id="PREVIOUS_PATH" Secure="yes">
<RegistrySearch Root="HKLM" Key="[MBREGISTRYKEY]" Name="Path" Type="directory" Id="PreviousPath"/>
</Property>
and
<Fragment>
<WixVariable Id="WixUIBannerBmp" Value="$(var.SolutionDir)Assets\Visuals\wix-banner.bmp"/>
<WixVariable Id="WixUIDialogBmp" Value="$(var.SolutionDir)Assets\Visuals\wix-background.bmp"/>
<UI>
<UIRef Id="WixUI_InstallDir"/>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg" Order="2">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">1</Publish>
</UI>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLATIONDIR">
<Directory Id="CONFIGINSTALLATIONDIR" Name="config" />
</Directory>
</Directory>
<SetDirectory Id="INSTALLATIONDIR" Value="[WindowsVolume]MyApp" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLATIONDIR" />
</Fragment>
I have found plenty of examples here on SO and elsewhere that allow the installer to display different dialogs depending on conditions such as a registry value or an environment variable. What I have found nowhere is an example of what I'm trying to achieve, which is skipping the UI altogether, not just one or two of the dialogs in the UI, if my registry value is set. This is a requirement because deployment of updates must be unattended.

Running SQL Script file through Wix using <sql:SqlScript> element

I am new to Wix Installer. I have a requirement where I have to provide credentials for SQL Server login and run a script from a specific path.
I am not getting what's going wrong.The project is build successfully and .msi is created. After running it I get the following Error:
Error 26204. Error -2147217900: failed to execute SQL string, error detail: Incorrect syntax near '»'., SQL key: CreateUpsizingDatabase SQL string: print convert(varchar(25),GetDate(),121) + ' Executing file: SqlTest.sql'
My Sql Script File is as below:
print convert(varchar(25),GetDate(),121) + ' Executing file: SqlTest.sql'
Below is My code:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">
<Product Id="*" Name="SqlTest" Language="1033" Version="1.0.0.0" Manufacturer="BLRSCCMCAS01" UpgradeCode="0931a445-07bf-4494-b130-a1f96155021f">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SqlTest" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<Binary Id="CreateUpsizingDatabase" SourceFile="C:\Temp\SqlTest.sql" />
<util:User Id="SQLUser" Name="[User]" Password="[Password]" />
<sql:SqlDatabase Id="SqlDatabase" Database="[MyDb]" Server="[Server]" User="SQLUser" />
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SqlTest" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="SqlComponent" Guid="15CCE46E-8EA5-42CA-80C5-AC3DB30A9716">
<sql:SqlScript Id="CreateDatabases" SqlDb="SqlDatabase" ExecuteOnInstall="yes" BinaryKey="CreateUpsizingDatabase" />
<CreateFolder/>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
It looks like you have a UTF8 BOM () in there. Try saving the file as "Unicode (UTF8 Without signature)" using the advanced save options in visual studio.
I got the same error, UTF8 with or without signature both failed.
I think the chars in our script string cause the problem (in my case, I included some chinese chars).
I tried to re-generated sql script from sql server, and save this file in ANSI format. It works!
And i did some query, the chinese chars are correct in sql server.
an article you might want to refer: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Error-executing-sql-scripts-with-WIX-td1488703.html

Win 32 application is not launching in Win 64 bit OS

In application there is no separate dependencies for 32 or 64 bit. It's a common WPF application and i'm not using any third party .dll. If i pull the release folder files and run in it on Win 8.1 64 bit it's working.
When i tried to run the application after the installation,the application is not launching , no error message and even i tried to launch it from command prompt..no error message.
I'm using Wix 3.8 to make the installer.
Here are the steps what i did so for:
VS 2012 Configuration manager:
Debug:
Release:
PrintUtility is the exe of the applicaiton.
PrintUtilityExe is the BootStrapper of WIX.
SetupProjectInstaller is the .msi installer of WIX.
When i made the installer through WIX: SetupProjectInstaller.msiand installed it on Win 64 bit 8.1, the application is not launching.
Here is the wix code: Product.wxs
<?xml version="1.0"?>
<?define ProductVersion = "1.0.0.0"?>
<?define ProductUpgradeCode = "9fe100b5-8486-46c4-b3ab-15da1931ba4d"?>
<?define SourceDir = "C:\Users\krangaraj\Documents\Visual Studio 2012\Projects\TestPrintUtility\TestPrintUtility\bin\x86\Release" ?>
<?define SourceDirImages = "C:\Users\krangaraj\Documents\Visual Studio 2012\Projects\TestPrintUtility\TestPrintUtility\bin\x86\Release\Res" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" UpgradeCode="$(var.ProductUpgradeCode)"
Name="TestPrint Utility" Version="$(var.ProductVersion)" Manufacturer="TTT" Language="1033" >
<Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package" InstallScope="perMachine"/>
<Media Id="1" Cabinet="TestPrintUtility.cab" EmbedCab="yes"/>
<Icon Id="ProductIcon" SourceFile="TestPrintInstaller.ico"/>
<Icon Id="TestPrintInstaller.ico" SourceFile="TestPrintInstaller.ico"/>
<Property Id="ARPPRODUCTICON" Value="TestPrintInstaller.ico" />
<Upgrade Id="$(var.ProductUpgradeCode)">
<UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED"/>
<UpgradeVersion Minimum="0.0.0" Maximum="$(var.ProductVersion)" IncludeMinimum="yes" IncludeMaximum="no"
Property="OLDERVERSIONBEINGUPGRADED"/>
</Upgrade>
<Condition Message="A newer version of this software is already installed.">NOT NEWERVERSIONDETECTED</Condition>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLDIR" Name="TestPrint Utility">
<Component Id="TestPrintUtility" Guid="{47D7C69E-81C2-4FD6-B77B-790FBF5F7B39}">
<File Id="TestPrintUtility.exe" Source="$(var.SourceDir)\TestPrintUtility.exe" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="bGround.png" Guid="{64AE1DAD-2502-4171-AF80-A153D59D8996}">
<File Id="bGround.png" Source="$(var.SourceDir)\bGround.png" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="cspstat.dll" Guid="{69CAD367-A9D1-46E7-B8BA-CF839D034175}">
<File Id="cspstat.dll" Source="$(var.SourceDir)\cspstat.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="TTT.I18N.dll" Guid="{B20D2708-0422-4617-815F-C9143A75833F}">
<File Id="TTT.I18N.dll" Source="$(var.SourceDir)\TTT.I18N.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="TTTDongleManage.dll" Guid="{B4A38CE6-C34E-4391-9DCA-A142DB3BCA66}">
<File Id="TTTDongleManage.dll" Source="$(var.SourceDir)\TTTDongleManage.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="HtmlAgilityPack.dll" Guid="{D63578BD-902A-4899-A0BF-C82146117B03}">
<File Id="HtmlAgilityPack.dll" Source="$(var.SourceDir)\HtmlAgilityPack.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="HtmlAgilityPack.pdb" Guid="{8CD7A15D-C92E-4F41-A097-8A06CFB01774}">
<File Id="HtmlAgilityPack.pdb" Source="$(var.SourceDir)\HtmlAgilityPack.pdb" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="HtmlAgilityPack.xml" Guid="{95B2ABCB-3E8C-4824-850C-7C3D29FB814D}">
<File Id="HtmlAgilityPack.xml" Source="$(var.SourceDir)\HtmlAgilityPack.xml" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="KGDLLV10.dll" Guid="{AB144098-3E3E-42AD-94A4-ED8F40E93915}">
<File Id="KGDLLV10.dll" Source="$(var.SourceDir)\KGDLLV10.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="Microsoft.Expression.Interactions.dll" Guid="{1EEF5A4C-B0AF-4528-8F57-80A8A62743EB}">
<File Id="Microsoft.Expression.Interactions.dll" Source="$(var.SourceDir)\Microsoft.Expression.Interactions.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="Microsoft.Expression.Interactions.xml" Guid="{8D772282-693B-4B4F-8D50-BC0A74F694E1}">
<File Id="Microsoft.Expression.Interactions.xml" Source="$(var.SourceDir)\Microsoft.Expression.Interactions.xml" KeyPath="yes" Checksum="yes"/>
</Component>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ProgramMenuSubfolder" Name="TestPrint Utility">
<Component Id="ApplicationShortcuts" Guid="12345678-1234-1234-1234-333333333333">
<Shortcut Id="ApplicationShortcut1" Name="TestPrint Utility" Description="TestPrint Utility"
Target="[INSTALLDIR]TestPrintUtility.exe" WorkingDirectory="INSTALLDIR"/>
<RegistryValue Root="HKCU" Key="Software\TTT PIE\TestPrintUtility"
Name="installed" Type="integer" Value="1" KeyPath="yes"/>
<RemoveFolder Id="ProgramMenuSubfolder" On="uninstall"/>
</Component>
</Directory>
</Directory>
<Directory Id="DesktopFolder" Name="Desktop">
<Component Id="ApplicationShortcutDesktop" Guid="{C80E4373-F31A-4A2E-90A5-F3E2EFD149AA}">
<Shortcut Id="ApplicationDesktopShortcut"
Name="TestPrint Utility"
Description="TestPrint Utility"
Target="[INSTALLDIR]TestPrintUtility.exe"
WorkingDirectory="INSTALLDIR"/>
<RemoveFolder Id="DesktopFolder" On="uninstall"/>
<RegistryValue
Root="HKCU"
Key="Software/MyAppName"
Name="installed"
Type="integer"
Value="1"
KeyPath="yes"/>
</Component>
</Directory>
</Directory>
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallValidate"/>
</InstallExecuteSequence>
<Feature Id="DefaultFeature" Level="1">
<ComponentRef Id="TestPrintUtility"/>
<ComponentRef Id="bGround.png"/>
<ComponentRef Id="cspstat.dll"/>
<ComponentRef Id="TTT.I18N.dll"/>
<ComponentRef Id="TTTDongleManage.dll"/>
<ComponentRef Id="HtmlAgilityPack.dll"/>
<ComponentRef Id="HtmlAgilityPack.pdb"/>
<ComponentRef Id="HtmlAgilityPack.xml"/>
<ComponentRef Id="KGDLLV10.dll"/>
<ComponentRef Id="Microsoft.Expression.Interactions.dll"/>
<ComponentRef Id="Microsoft.Expression.Interactions.xml"/>
</Feature>
</Product>
</Wix>
Note: To minimize it i removed some part of comportment code from the above lines
Then i used this final piece code to make the final .msi:
set WIX_BIN=C:\Program Files\WiX Toolset v3.8\bin\
echo Wix Toolset Bin Path: %WIX_BIN%
"%WIX_BIN%candle.exe" Product.wxs -ext WixUtilExtension
if exist Product.wixobj ("%WIX_BIN%light.exe" -out Product.msi Product.wixobj -ext WixUIExtension -ext WixUtilExtension)
Here is the SetupProjectInstaller.wixproj code:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.8</ProductVersion>
<ProjectGuid>f5d8db53-64db-41d7-9cf9-fb9a151fd45b</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>SetupProjectInstaller</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="Product.wxs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Utility\.Design\.Design.csproj">
<Name>.Design</Name>
<Project>{58a00d29-5dc5-4b9e-a18d-6fe6d1f0c1cf}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
<ProjectReference Include="..\Utility\Utility.csproj">
<Name>Utility</Name>
<Project>{7316ff68-d2ba-4b9a-8d92-15e93ac7bc4e}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
<ProjectReference Include="..\Utility\WPFSpark\WPFSpark.csproj">
<Name>WPFSpark</Name>
<Project>{98be1309-ceb4-45ee-b4ad-28baf0570fab}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
Please help me that how can i make it work on Win 64 bit OS. Thank you very much.
SS:
![enter image description here][3]
![enter image description here][4]
![enter image description here][5]
Edit:
Finally i moved my project to VS2012 on Windows 8 OS 64 bit. When i launch the project in VS & it's working fine.
In my understanding i'm making some mistake in Configuration side and also in WIX side. Any help guys???
Note: The application can be installed on Win 32 without any problem.
When you create a 32-bit MSI (compiled as x86) and then try to install it on a 64-bit OS, the registry entries will get written to the WOW64 hive (HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft). The 64-bit version of Windows looks in the 64-bit registry hive and not the WOW64 registry hive when looking for custom registry entries. In your WIX script I see that there are couple of registry entries which gets set, that might be going to the WOW64 hive and that could be the possible reason why your application is not running properly. One solution is to build the MSI in both x86 and x64, if it finally gets deployed to 32 and 64 bit OS.

Drop database from WiX installer

The properties [DATABASE_NAME] and [SERVER_NAME] are defined by the user at installation and it seems like unless they are hard coded then doing this fails:
<Component Id="Component.Sql.Database" Guid="*">
<sql:SqlDatabase
Id="Sql.Database"
Database="[DATABASE_NAME]"
Server="[SERVER_NAME]"
CreateOnInstall="yes"
DropOnUninstall="yes"
ContinueOnError="no"
ConfirmOverwrite="yes" />
</Component>
The bit that is supposed to drop the db is DropOnUninstall="yes"
I've found a post on the WiX user group suggesting the following approach to dropping the database on uninstall:
<Component Id="Component.Sql.DropDatabase" Guid="146CD264-1F6D-4E19-BFCC-E544F5BD2D6C">
<sql:SqlString
Id="Sql.DropDatabase"
SqlDb="Sql.Master"
Sequence="1000"
ExecuteOnInstall="no"
ExecuteOnUninstall="yes"
ExecuteOnReinstall="no"
ContinueOnError="no"
SQL="DROP DATABASE [\[][DATABASE_NAME]\[]]"/>
</Component>
<Fragment>
<sql:SqlDatabase Id="Sql.Master" Database="master" Server="[SERVER_NAME]" />
</Fragment>
The idea being that at uninstall the DROP DATABASE ... command is executed on the master database on the server. However this SQL statement never gets executed on the server.
The MSIEXEC log doesn't seem to give any information and I get no errors.
Has anyone successfully achieved this (before I write a custom action to do this)?
I've tried copying the database name and server to the registry to cache them, but this hasn't helped.
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" <!-- Need to import this -->
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension"><!-- Need to import this -->
<sql:SqlDatabase Id="SqlDatabase"
Database="TestDatabase"
Server="[SQLSERVER]"
DropOnUninstall="yes"
User="SQLUser">
This will definitely work.....

Wix: Problem creating database with SqlFileSpec and SqlLogFileSpec Filename attribute set under c:\Program Files directory

I have a problem creating database with SqlFileSpec and SqlLogFileSpec Filename attribute set under c:\Program Files directory. I also checked that the folder (C:\Program Files\TestProject) already created. Does anyone know how to solve this?
This is the error:
Error 26201. Error -2147217900: failed to create SQL database: MyDatabase, error detail: CREATE DATABASE failed. Some file names listed could not be created. Check related errors..
<sql:SqlFileSpec Id="Mdf" Name="MyDatabase_Mdf" Filename="['INSTALLLOCATION']\MyDatabase.mdf" Size="3072KB" MaxSize="UNLIMITED" GrowthSize="1024KB"/>
<sql:SqlLogFileSpec Id="Ldf" Name="MyDatabase_log" Filename="['INSTALLLOCATION']\MyDatabase_log.ldf" Size="2048KB" MaxSize="2048GB" GrowthSize="10%"/>
...
<Property Id='INSTALLLOCATION'>C:\Program Files\TestProject</Property>
Thanks in advance.
The quotes around INSTALLLOCATION should be removed - use just [INSTALLLOCATION]. And make sure the mentioned files (mdf/ldf) are there by the time the action runs. Don't forget that the verbose log is your friend here.
Try this
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">
<Product Name='SQL app 1.0' Id='DB501C18-86C7-4D14-AEC0-86416A69ABDE' Language='1033' Codepage='1252'
Version='1.0.0' Manufacturer='ABC Ltd.'>
<Package Id='????????-????-????-????-????????????' Keywords='Installer' Description="SQL App 1.0 Installer"
Comments='Comment.' Manufacturer='ABC Ltd.' InstallerVersion='100'
Languages='1033' Compressed='yes' SummaryCodepage='1252' />
<Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' />
<User Id="MySQLUser" Name="[SQLUSER]" Password="[SQLUSERPASSWORD]"></User>
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='INSTALLDIR' Name='TestSQL'>
<Component Id="MySqlComponent" Guid="C50999A0-02FD-42d5-9F65-7375318DD328">
<SqlDatabase Id="MySqlDatabase" Database="MyDatabase" Server="[SQLSERVER]" Instance="[SQLINSTANCE]"
CreateOnInstall="yes" DropOnUninstall="yes" User="MySQLUser" ContinueOnError="yes">
<SqlScript Id="CreateDatabase" ExecuteOnInstall="yes" BinaryKey="CreateTablesBin"></SqlScript>
</SqlDatabase>
</Component>
</Directory>
</Directory>
</Directory>
<Binary Id="CreateTablesBin" src="CreateDatabase.sql"></Binary>
<Feature Id='Complete' Level='1' Description="Full" Title="Full Installation">
<ComponentRef Id='MySqlComponent' />
</Feature>
</Product>
</Wix>
CreateDatabase.sql file will contain the script to execute some script, create database, etc.
I've managed to fix my issue by using ".\SQLExpress2012" instead of "[MachineName]\SQLExpress2012" or "[ipAddress]\SQLExpress2012". I can only speculate that by doing the former, you might not be using TCP/IP method of connecting and using named pipes instead.
Also you might want to check your SQL Server Configuration and verify that your server instance support these connection methods.

Resources