What worked for me was running SQL Server Express 2008 R2 SP1 installer from C# immediate custom action within my own installer. The custom action started new process - that sql express installer executable with command line parameters. See example below. This worked on Windows Server 2008 and Win7. The problem here is that for Windows 8 \ Server 2012 you will need SQL Server Express 2008 R2 SP2 because SP1 throws "known compatibility issues" warnings. And in SP2 they changed the installer so that it hangs on ExecuteStandardTimingsWorkflow step. This is the major blocker for me at the moment.
using (var myProcess = new Process
{
StartInfo =
{
FileName = prcssFilePath /*path to the SQLEXPR_x64_ENU.exe or SQLEXPR32_x86_ENU.exe*/,
Arguments = cmdLineArgs ?? string.Empty,
WindowStyle = (hideWnd) ? ProcessWindowStyle.Hidden : ProcessWindowStyle.Normal
}
})
{
if (runAsAdministrator)
{
myProcess.StartInfo.Verb = "runas";
}
myProcess.Start();
myProcess.WaitForExit();
return myProcess.ExitCode;