Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1578
  • Last Modified:

VBScripting Error

I know basically nothing about vbscripting (just learning now), but was a programmer in a former life. I found some vbscripting code with a google search and want to automate the installation of a software update on numerous computers.  I receive "Cannot use parentheses when calling a Sub" but in my simple brain this is an "If" statement, not a "Call" to a sub.  I havent had any luck trying to figure out how to debug the code either.

Can anyone point out the error in this coding or why it appears to be a Sub routine.  How can I change it to a Call? I'll take all the helpful hints and recommendations your will provide.

Thanks
object.Run(strCommand, [intWindowStyle],[bWaitOnReturn])  
 
'INSTALL CLIENTBASE PLUS Ver 3.04.03 USING VBScript    
Set objShell = WScript.CreateObject("WScript.Shell")
spath = objShell.CurrentDirectory
 
If fso.FileExists(spath & "\cbpupdate30403003.EXE") Then
	path = """" & spath & "\cbpupdate30403003.EXE" & """ /s"
	objShell.Run(path, 1 ,True)
	i = 0
	'INSTALL CLIENTBASE PLUS Ver 3.04.03 Build 03    
	i = objShell.Run(path, 1 ,True)
	If (i = 0) Or (i = 3010) Then 
		'WRITE EXIT CODE [0-success/3010-success&requires reboot] TO EVENTLOG
		objShell.LogEvent vbLogSuccess, sLogHeader & "CLIENTBASE PLUS Ver 3.04.03 installation completed successfully." & 
 
VbCrLf & "Exit code: " & i
	Else
		MsgBox "The installation of CLIENTBASE PLUS returned an error: " & i & VbCrLf & _
		"Please contact IT Support to report this error.", vbOKOnly
		objShell.LogEvent vbLogError, sLogHeader & "Installation returned failure code: " & VbCrLf & "Exit code: " & i
	End If
	
Else
	WScript.Quit (1)
End If
 
set fso = Nothing
set WSHShell = Nothing
Wscript.Quit

Open in new window

0
conlin
Asked:
conlin
  • 2
1 Solution
 
tigermattCommented:

In VBScript there is a Function declaration, and then a Sub declaration. Essentially you use a Function when it should accept parameters and return a value (the value is returned within the function by setting a variable the same name as the function to the appropriate value to be returned). A Sub is used when parameters may / may not need to be accepted, but there should be nothing returned.

Which line does the parser say the Paranthesis error is on?

-tigermatt
0
 
conlinAuthor Commented:
It doen't tell me anything. It fails with...
VBScript compilation error: Cannot use parentheses when calling a Sub.

Thanks where I'm stuck in the mud.
0
 
conlinAuthor Commented:
Never mind.  I figured out a much better way to accomplish what I wanted to do.

Thanks anyway.
0
 
RobSampsonCommented:
Hi, the error you were getting most likely refers to lines like this:
objShell.Run(path, 1 ,True)

When you run a method in that fashion, with the parenthesis, you're expecting a return code, in which case you should use
boolReturn = objShell.Run(path, 1 ,True)

There are special cases where there's a slight exception to that rule, but I can't remember the reference right now.

Anyway, instead, if you don't require a return code, you can just use the same line without parenthesis, like this:
objShell.Run path, 1 ,True

and you won't get any errors.

Regards,

Rob.
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now