https://bugs.winehq.org/show_bug.cgi?id=37895
Bug ID: 37895 Summary: PostgreSQL 9.3 VBScript based post-install steps fail due to parser errors (optional parameter between other parameters, pair of empty commas) Product: Wine Version: 1.7.34 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: vbscript Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
as the summary says.
Installer log file:
--- snip --- ... Initialising the database cluster (this may take a few minutes)... Executing cscript //NoLogo "C:\Program Files\PostgreSQL\9.3/installer/server/initcluster.vbs" "NT AUTHORITY\NetworkService" "postgres" "****" "C:\Program Files\PostgreSQL\9.3" "C:\Program Files\PostgreSQL\9.3\data" 5432 "DEFAULT" 0 Script exit code: 0
Script output:
Script stderr: --- snip ---
Terminal output with script being executed standalone:
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/PostgreSQL/9.3/installer/server
$ wine cscript //NoLogo initcluster.vbs fixme:wscript:set_host_properties ignored L"nologo" switch fixme:vbscript:VBScript_SetScriptState unimplemented SCRIPTSTATE_INITIALIZED fixme:vbscript:parse_script parser failed around L"2_OperatingSystem",,48)\r\n\r\n For Each objItem In colItems\r\n strVersion = Left(objItem.Version, 3)\r\n Next\r\n WScript.Echo " Version:" & strVersion\r\n\r\n If InStr(strVersion, ".") > 0 Then\r\n majorVersion = CInt(Left(strVersion, InStr(strVersion, ".") - 1"... fixme:wscript:run_script ParseScriptText failed: 80004005 ... --- snip ---
Script function that fails to parse:
--- snip --- ' Is this Vista or above? Function IsVistaOrNewer() WScript.Echo "Called IsVistaOrNewer()..." Set objWMI = GetObject("winmgmts:\.\root\cimv2") If objWMI Is Nothing Then WScript.Echo " Couldn't create 'winmgmts:\.\root\cimv2' object" IsVistaOrNewer=false ElseIf IsObject(objWMI) Then WScript.Echo " 'winmgmts' object initialized..." Else WScript.Echo " 'winmgmts' object not initialized..." End If Set colItems = objWMI.ExecQuery("Select * from Win32_OperatingSystem",,48)
For Each objItem In colItems strVersion = Left(objItem.Version, 3) Next WScript.Echo " Version:" & strVersion
If InStr(strVersion, ".") > 0 Then majorVersion = CInt(Left(strVersion, InStr(strVersion, ".") - 1)) ElseIf InStr(strVersion, ",") > 0 Then majorVersion = CInt(Left(strVersion, InStr(strVersion, ",") - 1)) Else majorVersion = CInt(strVersion) End If
WScript.Echo " MajorVersion:" & majorVersion
If majorVersion >= 6.0 Then IsVistaOrNewer = True Else IsVistaOrNewer = False End If End Function --- snip ---
The problem is parsing 'SWbemServices.ExecQuery' optional method parameters.
Signature MSDN: http://msdn.microsoft.com/en-us/library/aa393866%28v=vs.85%29.aspx
--- quote --- The ExecQuery method of the SWbemServices object executes a query to retrieve objects. These objects are available through the returned SWbemObjectSet collection.
This method is called in the semisynchronous mode. For more information, see Calling a Method.
For an explanation of this syntax, see Document Conventions for the Scripting API.
Syntax VB
objWbemObjectSet = .ExecQuery( _ ByVal strQuery, _ [ ByVal strQueryLanguage ], _ [ ByVal iFlags ], _ [ ByVal objWbemNamedValueSet ] _ )
Parameters
strQuery
Required. String that contains the text of the query. This parameter cannot be blank. For more information on building WMI query strings, see Querying with WQL and the WQL reference. strQueryLanguage [optional]
String that contains the query language to be used. If specified, this value must be "WQL". iFlags [optional]
Integer that determines the behavior of the query and determines whether this call returns immediately. The default value for this parameter is wbemFlagReturnImmediately. This parameter can accept the following values. Value Meaning
wbemFlagForwardOnly 32 (0x20) ...
Causes WMI to return class amendment data with the base class definition. For more information, see Localizing WMI Class Information.
objWbemNamedValueSet [optional]
Typically, this is undefined. Otherwise, this is an SWbemNamedValueSet object whose elements represent the context information that can be used by the provider that is servicing the request. A provider that supports or requires such information must document the recognized value names, data type of the value, allowed values, and semantics. --- quote ---
'strQueryLanguage' = optional, needs to be passed in between pair of empty commands as next parameter is explicitly given
'iFlags' = optional, 48 = WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY (-> forward-only enumerator)
'objWbemNamedValueSet' = optional, no passing needed (last parameter)
$ sha1sum postgresql-9.3.5-3-windows.exe e47b6569f86466da76199186aa1b63a94f040551 postgresql-9.3.5-3-windows.exe
$ du -sh postgresql-9.3.5-3-windows.exe 53M postgresql-9.3.5-3-windows.exe
$ wine --version wine-1.7.34-36-g4493323
Regards