Home > SCCM, SCCM Software Deployment > SCCM Software Deployment – Application Deployment Wizard

SCCM Software Deployment – Application Deployment Wizard


***Critical Note***  This is to be used this at your own risk and this is not a supported solution.  This includes a framework to provide a solution – you as the IT Professional are responsible for making the appropriate changes to the script and determining any deployment methods if any.
.
.
.
Source (not sure if this will work – .zip in a .docx so I can upload it):
 
Background:
 
The one thing I have learned with SMS/SCCM over the years is that it is not always easy to keep everybody happy when deploying software.  Some people want silent installs while others want to see when it installs with a progress bar and the End-Users want the autonomy to postpone the install if desired.  Now of course you can use the Task Sequencer in SCCM 2007 to do the install to get the progress bar but the End-User cannot postpone the install and the bigger issue presents itself if you need to have the package cached (I do not think there is an option to do this with TS still).
 
Bottom line – we had IT and business users with different ideas of how software deployments should work.
 
My boss worked at a company that used SMS 2003 and had all of their software installs run through a process the leveraged a VBScript to install the software combined with the SMS client and the user was prompted for the install.  Their version of the used .txt files and some registry values from what I understand.  The logic behind this is the SMS advertisement is mandatory and set to run every day at a certain time so the script always runs.  With proper code it never really makes an impact on the client unless the software needs to be installed as it will determine from a registry lookup if the software is installed or not (the registry key is written as part of the install process).  The reason to have this run every day is as follows:
 
  • The script can run to check if the software was installed or if the user was prompted and postponed the install
  • Reinstallation can be accomplished by removing a registry entry and having the same advertisement for the install

Of course over time the advertisement would be changed so it was not running every day…

Anyway, this is how this idea came about and why I developed this.

Solution:
Of course the aforementioned solution sounded good from a high-level but I had to put my own spin on it.  I get the user autonomy and what they were trying to accomplish but it was lacking something more…like corporate branding.  When I was at MMS in 2009 Microsoft discussed how they have found in studies that End-Users tend to have a more positive reaction to installations that have a company logo and will be more inclined to pay attention.  Let’s face it…we tell our customers to be concerned if something runs and they do not know what it is.

The installation writes to the registry.  Specifically “HKEY_LOCAL_MACHINESOFTWARECOMPANYNAME_SoftwarestrAppName”.  This is where the script references before the user would ever see anything.  It checks if we wrote a key to tell it that it is installed.  If that does not exist it does a WMI query to see if it was installed by another means.  If it finds it installed it will write to the registry to note that it is installed and stop.  If it does not find it installed the HTA fires up (of course only if a user is logged in – if nobody is logged in it will install without any prompts).

ApplicationDeploymentWizard_User

ApplicationDeploymentWizard_Reg

The key here is when you publish this to SMS or SCCM it needs to run with administrative rights but you need to check the box to allow the user to interact with the program (a big thank you to Sherry Kissinger for helping me with that mental hurdle a while back – sometimes things are too simple).

Directory Structure:

  • ImagesCOMPANYLOGO.GIG
  • Imageswinicon.ico
  • Source*SETUPFILES* (this is for the setup files)
  • ExecuteSoftwareDeployment.vbs
  • ExecuteSoftwareRemoval.vbs
  • InstallDetails.ini
  • RemovalDetails.ini
  • SoftwareDeployment.HTA

INI Files (How much easier could this be?):

One of the things I love about this one is I developed it to use two .ini files to read from – AKA you do not need to edit the VBScript or the HTA once you do the customizations I mention below.  It is a real speedy process to use this for all software distributions and the best thing is not everybody needs to understand VBScript to use this.  Please note that the commas separate the values and if there is a quote after the .msi it needs to be there.

InstallDetails.ini

SoftwareTitle, Commandline, Transform (if there is not a tranform then put N/A)

Copy and paste the single line below into the .ini file…
—————————————————————————————–
Adobe Reader 9.3,acroread.msi” /qb!,QBEReader9.mst
—————————————————————————————–

RemoveDetails.ini

SoftwareTitle, Commandline (I only have this working for removing .MSI installs right now)

Copy and paste the single line below into the .ini file…
—————————————————————————————–
Adobe Reader 9.3,Acroread.msi”
—————————————————————————————–

VBScript Files

ExecuteSoftwareDeployment.vbs (change “COMPANY_Software” where “COMPANY is your company name)

‘————————————————–

‘————————————————–
‘Execute Software Deployment
‘Written by Josh Mueller
‘created January 14, 2010
‘updates
‘n/a
‘————————————————–

option explicit

‘————————————————–
‘Set Variables
‘————————————————–

Dim strIniFile, strKeyPath, strValuePrompt, strFullPromptKey, strValueInstall, strFullInstallKey
Dim strAppName, objNetwork, objFSO, objShell, colComputer, objWMIService, objSoftware, strInstallCommand
Dim objRegistry, strComputer, strPromptValue, strInstallValue, colSoftware, strRegKey, strTransform
Dim objTextFile, strNextLine, arrApplication, i, strCurrentDir, strInputFile, objFileHandle, strDirectory
Dim objEnv, strVar1, strVar2, strVar3, strVar4, strVar5, strCommandline, objComputer, strLogonUser, strFileName, objFolder

‘Constants used in opening files.
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const HKEY_LOCAL_MACHINE = &H80000002
Const TristateFalse = 0

strComputer = “.”
strCurrentDir = Replace(WScript.ScriptFullName, WScript.ScriptName, “”)
strIniFile = “InstallDetails.ini”
strInputFile = strcurrentdir & strIniFile
strDirectory = “c:Logs”

Set objNetwork = CreateObject(“Wscript.Network”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
Set objShell = createObject(“wscript.shell”)
Set objEnv = objShell.Environment(“User”)
Set objRegistry = GetObject(“winmgmts:{impersonationLevel=impersonate}!\” & strComputer & “rootdefault:StdRegProv”)
Set objWMIService = GetObject(“winmgmts:” _
    & “{impersonationLevel=impersonate}!\” _
    & strComputer & “rootcimv2”)
Set colSoftware = objWMIService.ExecQuery _
    (“Select * from Win32_Product”)
Set colComputer = objWMIService.ExecQuery (“Select * from Win32_ComputerSystem”)

‘————————————————–
‘Create Logs Folder if it does not exist
‘————————————————–

If objFSO.FolderExists (strDirectory) Then

‘WScript.Echo “No need to create ” & strDirectory
Else
Set objFolder = objFSO.CreateFolder(strDirectory)
‘WScript.Echo “Created ” & strDirectory
End If

‘————————————————–
‘Body
‘————————————————–

Set objTextFile = objFSO.OpenTextFile (strInputFile, ForReading)
Do Until objTextFile.AtEndOfStream

strNextLine = objTextFile.Readline
arrApplication = Split(strNextLine , “,”)
  strAppName = arrApplication(0)
  ‘Wscript.Echo “Application Name: ” & strAppName
  strCommandline = arrApplication(1)
  ‘Wscript.Echo “Commandline: ” & arrApplication(1)
  strTransform = arrApplication(2)
  ‘Wscript.Echo “Transform: ” & arrApplication(2)

Loop

objTextFile.Close

‘————————————————–
strKeyPath = “SoftwareCOMPANYNAME_Software” & strAppName & “”
strValuePrompt = “InstallPrompt”
strFullPromptKey = “HKEY_LOCAL_MACHINE” & strKeyPath & strValuePrompt
strValueInstall = “InstallCode”
strFullInstallKey = “HKEY_LOCAL_MACHINE” & strKeyPath & strValueInstall

objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath, strValuePrompt, strPromptValue
objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath, strValueInstall , strInstallValue
‘————————————————–

If strInstallValue = 1 Then
‘Wscript.echo “The product is installed”
objEnv(“var2”) = strAppName
strFileName = “c:Logs” & strAppName & “.txt”

Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
  objTextFile.WriteLine(“————————————————–“)
  objTextFile.WriteLine Now
  objTextFile.WriteLine strAppName  & ” is already installed. ”
  objTextFile.WriteLine(“————————————————–“)
objTextFile.Close

objEnv(“var2”) = “”
 
wscript.quit
Else
CheckInstalledApps
objEnv(“var2”) = strAppName
objEnv(“var3”) = strCommandline
objEnv(“var4”) = strTransform
strVar2 = objEnv(“var2”)
strVar3 = objEnv(“var3”)
strVar4 = objEnv(“var4”)

If strVar4 = “N/A” Then
  strInstallCommand = chr(34) & strCurrentDir & “Source” & strVar3
Else
  strInstallCommand = chr(34) & strCurrentDir & “Source” & strVar3 & ” TRANSFORMS=” & chr(34) & strCurrentDir & “Source” & strVar4 & chr(34)
End if

objEnv(“var5”) = strInstallCommand
strVar5 = objEnv(“var5”)
strFileName = “c:Logs” & strAppName & “.txt”
Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
  objTextFile.WriteLine(“————————————————–“)
  objTextFile.WriteLine Now
  objTextFile.WriteLine strAppName  & ” is not installed. ”
objTextFile.Close
For Each objComputer in colComputer
  IF not objComputer.UserName = “” Then
   If strPromptValue = 1 Then
    ‘wscript.echo “prompted once”
    objEnv(“var1”) = strPromptValue
    strVar1 = objEnv(“var1”)
    CHECKOS
    GETFREESPACE
    USERDEVICE
    Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
     objTextFile.WriteLine “The End-User has been prompted only once.”
     objTextFile.WriteLine “Launching the HTA at ” & Now & “.”
    objTextFile.Close
    objShell.RegWrite strFullPromptKey, 2
    strPromptValue = “2”
    ObjShell.Run (chr(34) & strCurrentDir & “SoftwareDeployment.HTA” & chr(34))
    Set objShell = Nothing
    Set objEnv = Nothing
   Else  
    If strPromptValue = 2 Then 
     ‘wscript.echo “force install”
     objEnv(“var1”) = strPromptValue
     strVar1 = objEnv(“var1”)
     CHECKOS
     GETFREESPACE
     USERDEVICE
     Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
      objTextFile.WriteLine “The End-User has been prompted twice.”
      objTextFile.WriteLine “Launching the HTA at ” & Now & “.”
     objTextFile.Close
     ObjShell.Run (chr(34) & strCurrentDir & “SoftwareDeployment.HTA” & chr(34))
     Set objShell = Nothing
     Set objEnv = Nothing
    Else
     ‘wscript.echo “never prompted”
     objEnv(“var1”) = 1
     strVar1 = objEnv(“var1”)
     CHECKOS
     GETFREESPACE
     USERDEVICE
     Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
      objTextFile.WriteLine “The End-User has never been prompted.”
      objTextFile.WriteLine “Launching the HTA at ” & Now & “.”
     objTextFile.Close
     objShell.RegWrite strFullPromptKey, 1
     ObjShell.Run (chr(34) & strCurrentDir & “SoftwareDeployment.HTA” & chr(34))
     Set objShell = Nothing
     Set objEnv = Nothing
    End if
   End if
  Else
   ObjShell.Run strInstallCommand
   wscript.quit

  End if
Next
End if

‘————————————————–
‘Check Installed Apps
‘————————————————–
Sub CheckInstalledApps

For Each objSoftware in colSoftware
If objSoftware.Name = strAppName Then
  objShell.RegWrite strFullInstallKey, 1
  wscript.quit
End If
Next

End Sub

‘————————————————–
‘Check the OS Version
‘————————————————–
SUB CHECKOS

Dim strOSkey, strOSproductname

strOSkey = “HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionproductname”
strOSproductname = objshell.regread (strOSkey)

Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
objTextFile.WriteLine “The current Operating System is ” & strOSproductname & “.”
objTextFile.Close

END SUB

‘————————————————–
‘Logged on user and current domain
‘————————————————–
SUB USERDEVICE

For Each objComputer in colComputer
IF not objComputer.UserName = “” Then
  strLogonUser = Split(objComputer.UserName,””)
  strLogonUser(1) = UCase(Left(strLogonUser(1),1)) & Trim(Mid(strLogonUser(1),2,20))

  Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
   objTextFile.WriteLine strLogonUser(1) & ” is logged on.”
   objTextFile.WriteLine objNetwork.ComputerName & ” is the device name.”
   objTextFile.WriteLine objNetwork.UserDomain & ” is the user domain.”
  objTextFile.Close
END IF
Next

END SUB

‘————————————————–
‘Get Free Space Sub
‘————————————————–
SUB GETFREESPACE

Dim coldisks, objDisk, intFreeSpace, intTotalSpace, pctFreeSpace

Set colDisks = objWMIService.ExecQuery (“Select * from Win32_LogicalDisk Where DeviceID = ‘C:'”)

For Each objDisk in colDisks
     intFreeSpace = objDisk.FreeSpace
     intTotalSpace = objDisk.Size
     pctFreeSpace = intFreeSpace / intTotalSpace
Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
  objTextFile.WriteLine “The percentage of free space on C: is ” & FormatPercent(pctFreeSpace) & “.”
objTextFile.Close 
Next

END SUB

‘————————————————–

ExecuteSoftwareRemoval.vbs (change “COMPANY_Software” where “COMPANY is your company name)

‘————————————————–

‘————————————————–
‘Execute Software Deployment
‘Written by Josh Mueller
‘created January 14, 2010
‘updates
‘n/a
‘————————————————–

option explicit

‘————————————————–
‘Set Variables
‘————————————————–

Dim strIniFile, strKeyPath, strValueInstall, strFullInstallKey
Dim strAppName, objNetwork, objFSO, objShell, colComputer, objWMIService, objSoftware, strRemovalCommand
Dim objRegistry, strComputer, strInstallValue, colSoftware, strRegKey
Dim objTextFile, strNextLine, arrApplication, i, strCurrentDir, strInputFile, objFileHandle
Dim objEnv, strCommandline, objComputer, Returncode

‘Constants used in opening files.
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const HKEY_LOCAL_MACHINE = &H80000002
Const TristateFalse = 0

strComputer = “.”
strCurrentDir = Replace(WScript.ScriptFullName, WScript.ScriptName, “”)
strIniFile = “RemovalDetails.ini”
strInputFile = strcurrentdir & strIniFile

Set objNetwork = CreateObject(“Wscript.Network”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
Set objShell = createObject(“wscript.shell”)
Set objEnv = objShell.Environment(“User”)
Set objRegistry = GetObject(“winmgmts:{impersonationLevel=impersonate}!\” & strComputer & “rootdefault:StdRegProv”)
Set objWMIService = GetObject(“winmgmts:” _
    & “{impersonationLevel=impersonate}!\” _
    & strComputer & “rootcimv2”)
Set colSoftware = objWMIService.ExecQuery _
    (“Select * from Win32_Product”)
Set colComputer = objWMIService.ExecQuery (“Select * from Win32_ComputerSystem”)

‘————————————————–
‘Body
‘————————————————–
Set objTextFile = objFSO.OpenTextFile (strInputFile, ForReading)
Do Until objTextFile.AtEndOfStream

strNextLine = objTextFile.Readline
arrApplication = Split(strNextLine , “,”)
For Each strNextLine in arrApplication
  strAppName = arrApplication(0)
  ‘Wscript.Echo “Application Name: ” & arrApplication(0)
  strCommandline = arrApplication(1)
  ‘Wscript.Echo “Commandline: ” & arrApplication(1)
Next

Loop

objTextFile.Close

‘————————————————–
strKeyPath = “SoftwareCOMPANYNAME_Software” & strAppName & “”
strValueInstall = “InstallCode”
strFullInstallKey = “HKEY_LOCAL_MACHINE” & strKeyPath & strValueInstall
‘————————————————–

strRemovalCommand = “C:WindowsSystem32msiexec.exe /x ” & chr(34) & strCurrentDir & “Source” & strCommandline
‘msgbox strRemovalCommand
Returncode = objShell.Run(strRemovalCommand,, True)
objShell.RegWrite strFullInstallKey, 0

If Returncode = 1602 Then
msgbox “You chose not to remove ” & strAppName & “.”
wscript.quit
Else
If Returncode = 1605 Then
  msgbox strAppName & ” is not installed.”
  wscript.quit
Else
  msgbox strAppName & ” returned a code of ” & returncode & “.  You will now be prompted to reboot…”
  objShell.Run(“shutdown -r -f -t 30”), 1, TRUE
End if
End if

‘————————————————–

HTA File

SoftwareDeployment.HTA (Change “COMPANYLOGO.gif”, “DEPARTMENT”, and “COMPANY NAME”)

‘————————————————–

<script language=”vbscript”>

‘————————————————–
‘ Global Variables
‘————————————————–
Dim strComputer, strAppName, objFSO, objShell, objWMIService, colComputer, objRegistry, objNetwork
Dim strCurrentDir, strHost, strInstallCommand, strDirectory, strFileName
Dim strFullPromptKey, strValuePrompt, strKeyPath, strPromptValue, strInstallValue, strRegKey, strPromptScript
Dim strVBSFile, strVar1, objEnv, strVar2, strVar3, strVar5
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const adOpenStatic1 = 3
Const adLockOptimistic1 = 3
const HKEY_LOCAL_MACHINE = &H80000002

Set objFSO = CreateObject(“Scripting.FileSystemObject”)
Set objShell = CreateObject(“WScript.Shell”)
Set objEnv = objShell.Environment(“User”)

strComputer = “.”
strPath = left(location.pathname,InStrRev(location.pathname,””))
strHost = Location.HostName
strCurrentDir = objShell.CurrentDirectory
strDirectory = “c:Logs”

Set objWMIService = GetObject(“winmgmts:” & “{impersonationLevel=impersonate}!\” & strComputer & “rootcimv2”)
Set colComputer = objWMIService.ExecQuery (“Select * from Win32_ComputerSystem”)
Set objRegistry = GetObject(“winmgmts:{impersonationLevel=impersonate}!\” & strComputer & “rootdefault:StdRegProv”)

‘————————————————–
‘ End of Global Variables
‘————————————————–

‘——————————————————————-
‘ Onload_Window
‘——————————————————————-
Sub Onload_Window

Window.resizeTo 300,300
window.moveTo (screen.width-300) ,(screen.height – 300)

strVar1 = objEnv(“var1”)
strVar2 = objEnv(“var2”)
strVar3 = objEnv(“var3”)
strVar4 = objEnv(“var4”)
strVar5 = objEnv(“var5”)
‘msgbox strVar1
‘msgbox strVar2
‘msgbox strVar3
‘msgbox strVar4

strFileName = “c:Logs” & strVar2 & “.txt”

If strVar4 = “N/A” Then
If strHost = “” Then
  strInstallCommand = chr(34) & strHost & strPath & “Source” & strVar3
Else
  strInstallCommand = chr(34) & “\” & strHost & strPath & “Source” & strVar3
End if
Else
If strHost = “” Then
  strInstallCommand = chr(34) & strHost & strPath & “Source” & strVar3 & ” TRANSFORMS=” & chr(34) & strHost & strPath & “Source” & strVar4 & chr(34)
Else
  strInstallCommand = chr(34) & “\” & strHost & strPath & “Source” & strVar3 & ” TRANSFORMS=” & chr(34) & “\” & strHost & strPath & “Source” & strVar4 & chr(34)
End if

End if

‘msgbox strInstallCommand

strKeyPath = “SoftwareCOMPANYNAME_Software” & strVar2 & “”
strValueInstall = “InstallCode”
strFullInstallKey = “HKEY_LOCAL_MACHINE” & strKeyPath & strValueInstall

If strVar1 = 1 Then
intAnswer = Msgbox(“Is now a good time to install ” & strVar2 & “?  If you are answering yes please take the time to close all other applications.”, vbYesNo  + vbSystemModal + vbQuestion, “Install Software”)
  If intAnswer = vbYes Then
   Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
    objTextFile.WriteLine “The End-User chose to start the installation now.”
   objTextFile.Close
   SoftwareInstall
  Else
   Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
    objTextFile.WriteLine “The End-User chose to postpone the installation.”
   objTextFile.Close
   SetPrompt
  End If
Else
If strVar1 = 2 Then
  intAnswer = Msgbox(strVar2 & ” is about to install.  Please take the time to close all other applications and click OK.”, vbSystemModal + vbInformation + vbOKOnly, “Install Software”)
  Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
   objTextFile.WriteLine “The End-User has to do a mandatory installation.”
  objTextFile.Close
  SoftwareInstall
End if
End if

End Sub

‘——————————————————————-
‘ SoftwareInstall
‘——————————————————————-
Sub SoftwareInstall

Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
objTextFile.WriteLine “The installation is about to start at ” & Now & “.”
objTextFile.WriteLine “The command line is ” & strVar5
objTextFile.Close

ReturnCode = objShell.Run(strVar5,, True)
‘msgbox ReturnCode

Set objTextFile = objFSO.OpenTextFile (strFileName, ForAppending, True)
objTextFile.WriteLine “The installation has completed at ” & Now & “.”
objTextFile.writeline “Return Code of: ” & ReturnCode
objTextFile.WriteLine(“————————————————–“)
objTextFile.Close

If ReturnCode = 0 Then
Msgbox “Thank you for your time!  ” & strVar2 & ” is now installed.”, vbSystemModal + vbInformation + vbOKOnly, “Software Installed”
Else
If ReturnCode = 3010 Then
  msgbox “The installation requires a reboot.  Please reboot at your earliest convenience.”, vbSystemModal + vbCritical + vbOKOnly, “Reboot Required”
Else
  If ReturnCode = 1641 Then
   Window.close
  Else
   msgbox “The installation failed with a value of ” & ReturnCode & “.  Please contact the Service Desk with this information for assistance.”, vbSystemModal + vbCritical + vbOKOnly, “Software Error”
  End if
End if
End if

objEnv(“var1”) = “”
objEnv(“var2”) = “”
objEnv(“var3”) = “”
objEnv(“var4”) = “”
objEnv(“var5”) = “”

window.Close

End Sub

‘——————————————————————-
‘ CheckPrompt
‘——————————————————————-
Sub SetPrompt

Msgbox “You have postponed the install.  This will run again tomorrow, or the next day your device is on the corporate network.  The next time you see this you will be required to install ” & strVar2 & “.”, vbSystemModal + vbInformation + vbOKOnly, “Software Install Postpone”
Window.close

End Sub

–>
</script>

<html>
<head>

<title>Software Deployment Wizard</title>

<HTA:APPLICATION ID=”HTA1″ APPLICATIONNAME=”SoftwareDeploymentWizardHTA” ICON=”imageswinicon.ico”
  BORDER=”thin”
  BORDERSTYLE=”normal”
  CAPTION=”yes”
  INNERBORDER=”no”
  SELECTION=”no”
  MAXIMIZEBUTTON=”no”
  MINIMIZEBUTTON=”no”
  SHOWINTASKBAR=”no”
  SINGLEINSTANCE=”yes”
  SYSMENU=”no”
  VERSION=”1.0″ /> 
 
</head>

<body onload=Onload_Window>

<p><td><center><img src=”imagesCOMPANYNAME.gif” hspace=5 vspace=5></center></td></p>

<p><td><center><b><font face=”Arial” size=”4″>DEPARTMENT</font></b></center></td></p>

</body>
</html>

‘————————————————–

Advertisements
  1. Josh
    May 23, 2010 at 1:42 am

    What OS are you running this on? This information will help me test. Currently my main use of this on Windows XP SP3 , though it does appear to work on Windows 7. I will verify this when I am back in the office Monday.

  2. Atul
    May 22, 2010 at 8:18 am

    Hi, It’s really very much useful. I am also getting error in line 79 – Type mismatch: ‘strVar1’ as Jesper. I think something missing in this code section. Would appreciate if you update that and make it helpful for IT community.Thanks!!

  3. Josh
    February 17, 2010 at 4:08 pm

    Jesper – I have all of the files updated from my source just to be sure they have the right code. Regarding the error in line 79 please be sure that you are launching the "ExecuteSoftwareDeployment.vbs" file to start the process. This file sets the environmental variable and enables the HTA to read it. Thanks!

  4. Jesper
    February 17, 2010 at 1:50 pm

    Also, If I paste the hta section in a file it comes with error in line 79 – Type mismatch: ‘strVar1’Cheers

  5. Josh
    February 17, 2010 at 12:28 pm

    Good call Jesper…I will have it updated later today. Thanks!

  6. Jesper
    February 17, 2010 at 10:35 am

    Hi, I will try this – great work.I can’t seem to find the script for ExecuteSoftwareRemoval.vbs anywhere in the list?

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: