Hi Erik. Nice job on the ThinInstaller document. We've been a Lenovo shop for the last seven years and I had no idea there was a tool like ThinInstaller. This will be a big help to us in keeping approximately 3,000 Lenovo machines up to date.
A couple of questions for you...
1. Do you have any tips for leveraging ThinInstaller or ThinkVantage Update Retriever for building the HII driver library for LANDesk OSD? With the help of your document I have figured out how to use Update Retriever to download the latest drivers for the 37 Lenovo models we currently support. This leaves me with a driver repository that has a bunch of EXE archives. I haven't figured out an easy way to know which EXE's would contain the drivers that I need to add to our driver library for a specific machine. (Aside from reviewing the Lenovo update site and making a list of updates that we would want to include in our library.) if you can share any tips on integrating ThinInstaller or Update Retriever with LANDesk HII I'd be grateful.
2. I wondered about automating the BIOS updates. Do you schedule these updates with LANDesk? I'm always fearful that if I schedule a BIOS update some user will come along and do a power reset while the BIOS is being flashed. I haven't any experience to go on but I'm pretty sure this could "Brick" the computer, leaving it with a corrupted BIOS and no ability to boot.
Thanks again for sharing the document!
Thanks for the bump... I'm working on a site right now, but at some point I plan to get back to these docs... Please provide any updates / corrections as you see fit.
I have the same answer for both questions. I use thininstaller to do it all.
For HII - I just load the most basic needed drivers (nic and AHCI type) - everything else comes via thininstaller. So even when a new version is out of a driver I have in HII, I just let thininstaller update it for me. I found once I loaded a few drivers (same for the WinPE image) most machines just worked out of the box. This is just the way I do my image - I try to keep things as thin as possible and use tasks to install everything. Really handy with Adobe and flash - as they seem to update on a frequent bases.
As far a timing with BIOS updates - we only do those as part of a helpdesk ticket. Part of our standard practice on any larger ticket is to run the thininstaller and update everything.
Unfortunately in LANDesk setup.exe drivers are not supported, but I wrote a lil workaround that may help you out. It is how I load my setup.exe drivers.
The problem I ran into when I worked on this myself was that ThinInstaller had a tendency to reboot the system a couple times. Not a bad plan necessarily, but it can really throw off your deployment. What I settled on (and we are still using MDT for our deployment) was I have the last step of the install to run my ThinInstaller setup. The ThinInstaller setup is an MSI I created that places ThinInstaller into Program Files. It also runs my ThinInstaller vbscript asyncroniously at the end. The vbscript will map a drive to our TVSU repository using a service account. It then starts a manual update. Since everything is asyncronous, the deployment will finish and then ThinInstaller will popup with a list of all of the patches it needs to have updated. It's not the best way, but it gets people to run the thing at least.
'Declare scripting objects
Set oNet = WScript.CreateObject("WScript.Network")
Set oShell = WScript.CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
'Declare Environment variables
eAllUsersProfile = oShell.ExpandEnvironmentStrings("%AllUsersProfile%")
eUserProfile = oShell.ExpandEnvironmentStrings("%UserProfile%")
eProgramFiles = oShell.ExpandEnvironmentStrings("%ProgramFiles%")
Dim sRepositoryServer, sNetworkDrive, sUserName, sPassword
sNetworkDrive = ""
sUserName = "MassiveUsernameGoesHere"
sPassword = "MassivePasswordGoesHere"
sRepositoryServer = "\\servername\sharename"
If oFSO.DriveExists("T:") = False Then
sNetworkDrive = "T:"
ElseIf oFSO.DriveExists("W:") = False Then
sNetworkDrive = "W:"
ElseIf oFSO.DriveExists("P:") = False Then
sNetworkDrive = "P:"
ElseIf oFSO.DriveExists("O:") = False Then
sNetworkDrive = "O:"
If oFSO.FolderExists(sRepositoryServer) = True Then
If oFSO.FolderExists(sRepositoryServer) = True Then
'Run the software
oShell.Run """" & GetScriptPath & "thininstaller.exe"" -repository " & sRepositoryServer,1,True
WScript.Echo "Can't connect to the repository!" & vbCrLf & "Please authenticate to " & sRepositoryServer & " and try again."
' Return path to the current script
path = WScript.ScriptFullName ' script file name
GetScriptPath = Left(path, InstrRev(path, "\"))
One suggestion on the DriverUpdate script that you describe in your document Eric...
You are using "xcopy" to get the ThinInstaller copied onto the local hard drive. Your command syntax uses xcopy with the following options:
I found it helpful to add the "/y" switch, making this "/c/i/y/z/s"
Without the "/Y" switch your script will work fine the first time you run it, but it will stop on all subsequent attempts, asking if you want to overwrite the files in the target folder.
Thininstaller is a major time saver. As for as provisioning goes though can it be kicked off at the end of provisioing when the computer is logged on as the local administrator? When I try to run it while the local administrator is logged on it just stays in delayed state until I log in as a domain account.