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:
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 downloadsvsupdate_kb20750.exe /layout d:\vs2012updateSSDTSETUP.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)
Installing Office 2013 unattendedIn 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 unattendedIn 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 1Since 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 togetherSince 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:
@echo offecho NOTE:Uncomment the extraction of the downloaded files if you haven't done sorem d:\downloads\SSDTBI_VS2012_x86_ENU /x:d:\SSDTBI /qrem 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 Editiond:\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 /IACCEPTSQLSERVERLICENSETERMSecho Installing SQL Server Data Tools - Database Projectsd:\ssdtdata\ssdtsetup.exe /passiveecho Installing SQL Server Data Tools - BI projectsd:\ssdtbi\setup.exe /ACTION=INSTALL /FEATURES=SSDTBI_VS2012 /Q /IACCEPTSQLSERVERLICENSETERMSecho Installing Office 2013 unattendedd:\office2013\setup.exe /config d:\office2013\config.xmlecho Installing Visual Studio 2012d:\VisualStudio2012\vs_ultimate.exe /adminfile d:\visualstudio2012\admindeployment.xml /quiet /norestartecho Installing Visual Studio 2012 Updatesd:\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
This is an awesome post! Thanks!
I know that Visual Studio supports Multi-language installs (MUI). There are even language packs you can install. I even have automated my VS2012 MUI and Office 2013 MUI. I don't think there is any MUI support on SQL. But I was wondering about the MUI support for SSMS and SSDT. Is MUI support enabled for those tools? If so, how do you proceed for the installation?
Not sure about that answer, let me circle back and validate that for you
I'll be waiting for news here.
why are you installing SSDT & BI VS2012 before installing VS2012 ? as such you got VS2012 Shell installed in addition to the Visual Studio 2012.
Daniel - great feedback - the reason I do so is to make sure that in my installation I can "consider' the installation of VS2012 to be an optional install.
I have tried to give every account name I can under /SQLSVCACCOUNT parameter. But It keep failing with the error
The specified credentials for the SQL Server service are not valid. To continue, provide a valid account and password for the SQL Server service.
How can we make sure what account needs to be put in this parameter before starting the installation.
Can you please help me with this.