Copying the .iss File to the Windows Directory
After we have written (echoed) out the .iss file, we need to copy it to the Windows directory on the machine that we will install SQL Server on. Take a look at Listing 7. This code simply copies the SQL2K.iss file to the Windows directory and renames the file to Setup.iss.
Listing 7Copying the SQL2K.iss File to the Windows Directory and Renaming the File to Setup.iss.
REM Copy the and rename the auto-answer file for REM the setup program to the Windows directory i.e. C:\WinNT (echo Copying answer file to "%WinDir%".) (echo Copying answer file to "%WinDir%".) >> %LogFile% (copy /A /Y "%ISSFile%" "%WinDir%\setup.iss") >> %LogFile% 2>>&1
Well, we're almost there now! Before we continue with the completion of our installation script, let's take a look at what we have done so far.
Recorded our own .iss file. In the first article in this series, we generated our own .iss file with the configuration parameters that you specified for SQL Server.
Examined the program flow of our installation process. We reviewed the order that our scripts would be called in and how our program would use a single wrapper script. Allowing all of the subscripts (yep, there's more to come!), so we could do a complete installation of SQL Server.
Set up our installation script with all the comments needed to maintain the script. By specifying all the different sections within our comments section, we have ensured that our script can be maintained by others, allowing for a maintainable process for the scripts. As an aside, I use a versioning tool, such as Visual SourceSafe (VSS), for storing my scripts. When a change is made, I know who made the change, and I can roll back to a previous version without too much difficulty if necessary.
Ensured that all values have been supplied for the variables. By checking for the existence of values for parameters within our batch files, we have ensured that the users (whether us or our clients) supply the right parameters and ensured that we can at least identify minor problems easily.
Modified our script to write out the SQL2K.iss file. By writing our .iss file out every time, we can configure different parameters for different installations of SQL Server on differing hardware. For example, on a single partitioned machine, all the program files, data files, and transaction logs reside on the same disk. For a multiple partition machine, we may want to separate the data and transaction logs from the program files (which offers performance benefits for SQL Server).
Modified our script to copy and rename the SQL2k.iss file to the Windows directory. Writing out our SQL2k.iss file to a specific place on disk first (that is, not directly to the Windows directory) allows us to debug the script file by ensuring that our unattended file is correct before we execute the installation of SQL Server with the .iss file.
Installing SQL Server
So what now? Well, if you remember, we looked at how to install SQL Server silently, specifying an unattended file. So all we do now is specify the same command line in our batch file. The code you want to enter will look similar to Listing 8.
Listing 8Installing SQL Server, Specifying the setup.iss File as the Parameter Listing.
REM Installing SQL Server silently specifying the setup.iss file (echo Launching SQL setup, commands %AppPath%\setupsql.exe -s -m -SMS -f1 "%WinDir%\setup.iss".) (echo Launching SQL setup, commands %AppPath%\setupsql.exe -s -m -SMS -f1 "%WinDir%\setup.iss".) >> %LogFile% start /wait "%AppPath%\setupsql.exe" -s -m -SMS -f1 "%WinDir%\setup.iss" >> %LogFile% 2>>&1
We use the start/wait command to tell the batch file to wait until the installation of SQL Server has finished. This ensures that the installation is fully complete, so we can check that it has succeeded (by attempting to start the service) and letting us set the value for RETVAL (whether the installation succeeded or not).
Listing 9 shows that once the installation has completed (note that this immediately follows on from Listing 8), we attempt to start the service, and if successful set the return value and complete the script.
Listing 9Finalizing the Installation of SQL Server with the Batch File.
REM Make sure the SQL Server service gets started. (echo Attempting to start the SQL Server service "%InstanceName%".) (echo Attempting to start the SQL Server service "%InstanceName%".) >> %LogFile% (net start "%InstanceName%") >> %LogFile% 2>>&1 REM Set the return value set RETVAL=%ERRORLEVEL% goto :end
Finally, we notify the user that the script has completed. Add the code in Listing 10 directly after Listing 9.
Listing 10Finalizing the Installation of SQL Server with the Batch File.
REM ********************************************************************************************* REM Script end REM ********************************************************************************************* :end REM Notify that the script has completed (echo Script "InstallSQLServer.bat" completed with return value "%RETVAL%") (echo Script "InstallSQLServer.bat" completed with return value "%RETVAL%") >> %LogFile%
And there we go. That's it for the script that builds our .iss file and executes the silent install of SQL Server. Unfortunately, it is a little hard to check this script without setting values for all our parameters, otherwise our script would generate errors, reporting that values haven't been supplied for required parameters, after all that's why we spent so much time creating parameter checking!
So what do we do then to test our script? The best way is to write a wrapper script that will initialize the variables with the values we want. In the next article, we will begin to build our wrapper script (it will be completed over the series of articles).