Bohack

Check In and Tune Out!
 
 
« Linux Coloring of the Results
Clean Debian Etch Install »

Automated Installation Framework



Mass software installation is generally done with imaging of machines. The process is simple: a reference image is created and then software is installed onto it. Along the way we test the software, QC check the software installation against our environment, then regression test the software against accounts that will be used by our users. Finally ‘sysprep the image’ and then push out a gigantic image to the all the PC’s in the field and cross our fingers.

Some software just does not want to be imaged, so we find ourselves reverse engineering the software to make it work; licensing is usually to blame. This can sometime take weeks because it breaks other functionality. Many times we simply don’t have the time to image a PC and go through the entire process or it may be something that’s just not worth the time. Bohack’s rule of thumb is: less than 40 PC’s in the same location just sit down and manually install!

However that doesn’t mean we need to give up on automation. So I wrote what I call the ‘Automated Installation Framework’. It’s a simple VBScript with common subroutines and often just saves time behind the keyboard. It uses a VB command called sendkeys and saves us from clicking next, next, next…

To use it I recommend using a ‘Vanilla’ install of your current environment; so use the image in place you will be installing to. Virtualization undo disks help speed this process up, because you will find that you will be installing over and over again for the perfect rollout. Next start practice installing the program, as you write the keystrokes down required moving the install through its steps. Keep track of the time it takes and estimate the time for the slowest computer you have. Next create a domain account that is a local administrator or domain admin for the machines you need to install to. Create a simple profile for the user and drop the finished VBScript into the profile’s startup section (base of the profile\Start Menu\Programs\Startup). Now all you need to do is login as that user and as the profile loads and the startup section runs, your install will begin. Cross your fingers and watch the install!


Just copy and paste the script below into notepad and save it as “rollout.vbs”

'rollout.vbs - Bohack 2008i
'main

'everything below main to wscript.quit can be deleted and is only included for example only.

'this will run the install program
run """\\server\share\program to install\install.exe"""
'this will let the install program start
sleep 5
'now lets send some keys to walk thru the install
send "n"
send "a"
send "~"
send "o"
send "~"
'lets wait 5 minutes for the install to complete
wait 15
send "t"
send "f"
'lets delete a folder that is created during install.
DeleteFolder "C:\Documents and Settings\All Users\Start Menu\Programs\some lame program"
'lets delete some registry keys
DeleteRegKey "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon"
DeleteRegKey "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword"
DeleteRegKey "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName"
'lets wait 5 seconds
sleep 5
'then shutdown
shutdown
'of course be kind and quit
wscript.quit

'----------------------------------------------------------------
'Quotes Inside of Quotes ex run """\\ral\apps\Unreal Tournament 2004\UT2004install.exe"""
'DeleteFolder - Deletes a folder and contents ex DeleteFolder "C:\junk"
'Sleep - Sleeps in seconds ex sleep 5
'Wait - waits in minutes ex wait 2
'LogOff - LogsOff session ex LogOff
'Shutdown - Shutsdown machine ex Shutdown
'Reboot - Reboots Machine ex Reboot
'Send - Sends a keystroke and waits 1 Second ex SendKey "T"
'Run - Runs a program but still processes ex Run "\\windows\system32\calc.exe"
'RunWait - Runs a program and waits for the process to end ex RunWait "\\windows\system32\calc.exe"
'RestartService - Restarts a service ex RestartService "wuauserv"
'StopService - Stops a service ex StopService "wuauserv"
'StartService - Starts a service ex StartService "wuauserv"
'FileExists - Checks to see if file exists ex If FileExists "c:\windows\test.txt" then something
'CreateFile - Creates a file ex CreateFile "c:\windows\test.txt"
'DeleteRegKey - Deletes a registry key ex DeleteRegKey ("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\PingID")
'----------------------------------------------------------------

Function Sleep (intSec)

intMSec = intSec * 1000
wscript.sleep intMSec

End Function

Function Wait (intMin)

intMSec = intMin * 60000
wscript.sleep intMSec

End Function

Function Run (strPath)

Set objShell = CreateObject("WScript.Shell")
objShell.Run strPath
Set objShell = Nothing

End Function

Function RunWait (strPath)

Set objShell = CreateObject("WScript.Shell")
objShell.Run strPath, 8, 1
Set objShell = Nothing

End Function

Function LogOff

Set objShell = CreateObject("WScript.Shell")
objShell.Run "C:\WINDOWS\system32\logoff.exe"
Set objShell = Nothing

End Function

Function Shutdown

Set objShell = CreateObject("WScript.Shell")
objShell.Run "C:\WINDOWS\system32\shutdown.exe -s -f -t 0"
Set objShell = Nothing

End Function

Function Reboot

Set objShell = CreateObject("WScript.Shell")
objShell.Run "C:\WINDOWS\system32\shutdown.exe -r -f -t 0"
Set objShell = Nothing

End Function

Function Send (strKey)

Set objShell = CreateObject("WScript.Shell")
objShell.SendKeys strKey
Set objShell = Nothing
sleep 1

End Function

Function DeleteFolder (strPath)

Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(strPath) Then
objFSO.DeleteFolder strPath, 1
End If
Set objFSO = Nothing

End Function

Function RestartService(strService)

set objShell = CreateObject("Shell.Application")

If objShell.IsServiceRunning(strService) Then
objShell.ServiceStop strService, True
wscript.sleep 2000
objShell.ServiceStart strService, true
wscript.sleep 2000
End If

set objShell = Nothing

End Function

Function StopService(strService)

set objShell = CreateObject("Shell.Application")

If objShell.IsServiceRunning(strService) Then
objShell.ServiceStop strService, True
wscript.sleep 2000
End If

set objShell = Nothing

End Function

Function StartService(strService)

set objShell = CreateObject("Shell.Application")

If not objShell.IsServiceRunning(strService) Then
objShell.ServiceStart strService, True
wscript.sleep 2000
End If

set objShell = Nothing

End Function

Function FileExists(strFileName)

Set objFSO = CreateObject("Scripting.FileSystemObject")
FileExists = objFSO.FileExists(strFileName)
Set objFSO = Nothing

End Function

Function CreateFile(strFileName)

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CreateTextFile(strFileName)
Set objFSO = Nothing

End Function

Function  DeleteRegKey(strRegKey)

On Error Resume Next
Set objShell = CreateObject("WScript.Shell")
objShell.RegDelete(strRegKey)
Set objShell = Nothing

End Function

Tags: VBScript, Windows

This entry was posted on Friday, November 7th, 2008 at 11:20 am and is filed under Windows.
You can follow any responses to this entry through the RSS 2.0 feed.
Both comments and pings are currently closed.

Comments are closed.

  • Channels

    • Beer (2)
    • Blog (1)
    • Exchange (2)
    • Ham Radio (1)
    • Homebrew (3)
    • Linux / Unix (4)
    • Misc (1)
    • Mods (4)
    • Networking (1)
    • Programming (4)
    • Recipes (2)
    • Scripts (7)
    • Security (1)
    • Software (2)
    • Spam (1)
    • Telco (7)
    • Virtual PC (1)
    • VMware (3)
    • VOIP (3)
    • Windows (16)
    • Windows 2008 (4)
    • Windows 7 (5)
  • Archives

    • September 2012
    • April 2012
    • March 2012
    • February 2012
    • January 2012
    • November 2011
    • September 2011
    • July 2011
    • April 2011
    • February 2011
    • January 2011
    • October 2010
    • August 2010
    • February 2010
    • January 2010
    • December 2009
    • November 2009
    • June 2009
    • May 2009
    • February 2009
    • January 2009
    • December 2008
    • November 2008
    • October 2008
  • Links

    • Blogarama Blogarama – The Blog Directory
    • BlogHub Blog Directory
    • Blogrankings Technology Blogs – Blog Rankings
    • Blogville.us blogville.us
    • Buzzerhut free directory | buzzerhut.com
    • Ontoplist Online Marketing
    • Primechoiceautoparts Discount Auto Parts
    • PTC My Employer
 

  Copyright - Bohack 2025 ©