Automating installation of SQL Server, SSDT, Office 2013 and Visual Studio 2012

Automated and unattended installations

Being able to install software fully automated can significantly reduce download times, walking through many graphical setup tools and waiting to provide options, that you can typically fully automate.
The following use case scenario will show you why, and will give you insights on how I was able to install 5 Surface Pros with all software requirements as listed below.

The challenge of having to run manual installations

As part of a setup I needed run on several "just out of the box" Surface Pro, my requirements were to:

  • Install SQL Server Database Engine
  • Install SQL Server Management Tools
  • Install SQL Server Data Tools for Visual Studio 2012 (BI and Database Projects)
  • Install Office 2013
  • Install Visual Studio 2012
  • Install Visual Studio 2012 SP1

My setup time was limited to only about 1 hour total, to install about 5 Surface Pro, and the biggest constraints:
- The Surface Pros will be waiting for me as I get to the venue
- Internet Connectivity might "not yet" be available as we get to the event onsite.

Getting Installation Media and software bits for automated / unattended setup

First things, first getting the installation bits in place.
I decided to use a brand new 32 Gb MicroSD card on which I could copy all my installation bits and also expand any of the downloads for which the creation of an administrative install is necessary in order to be able to automate the installation.
In order to prepare my installation I downloaded the bits I needed, and extracted them to the a MicroSD card.

Downloaded installation bits and extracted to a MicroSD Card (ISO files open very easily on Windows 8 and can be copied)

Created a downloads folder and downloaded the follow updates / tools to d:\Downloads on the MicroSD Card

Visual Studio Update 1 (vsupdate_KB2707250.exe - http://www.microsoft.com/en-au/download/details.aspx?id=35774)

SQL Server Data Tools (December Update) for Database projects for Visual Studio 2012 - (SSDTSETUP.EXE - SSDT for Visual Studio 2012: http://msdn.microsoft.com/en-us/jj650015)

SQL Server Data Tools Business Intelligence for Visual Studio 2012 - (SSDTBI_VS2012_x86_ENU.exe - http://www.microsoft.com/en-us/download/details.aspx?id=36843)

Creating Administrative Install points for the downloaded bits

To create administrative install points and thus prevent the requirement to have internet connectivity on any of the other systems you anticipate installing you have to extract the installation bits or create an administrative installation point.

Here is what you do for the updates above, the following command line plus a little bit of patience downloading the additional bits required for the unattended install.

Open an administrative command prompt, then browse to the D:\drive (my MicroSD card).

On the D:\drive - type the following commands

cd downloads
vsupdate_kb20750.exe /layout d:\vs2012update
SSDTSETUP.EXE /layout d:\SSDTDATA
SSDTBI_VS2012_x86_ENU.exe /x:d:\SSDTBI /q

Editing Configuration files and unattended setup files

Modifying Office 2013 Installation bits for unattended setup

While there are several ways to install Office 2013 unattended, the easiest one is to use a configuration file.
For Office, that config file is named CONFIG.XML.
Locate the CONFIG.XML file on your installation media and modify as highlighted below.
More details on how to modify the config file for automated office installation can be found at the following TechNet Article: http://technet.microsoft.com/en-us/library/dd630736.aspx

Modifying Visual Studio 2012 Installation bits for unattended setup

Similar to creating and editing a config.xml file for Office, you will do the same for Visual Studio.

You'll find detailed information on how to create / edit the unattended installation file in this MSDN article: http://msdn.microsoft.com/en-us/library/ee225237.aspx.
The file is called AdminDeployment.xml and can be found in the IDEInstall folder on the installation media.

Modify the highlighted line and select each of the options that should be installed.

 

Ready for install - command line syntax

Installing SQL Server from the command line (and why I avoid installing SQL Server Data Tools as part of it)

The following MSDN article explains how to perform an unattended installation of SQL Server 2012- http://msdn.microsoft.com/en-us/library/ms144259.aspx.

This is the command line I use, which probably requires a little bit of explanation:

 

 d:\sqlserver2012Developer\setup.exe /Q /ACTION=INSTALL /FEATURES=SQLENGINE,REPLICATION,DQC,CONN,BC,SDK,BOL,SSMS,ADV_SSMS,SNAC_SDK /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="NT Service\MSSQLSERVER" /SQLSYSADMINACCOUNTS=%userdomain%\%username% /INDICATEPROGRESS=1 /IACCEPTSQLSERVERLICENSETERMS /PID=productkey

/Q - Quiet installation, meaning that you are performing an unattended installation of SQL Server.

/ACTION=INSTALL - relatively self-explaining, performs an installation option

/FEATURES= - enlists all the features that you want to install with SQL Server. While you will see options in the above mentioned blog to install with the TOOLS parameter, the TOOLS parameter would install SQL Server Management tools as well as SQL Server Data Tools (Visual Studio 2010 Shell). Since I opted to only install SQL Server Data Tools in Visual Studio 2012 and thus avoid the 2010 shell to be installed, there currently is no other option but enlisting all the features separately. Note: ADV_SSMS should always be used in combination with SSMS, since otherwise you will not have the full SQL Server Management Studio capabilities which you'll require for AlwaysOn and many of the HA features enablement using the GUI or the wizards.

/INSTANCENAME= MSSQLSERVER - default instance

/SQLSVCACCOUNT= specifies the account user and typically is used in combination with the /SQLSVCPASSWORD parameter. Since in this installation I am defaulting my install to run under the NTService account, there is no need to specify the password.

/SQLSYSADMINACCOUNTS=  specifies each of the sysadmin accounts that need to be added to the SQL installation. In my example I use the %userdomain%\%username% variable to include my local user as sysadmin. You can add more sysadminusers using a comma separated list.

/INDICATEPROGRESS=1 - indicates that the installation process should provide verbose listing to the command line.

/IACCEPTSQLSERVERLICENSETERMS - indicates the agreement to the license terms of SQL Server

/PID=productkey - provides the product key for the SQL Server installation, if not specified, it might be that the PID is listed in a file name DEFAULTSETUP.INI on the installation media (for MSDN versions). Note that without a productID SQL Server will only install as evaluation copy.

Installing SQL Server Data Tools Business Intelligence from the command line.

Since you already extracted the installation bits of SQL Server Data Tools Business Intelligence above, you will use the following command to install SQL Server Data Tools unattended.
Because I didn't specify SQL Server Data Tools installation as part of SQL Server Installation, the Visual Studio 2010 Shell will never be installed, and you will only get the Visual Studio 2012 Shell.

d:\ssdtbi\setup.exe /ACTION=INSTALL /FEATURES=SSDTBI_VS2012 /Q /IACCEPTSQLSERVERLICENSETERMS
 

Installing SQL Server Data Tools Database Projects from the command line.
After installing SQL Server Data Tools for Business Intelligence, you will now add the installation of database projects to the Visual Studio Shell.
I choose the /passive parameter instead of the /q or /silent parameter in order to show interaction and execution progress in the GUI (Graphical User Interface)

d:\ssdtdata\ssdtsetup.exe /passive

Installing Office 2013 unattended
In previous steps you edited the office config.xml file. In order to perform the unattended installation you will have to specify the configuration file at the command line:

d:\office2013\setup.exe /config d:\office2013\config.xml

After the installation of Office 2013, a dialog box (graphical) will display that the installation ran successfully, click OK to continue installation

Installing Visual Studio unattended
In previous steps you edited the Visual Studio Admindeployment.xml file. In order to perform the unattended installation you will have to specify the configuration file at the command line:

d:\VisualStudio2012\vs_ultimate.exe /adminfile d:\visualstudio2012\admindeployment.xml /quiet /norestart

Installing Visual Studio Update 1
Since you already extracted (layout) the installation bits of Visual Update 1, the next step would now be to perform the unattended installation of the Visual Studio 2012 Update.

d:\vs2012update\vsupdate_kb2707250.exe /quiet

All Set?
One last thing to do is perform a system reboot, so some updates can kick in and we are all set.
So how does my Start screen look like at the next login? All set - and ready to go :) - and - no Visual Studio 2010 Shell, but everything on Visual Studio 2012 

Putting it all together
Since I have to perform this installation frequently, and certainly wanted to avoid all the typing, I actually put everything together in a nice batch file:

InstallALLMyTools.CMD

@echo off
echo NOTE:Uncomment the extraction of the downloaded files if you haven't done so
rem d:\downloads\SSDTBI_VS2012_x86_ENU /x:d:\SSDTBI /q
rem d:\downloads\en_sql_server_data_tools_december_2012_for_visual_studio_2012_x86_x64 /layout d:\SSDTDATA
rem d:\downloads\vsupdate_kb20750.exe /layout d:\vs2012update

echo installing SQL Serverv2012 Developer Edition
d:\sqlserver2012Developer\setup.exe /Q /ACTION=INSTALL /FEATURES=SQLENGINE,REPLICATION,DQC,CONN,BC,SDK,BOL,SSMS,ADV_SSMS,SNAC_SDK /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="NT Service\MSSQLSERVER" /SQLSYSADMINACCOUNTS=%userdomain%\%username% /INDICATEPROGRESS=1 /IACCEPTSQLSERVERLICENSETERMS

echo Installing SQL Server Data Tools - Database Projects
d:\ssdtdata\ssdtsetup.exe /passive

echo Installing SQL Server Data Tools - BI projects
d:\ssdtbi\setup.exe /ACTION=INSTALL /FEATURES=SSDTBI_VS2012 /Q /IACCEPTSQLSERVERLICENSETERMS

echo Installing Office 2013 unattended
d:\office2013\setup.exe /config d:\office2013\config.xml

echo Installing Visual Studio 2012
d:\VisualStudio2012\vs_ultimate.exe /adminfile d:\visualstudio2012\admindeployment.xml /quiet /norestart

echo Installing Visual Studio 2012 Updates
d:\vs2012update\vsupdate_kb2707250.exe /quiet /forcerestart

How long did my automated setup really take?

As i spent quite some time gathering my installation bits, copying them out to a MicroSD, and creating the necessary batch files to automate the unattended setup, the full installation of 5 machines took me significantly less, than when I had to perform manual installations on each of them.
Actually, for demo purposes on my own Surface Pro, I typically reset my entire environment to factory reset, and perform clean installs with only the components I need based on the events I present.

Everything else I pretty much run on Windows Azure (Virtual Machines), or I leverage our hands-on-lab portal for some of my demos (www.microsoft.com/sqlserverlabs)

Running the actual setup on my own Surface Pro, not calculating in the full extraction and pre-downloaded installation bits, completed a full install of all required components in less than 40 minutes.
Pretty neat for an installation of SQL Server, SQL Server Data Tools, full Office 2013 and Visual Studio 2012 including updates.
In my installation I actually reduced and avoided installing some of the Office components and Visual Studio 2012 components that I will never use, bringing my installation process down to less than 30 minutes.

More Details on SQL Server Data Tools can be found here, also note that you can install any .MSI file unattended as well as listed here