Automating the installation of my BI Demo platform with Data Explorer, Geoflow, Visual Studio 2012, BI Projects and Database Projects, SQL Server 2012 SP1 CU3
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.
This blog is an update to a previously posted blog (at the point in time CU3 for SQL Server 2012 and Visual Studio 2012 Update 2 were not available yet, and we didn't have Geoflow or Data Explorer publicly available)
The challenge of having to run manual installations
As part of a setup I needed run on several "just out of the box" machines, my requirements were to:
- Install SQL Server Database Engine including CU 3 update for SQLServer 2012 SP1
- 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
- Install Visual Studio Update 2
My setup time was limited to only about 1 hour total, to install about 9 kiosk machines, and the biggest constraints:
- The machines would only come with Windows 8 Professional pre-installed
- 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. (I use MicroSD to USB 3.0 adapters for fast deployment and being able to use the MicroSD in any device, including my Surface Pro)
Downloaded installation bits and extracted to a MicroSD Card (ISO files open very easily on Windows 8 and can be copied)
- SQL Server 2012 Developer Edition (used my MSDN license) - (evaluation copy available for download here: http://www.microsoft.com/en-us/download/details.aspx?id=29066)
- Visual Studio 2012 (used my MSDN license) - (evaluation copy available for download here: http://www.microsoft.com/visualstudio/eng/downloads)
- Office 2013 (used my MSDN license) - (evaluation copy available for download here: http://technet.microsoft.com/en-us/evalcenter/jj192782.aspx)
Created a downloads folder and downloaded the follow updates / tools to d:\Downloads on the MicroSD Card
Visual Studio Update 2 (http://www.microsoft.com/en-us/download/details.aspx?id=38188)
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)
Data Explorer Preview (http://office.microsoft.com/en-us/excel/redir/XT104019906.aspx)
Geoflow Preview (http://office.microsoft.com/en-us/redir/XT104048049.aspx)
SQL Server 2012 CU 3 update for SQL Server 2012 SP1 (http://support.microsoft.com/kb/2812412)
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
vs2012.2.exe /layout d:\vs2012update2
SSDTSETUP.EXE /layout d:\SSDTDATA
SSDTBI_VS2012_x86_ENU.exe /x:d:\SSDTBI /q
Extract the downloaded ZIP file with SQL Server 2012 SP1 CU 3 update Hotfix to d:\SQLServer2012Developer\PCUSource - file is named SQLServer2012-KB2812412-X64
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 /UpdateEnabled=True /UpdateSource=d:\SQLServer2012Developer\PCUsource
/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.
Including CU updates as part of the SQL Server installation process
/UpdateEnabled=True
/UpdateSource =<location>
SQL Server 2012 is smarter, faster when it comes to "slipstreaming" or applying updates, you can actually just drop the KB files in the same folder, and indicate that in the installation process, which will result in automatically including that updatesource during installation.
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 2 (it's a cumulative update, so you don't need to install update 1 first)
Since you already extracted (layout) the installation bits of Visual Update 2 the next step would now be to perform the unattended installation of the Visual Studio 2012 Update 2 .
d:\vs2012update2\vs2012.2.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 /UpdateEnabled=True /UpdateSource=d:\sqlserver2012Developer\PCUSource
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
:\vs2012update2\vs2012.2.exe /quiet /forcerestart
d:\DataExplorer\DataExplorer_1.0.3231.4(64-bit)
d:\Geoflow\Package\Geoflow Preview For Excel 2013
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 several 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 15 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
Comments
Anonymous
April 17, 2013
Very useful post for those of us who need to routinely set up development and demo environments. I can't count the number of times we have had a glitch in an important demo because of a minor manual change to an environment. Thanks!Anonymous
March 09, 2014
Dandy,
"...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. "
Is there a clean way to remove the 2010 shell after it has already been installed with the intial sql server install? assuming that 2012 was installed after the fact?
Thanks