3 was unexpected at this time

3 was unexpected at this time

Postby Mack » 10.03.2014, 05:44

Hi, I'm using v9.0 and when attempting to install the offline files on a Win 7 SP1 x64 computer I receive this error message: "3 was unexpected at this time" immediately after "Checking Office Service Pack versions..." at which point the update proceeds no further. (I have Office Pro Plus 2010.)

Does anyone know how I can troubleshoot this? Here's the installer's output:

Code: Select all
Starting WSUS Offline Update (v. 9.0) at 14:39:45.83...
Checking user's privileges...
Determining system's properties...
Determining DirectX main version...
Determining Windows licensing info...
Found Microsoft Windows version: 6.1.7601 (w61 x64 enu sp1)
Found Microsoft Windows Software Licensing Management Tool info...
Name: Windows(R) 7, Professional edition
Description: Windows Operating System - Windows(R) 7, RETAIL channel
Partial Product Key: VH9MM
License Status: Licensed
Found Microsoft Office 2007 Access version: 0.0.0.0 (o2k7  sp)
Checking medium content...
Medium build date: 10/03/2014
Medium supports Microsoft Windows (w61 x64 glb).
Medium supports Microsoft Office (ofc ).
Checking Windows Service Pack version...
Checking Windows Update Agent version...
Checking Windows Installer version...
Checking Windows Script Host version...
Checking Internet Explorer version...
Checking Trusted Root Certificates' version...
Checking Revoked Root Certificates' version...
Checking C++ Runtime Libraries' installation state...
Checking DirectX version...
Checking Microsoft Silverlight version...
Determining Microsoft Silverlight installation file version...
Checking Remote Desktop Client version...
Checking Windows Defender installation state...
Warning: Windows Defender definition file (..\wddefs\x64-glb\mpas-feX64.exe) not
 found.
Checking Office Service Pack versions...
3 was unexpected at this time.

C:\Program Files\System Utils\WSUSoffline\client\cmd>
Mack
 
Posts: 10
Joined: 10.03.2014, 05:17
Location: AUSTRALIA

Re: 3 was unexpected at this time

Postby Cababs » 10.03.2014, 09:48

Found Microsoft Office 2007 Access version: 0.0.0.0 (o2k7 sp)

WOU detects MS Access 2007 with no SP.
I have had WOU display a similar output when using WOU on XP x64
Also WOU doesnt detect that you have got MS Office 2010.
WOU can detect muliple versions of MS Office and update them eg Office 2000 and Frontpage XP (2002)

My guess is that the error is caused because WOU doesnt know what Office SP to install. Is your copy of MS Office a Click-to-run version or retail?
Notable Achievements
CompTIA A+
HNC Computing
Cababs
 
Posts: 187
Joined: 22.12.2013, 01:17

Re: 3 was unexpected at this time

Postby Mack » 11.03.2014, 06:08

Thanks for your reply. I have the retail versions of both Office 2007 & Office 2010 installed. (Because I need to write instructions for clients that are customised for each version of Office.) It is a 32 bit version of Office 2010 running on Win7 64bit OS, in case that is a factor.
Mack
 
Posts: 10
Joined: 10.03.2014, 05:17
Location: AUSTRALIA

Re: 3 was unexpected at this time

Postby aker » 11.03.2014, 08:32

Please run .\client\cmd\DetermineSystemProperties.vbs as admin and post the content of %temp%\SetSystemEnvVars.cmd.

It looks like, wsusou fails to determine the language of your Office installation.
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to keep or sell it.
aker

WSUS Offline Update „Community Edition“
https://gitlab.com/wsusoffline/wsusoffline/-/releases
aker
 
Posts: 3999
Joined: 02.03.2011, 15:32

Re: 3 was unexpected at this time

Postby Mack » 11.03.2014, 09:46

Thanks for your reply. Here is the content of the SetSystemEnvVars.cmd file from the Temp folder :-

Code: Select all
set OS_VER_MAJOR=6
set OS_VER_MINOR=1
set OS_VER_BUILD=7601
set OS_VER_REVIS=0
set OS_SP_VER_MAJOR=1
set OS_SP_VER_MINOR=0
set OS_LANG_CODE=0x409
set OS_LANG=enu
set OS_LANG_SHORT=en
set OS_LANG_EXT=en-us
set SystemDirectory=C:\Windows\system32
set OS_ARCH=x64
set OS_DOMAIN_ROLE=0
set FS_TYPE=NTFS
set PWR_POL_IDX=0
set WUA_VER_MAJOR=7
set WUA_VER_MINOR=6
set WUA_VER_BUILD=7600
set WUA_VER_REVIS=256
set MSI_VER_MAJOR=5
set MSI_VER_MINOR=0
set MSI_VER_BUILD=7601
set MSI_VER_REVIS=17807
set WSH_VER_MAJOR=5
set WSH_VER_MINOR=8
set WSH_VER_BUILD=9600
set WSH_VER_REVIS=16428
set IE_VER_MAJOR=9
set IE_VER_MINOR=11
set IE_VER_BUILD=9600
set IE_VER_REVIS=16476
set MDAC_VER_MAJOR=6
set MDAC_VER_MINOR=1
set MDAC_VER_BUILD=7601
set MDAC_VER_REVIS=17514
set DX_CORE_VER_MAJOR=4
set DX_CORE_VER_MINOR=09
set DX_CORE_VER_BUILD=00
set DX_CORE_VER_REVIS=0904
set DX_NAME=9.0c
set MSSL_VER_MAJOR=5
set MSSL_VER_MINOR=1
set MSSL_VER_BUILD=20913
set MSSL_VER_REVIS=0
set DOTNET35_VER_MAJOR=3
set DOTNET35_VER_MINOR=5
set DOTNET35_VER_BUILD=30729
set DOTNET35_VER_REVIS=5420
set DOTNET4_VER_MAJOR=4
set DOTNET4_VER_MINOR=5
set DOTNET4_VER_BUILD=50938
set DOTNET4_VER_REVIS=0
set PSH_VER_MAJOR=2
set PSH_VER_MINOR=0
set PSH_VER_BUILD=0
set PSH_VER_REVIS=0
set WMF_VER_MAJOR=3
set WMF_VER_MINOR=0
set WMF_VER_BUILD=0
set WMF_VER_REVIS=0
set MSSE_INSTALLED=0
set MSSE_VER_MAJOR=0
set MSSE_VER_MINOR=0
set MSSE_VER_BUILD=0
set MSSE_VER_REVIS=0
set MSSEDEFS_VER_MAJOR=0
set MSSEDEFS_VER_MINOR=0
set MSSEDEFS_VER_BUILD=0
set MSSEDEFS_VER_REVIS=0
set NISDEFS_VER_MAJOR=0
set NISDEFS_VER_MINOR=0
set NISDEFS_VER_BUILD=0
set NISDEFS_VER_REVIS=0
set WD_INSTALLED=1
set WD_DISABLED=0
set WDDEFS_VER_MAJOR=1
set WDDEFS_VER_MINOR=167
set WDDEFS_VER_BUILD=1625
set WDDEFS_VER_REVIS=0
set TRCERTS_VER_MAJOR=40
set TRCERTS_VER_MINOR=0
set TRCERTS_VER_BUILD=2195
set TRCERTS_VER_REVIS=0
set RRCERTS_VER_MAJOR=5
set RRCERTS_VER_MINOR=0
set RRCERTS_VER_BUILD=2195
set RRCERTS_VER_REVIS=0
set TSC_VER_MAJOR=6
set TSC_VER_MINOR=2
set TSC_VER_BUILD=9200
set TSC_VER_REVIS=16398
set WMP_VER_MAJOR=12
set WMP_VER_MINOR=0
set WMP_VER_BUILD=7601
set WMP_VER_REVIS=18150
set O2K7_VER_APP=Access
set O2K7_VER_MAJOR=0
set O2K7_VER_MINOR=0
set O2K7_VER_BUILD=0
set O2K7_VER_REVIS=0


The DetermineSystemProperties.vbs script fails however with this output :-

Code: Select all
Script: C:\Program Files\System Utils\WSUSoffline\client\cmd\DetermineSystemProperties.vbs
Line : 379
Char: 3
Error: Subscript out of range: '[number: 0]'
Code: 800A0009
Source: Microsoft VBScript runtime error
Mack
 
Posts: 10
Joined: 10.03.2014, 05:17
Location: AUSTRALIA

Re: 3 was unexpected at this time

Postby harry » 11.03.2014, 11:23

Please see :arrow: http://support.microsoft.com/kb/949140/en-us and try the offered solutions.

There are several cases here, where reregistering has helped (search the board for 'vbscript').
harry
 
Posts: 737
Joined: 29.10.2009, 17:02

Re: 3 was unexpected at this time

Postby aker » 11.03.2014, 22:30

IT is a computer with w61 x64 (Windows 7 x64) and o2k10 x86 (Office 2010 x86)?
Then, please post a screenshot of the Keys
Code: Select all
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Office\12.0\Common\InstallRoot

and
Code: Select all
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Office\14.0\Common\InstallRoot
.
And the content of the value "Path".

Please check, if the path is valid (folder exists & it is the installation folder of your office).

Then run the following commands in a command prompt (do it for both Path values):
Code: Select all
cd "<content of the Path value>"
dir /b *.exe

and post the output.
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to keep or sell it.
aker

WSUS Offline Update „Community Edition“
https://gitlab.com/wsusoffline/wsusoffline/-/releases
aker
 
Posts: 3999
Joined: 02.03.2011, 15:32

Re: 3 was unexpected at this time

Postby Mack » 12.03.2014, 04:31

Thanks harry, but re-registering the scripting dlls didn't stop the SetSystemEnvVars.cmd script from failing.

And aker, many thanks for following this through. Here are the screen shots of the registry keys requested :-

Image

Image

Yes, the 2 paths referenced do actually exist and here are their lists of exe's :-

OFFICE12

Code: Select all
ACCICONS.EXE
CLVIEW.EXE
DSSM.EXE
EDITOR.EXE
EXCEL.EXE
EXCEL2007.EXE
excelcnv.exe
GRAPH.EXE
INFOPATH.EXE
MSACCESS.EXE
MSIMPORT.EXE
MSOHTMED.EXE
MSPUB.EXE
MSQRY32.EXE
MSTORDB.EXE
MSTORE.EXE
OIS.EXE
ONENOTE.EXE
ONENOTEM.EXE
ORGCHART.EXE
ORGWIZ.EXE
OSA.EXE
P12MIGRATIONTOOL.EXE
POWERPNT.EXE
PPTVIEW.EXE
PROJIMPT.EXE
REGFORM.EXE
SELFCERT.EXE
SETLANG.EXE
SPDESIGN.EXE
TLIMPT.EXE
VISIO.EXE
VPREVIEW.EXE
VTIDB.EXE
VTIFORM.EXE
WINPROJ.EXE
WINWORD.EXE
Wordconv.exe


OFFICE14

Code: Select all
ACCICONS.EXE
BCSSync.exe
CLVIEW.EXE
CNFNOT32.EXE
EDITOR.EXE
EXCEL.EXE
excelcnv.exe
GRAPH.EXE
GROOVE.EXE
GROOVEMN.EXE
IEContentService.exe
INFOPATH.EXE
misc.exe
MSACCESS.EXE
MSOHTMED.EXE
MSOSYNC.EXE
MSOUC.EXE
MSPUB.EXE
MSQRY32.EXE
MSTORDB.EXE
MSTORE.EXE
NAMECONTROLSERVER.EXE
OIS.EXE
ONENOTE.EXE
ONENOTEM.EXE
ORGCHART.EXE
ORGWIZ.EXE
OUTLOOK.EXE
POWERPNT.EXE
PPTICO.EXE
PPTVIEW.EXE
PROJIMPT.EXE
protocolhandler.exe
SCANPST.EXE
SELFCERT.EXE
SETLANG.EXE
TLIMPT.EXE
VISICON.EXE
VISIO.EXE
VPREVIEW.EXE
WINWORD.EXE
Wordconv.exe
WORDICON.EXE
XLICONS.EXE
Mack
 
Posts: 10
Joined: 10.03.2014, 05:17
Location: AUSTRALIA

Re: 3 was unexpected at this time

Postby aker » 12.03.2014, 23:45

This is a patched version of DetermineSystemProperties.vbs with some Debugging Code. Please post screenshots of every messagebox the script shows.
Please create a copy of .\client\cmd\DetermineSystemProperties.vbs and replace its content with this one (do not replace the original file as this script does not perform all checks the original one does):
Code: Select all
' *** Author: T. Wittrock, Kiel ***
' *** Debugging Code: aker ***

Option Explicit

Private Const strRegKeyOfficePrefix_Mx86      = "HKLM\Software\Microsoft\Office\"
Private Const strRegKeyOfficePrefix_Mx64      = "HKLM\Software\Wow6432Node\Microsoft\Office\"
Private Const strRegKeyOfficePrefix_User      = "HKCU\Software\Microsoft\Office\"
Private Const strRegKeyOfficeInfixes_Version  = "11.0,12.0,14.0,15.0"
Private Const strRegKeyOfficeSuffix_InstRoot  = "\Common\InstallRoot\"
Private Const strRegKeyOfficeSuffix_Language  = "\Common\LanguageResources\"
Private Const strRegKeyOfficeSuffix_Outlook   = "\Outlook\"
Private Const strRegValOfficePath             = "Path"
Private Const strRegValOfficeLanguage_Inst    = "SKULanguage"
Private Const strRegValOfficeLanguage_User    = "InstallLanguage"
Private Const strRegValOfficeVersion          = "LastProduct"
Private Const strRegValOfficeArchitecture     = "Bitness"
Private Const strVersionSuffixes              = "MAJOR,MINOR,BUILD,REVIS"
Private Const strOfficeNames                  = "o2k3,o2k7,o2k10,o2k13"
Private Const strOfficeAppNames               = "Word,Excel,Outlook,Powerpoint,Access,FrontPage"
Private Const strOfficeExeNames               = "WINWORD.EXE,EXCEL.EXE,OUTLOOK.EXE,POWERPNT.EXE,MSACCESS.EXE,FRONTPG.EXE"
Private Const strBuildNumbers_o2k3            = "5604,5612,5510,5529,5614,5516;6359,6355,6353,6361,6355,6356;6568,6560,6565,6564,6566,6552;8169,8169,8169,8169,8166,8164"
Private Const strBuildNumbers_o2k7            = "4518,4518,4518,4518,4518,4518;6211,6214,6212,6211,6211,6211;6425,6425,6423,6425,6423,6423;6612,6611,6607,6600,6606,6600"
Private Const strBuildNumbers_o2k10           = "4762,4756,4760,4754,4750,4750;6024,6024,6025,6009,6024,6024;7015,7015,7012,6009,7015,7015"
Private Const strBuildNumbers_o2k13           = "4420,4420,4420,4420,4420,4420;4569,4569,4569,4454,4569,4569"

Dim wshShell, objFileSystem, objCmdFile, arrayOfficeNames, arrayOfficeVersions, arrayOfficeAppNames, arrayOfficeExeNames
Dim strTempFolder, strCmdFileName, strOfficeInstallPath, strOfficeExeVersion, languageCode, i, j

Private Function RegRead(objShell, strName)
  On Error Resume Next
  RegRead = objShell.RegRead(strName)
  If Err <> 0 Then
    RegRead = ""
    Err.Clear
  End If
End Function

Private Function GetFileVersion(objFS, strName)
  On Error Resume Next
  GetFileVersion = objFS.GetFileVersion(strName)
  If Err <> 0 Then
    WScript.Quit(1)
  End If
End Function

Private Sub WriteLanguageToFile(cmdFile, varName, langCode, writeShortLang, writeExtLang)
  Select Case langCode
' supported languages
    Case &H0009, &H0409, &H0809, &H0C09, &H1009, &H1409, &H1809, &H1C09, &H2009, &H2409, &H2809, &H2C09, &H3009, &H3409, &H4009, &H4409, &H4809
      cmdFile.WriteLine("set " & varName & "=enu")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=en")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=en-us")
    Case &H000C, &H040C, &H080C, &H0C0C, &H100C, &H140C, &H180C
      cmdFile.WriteLine("set " & varName & "=fra")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=fr")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=fr-fr")
    Case &H000A, &H080A, &H0C0A, &H100A, &H140A, &H180A, &H1C0A, &H200A, &H240A, &H280A, &H2C0A, &H300A, &H340A, &H380A, &H3C0A, &H400A, &H440A, &H480A, &H4C0A, &H500A, &H540A
      cmdFile.WriteLine("set " & varName & "=esn")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=es")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=es-es")
    Case &H0019, &H0419
      cmdFile.WriteLine("set " & varName & "=rus")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=ru")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=ru-ru")
    Case &H0816
      cmdFile.WriteLine("set " & varName & "=ptg")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=pt")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=pt-pt")
    Case &H0416
      cmdFile.WriteLine("set " & varName & "=ptb")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=pt")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=pt-br")
    Case &H0007, &H0407, &H0807, &H0C07, &H1007, &H1407
      cmdFile.WriteLine("set " & varName & "=deu")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=de")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=de-de")
    Case &H0013, &H0413, &H0813
      cmdFile.WriteLine("set " & varName & "=nld")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=nl")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=nl-nl")
    Case &H0010, &H0410, &H0810
      cmdFile.WriteLine("set " & varName & "=ita")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=it")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=it-it")
    Case &H0015, &H0415
      cmdFile.WriteLine("set " & varName & "=plk")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=pl")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=pl-pl")
    Case &H000E, &H040E
      cmdFile.WriteLine("set " & varName & "=hun")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=hu")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=hu-hu")
    Case &H0005, &H0405
      cmdFile.WriteLine("set " & varName & "=csy")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=cs")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=cs-cz")
    Case &H001D, &H041D, &H081D
      cmdFile.WriteLine("set " & varName & "=sve")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=sv")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=sv-se")
    Case &H001F, &H041F
      cmdFile.WriteLine("set " & varName & "=trk")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=tr")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=tr-tr")
    Case &H0008, &H0408
      cmdFile.WriteLine("set " & varName & "=ell")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=el")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=el-gr")
    Case &H0006, &H0406
      cmdFile.WriteLine("set " & varName & "=dan")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=da")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=da-dk")
    Case &H0014, &H0414, &H7C14, &H0814, &H7814
      cmdFile.WriteLine("set " & varName & "=nor")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=no")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=nb-no")
    Case &H000B, &H040B
      cmdFile.WriteLine("set " & varName & "=fin")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=fi")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=fi-fi")
    Case &H0004, &H0804, &H1004, &H7804
      cmdFile.WriteLine("set " & varName & "=chs")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=zh")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=zh-cn")
    Case &H0404, &H0C04, &H1404, &H7C04
      cmdFile.WriteLine("set " & varName & "=cht")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=zh")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=zh-tw")
    Case &H0011, &H0411
      cmdFile.WriteLine("set " & varName & "=jpn")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=ja")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=ja-jp")
    Case &H0012, &H0412
      cmdFile.WriteLine("set " & varName & "=kor")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=ko")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=ko-kr")
    Case &H0001, &H0401, &H0801, &H0C01, &H1001, &H1401, &H1801, &H1C01, &H2001, &H2401, &H2801, &H2C01, &H3001, &H3401, &H3801, &H3C01, &H4001
      cmdFile.WriteLine("set " & varName & "=ara")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=ar")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=ar-sa")
    Case &H000D, &H040D
      cmdFile.WriteLine("set " & varName & "=heb")
      If writeShortLang Then cmdFile.WriteLine("set " & varName & "_SHORT=he")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=he-il")

' unsupported languages, detection only
    Case &H002B, &H042B
      cmdFile.WriteLine("set " & varName & "=hye")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=hy-am")
    Case &H002D, &H042D
      cmdFile.WriteLine("set " & varName & "=euq")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=eu-es")
    Case &H0023, &H0423
      cmdFile.WriteLine("set " & varName & "=bel")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=be-by")
    Case &H007E, &H047E
      cmdFile.WriteLine("set " & varName & "=bre")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=br-fr")
    Case &H0002, &H0402
      cmdFile.WriteLine("set " & varName & "=bgr")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=bg-bg")
    Case &H0003, &H0403
      cmdFile.WriteLine("set " & varName & "=cat")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=ca-es")
    Case &H0083, &H0483
      cmdFile.WriteLine("set " & varName & "=cos")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=co-fr")
    Case &H001A, &H041A, &H101A
      cmdFile.WriteLine("set " & varName & "=hrv")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=hr-hr")
    Case &H0025, &H0425
      cmdFile.WriteLine("set " & varName & "=eti")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=et-ee")
    Case &H0038, &H0438
      cmdFile.WriteLine("set " & varName & "=fos")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=fo-fo")
    Case &H0062, &H0462
      cmdFile.WriteLine("set " & varName & "=fyn")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=fy-nl")
    Case &H0056, &H0456
      cmdFile.WriteLine("set " & varName & "=glc")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=gl-es")
    Case &H0037, &H0437
      cmdFile.WriteLine("set " & varName & "=kat")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=ka-ge")
    Case &H006F, &H046F
      cmdFile.WriteLine("set " & varName & "=kal")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=kl-gl")
    Case &H0039, &H0439
      cmdFile.WriteLine("set " & varName & "=hin")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=hi-in")
    Case &H000F, &H040F
      cmdFile.WriteLine("set " & varName & "=isl")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=is-is")
    Case &H003C, &H083C
      cmdFile.WriteLine("set " & varName & "=ire")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=ga-ie")
    Case &H0026, &H0426
      cmdFile.WriteLine("set " & varName & "=lvi")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=lv-lv")
    Case &H0027, &H0427
      cmdFile.WriteLine("set " & varName & "=lth")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=lt-lt")
    Case &H0029, &H0429
      cmdFile.WriteLine("set " & varName & "=far")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=fa-ir")
    Case &H0046, &H0446
      cmdFile.WriteLine("set " & varName & "=pan")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=pa-in")
    Case &H0018, &H0418
      cmdFile.WriteLine("set " & varName & "=rom")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=ro-ro")
    Case &H004F, &H044F
      cmdFile.WriteLine("set " & varName & "=san")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=sa-in")
    Case &H001B, &H041B
      cmdFile.WriteLine("set " & varName & "=sky")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=sk-sk")
    Case &H0024, &H0424
      cmdFile.WriteLine("set " & varName & "=slv")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=sl-si")
    Case &H001E, &H041E
      cmdFile.WriteLine("set " & varName & "=tha")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=th-th")
    Case &H0022, &H0422
      cmdFile.WriteLine("set " & varName & "=ukr")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=uk-ua")
    Case &H002A, &H042A
      cmdFile.WriteLine("set " & varName & "=vit")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=vi-vn")
    Case &H0052, &H0452
      cmdFile.WriteLine("set " & varName & "=cym")
      If writeExtLang Then cmdFile.WriteLine("set " & varName & "_EXT=cy-gb")
  End Select
End Sub

Private Sub WriteVersionToFile(cmdFile, strPrefix, strVersion)
Dim arraySuffixes, arrayVersion, i

  arraySuffixes = Split(strVersionSuffixes, ",")
  If Len(strVersion) > 0 Then
    arrayVersion = Split(strVersion, ".")
  Else
    arrayVersion = Split("0", ".")
  End If
  For i = 0 To UBound(arraySuffixes)
    If i > UBound(arrayVersion) Then
      cmdFile.WriteLine("set " & strPrefix & "_" & arraySuffixes(i) & "=0")
    Else
      cmdFile.WriteLine("set " & strPrefix & "_" & arraySuffixes(i) & "=" & arrayVersion(i))
    End If
  Next
End Sub

Private Function OfficeInstallPath(objShell, strVersionInfix)
Dim strRegVal

  OfficeInstallPath = ""
  strRegVal = RegRead(objShell, strRegKeyOfficePrefix_Mx86 & strVersionInfix & strRegKeyOfficeSuffix_InstRoot & strRegValOfficePath)
  If strRegVal <> "" Then
   MsgBox("x86: " & strRegVal)
    OfficeInstallPath = strRegVal
   Exit Function
  End If
  strRegVal = RegRead(objShell, strRegKeyOfficePrefix_Mx64 & strVersionInfix & strRegKeyOfficeSuffix_InstRoot & strRegValOfficePath)
  If strRegVal <> "" Then
   MsgBox("x64: " & strRegVal)
    OfficeInstallPath = strRegVal
    Exit Function
  End If
End Function

Private Function OfficeLanguageCode(objShell, strVersionInfix)
Dim strRegVal

  OfficeLanguageCode = 0
  strRegVal = RegRead(objShell, strRegKeyOfficePrefix_Mx86 & strVersionInfix & strRegKeyOfficeSuffix_Language & strRegValOfficeLanguage_Inst)
  If strRegVal <> "" Then
    OfficeLanguageCode = CInt(strRegVal)
    Exit Function
  End If
  strRegVal = RegRead(objShell, strRegKeyOfficePrefix_Mx64 & strVersionInfix & strRegKeyOfficeSuffix_Language & strRegValOfficeLanguage_Inst)
  If strRegVal <> "" Then
    OfficeLanguageCode = CInt(strRegVal)
    Exit Function
  End If
  strRegVal = RegRead(objShell, strRegKeyOfficePrefix_User & strVersionInfix & strRegKeyOfficeSuffix_Language & strRegValOfficeLanguage_User)
  If strRegVal <> "" Then
    OfficeLanguageCode = CInt(strRegVal)
    Exit Function
  End If
End Function

Private Function OfficeArchitecture(objShell, strVersionInfix)
Dim strRegVal

  OfficeArchitecture = "x86"
  strRegVal = RegRead(objShell, strRegKeyOfficePrefix_Mx86 & strVersionInfix & strRegKeyOfficeSuffix_Outlook & strRegValOfficeArchitecture)
  If strRegVal <> "" Then
    OfficeArchitecture = strRegVal
  End If
End Function

Private Function OfficeSPVersion(strExeVersion, idxApp)
Dim arrayVersion, arraySPs, arrayBuilds, i

  OfficeSPVersion = 0
  MsgBox(strExeVersion)
  arrayVersion = Split(strExeVersion, ".")
  Select Case CInt(arrayVersion(0))
    Case 11
      arraySPs = Split(strBuildNumbers_o2k3, ";")
    Case 12
      arraySPs = Split(strBuildNumbers_o2k7, ";")
    Case 14
      arraySPs = Split(strBuildNumbers_o2k10, ";")
    Case 15
      arraySPs = Split(strBuildNumbers_o2k13, ";")
    Case Else
      arraySPs = Split("0,0,0,0,0,0", ";")
  End Select
  If UBound(arrayVersion) < 2 Then
    Exit Function
  End If
  For i = 0 To UBound(arraySPs)
    arrayBuilds = Split(arraySPs(i), ",")
    If UBound(arrayBuilds) < idxApp Then
      Exit Function
    End If
    If CInt(arrayVersion(2)) >= CInt(arrayBuilds(idxApp)) Then
      OfficeSPVersion = i
    End If
  Next
End Function

' Main
Set wshShell = WScript.CreateObject("WScript.Shell")
strTempFolder = wshShell.ExpandEnvironmentStrings("%TEMP%")
strCmdFileName = strTempFolder & "\SetSystemEnvVars.cmd"

Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objCmdFile = objFileSystem.CreateTextFile(strCmdFileName, True)

' Determine Office version
arrayOfficeNames = Split(strOfficeNames, ",")
arrayOfficeVersions = Split(strRegKeyOfficeInfixes_Version, ",")
arrayOfficeAppNames = Split(strOfficeAppNames, ",")
arrayOfficeExeNames = Split(strOfficeExeNames, ",")
For i = 0 To UBound(arrayOfficeNames)
  strOfficeInstallPath = OfficeInstallPath(wshShell, arrayOfficeVersions(i))
  If strOfficeInstallPath <> "" Then
    For j = 0 To UBound(arrayOfficeExeNames)
      If objFileSystem.FileExists(strOfficeInstallPath & arrayOfficeExeNames(j)) Then
        objCmdFile.WriteLine("set " & UCase(arrayOfficeNames(i)) & "_VER_APP=" & arrayOfficeAppNames(j))
      MsgBox(strOfficeInstallPath & arrayOfficeExeNames(j))
        strOfficeExeVersion = GetFileVersion(objFileSystem, strOfficeInstallPath & arrayOfficeExeNames(j))
        WriteVersionToFile objCmdFile, UCase(arrayOfficeNames(i)) & "_VER", strOfficeExeVersion
        objCmdFile.WriteLine("set " & UCase(arrayOfficeNames(i)) & "_SP_VER=" & OfficeSPVersion(strOfficeExeVersion, j))
        objCmdFile.WriteLine("set " & UCase(arrayOfficeNames(i)) & "_ARCH=" & OfficeArchitecture(wshShell, arrayOfficeVersions(i)))
        languageCode = OfficeLanguageCode(wshShell, arrayOfficeVersions(i))
        objCmdFile.WriteLine("set " & UCase(arrayOfficeNames(i)) & "_LANG_CODE=0x" & Hex(languageCode))
        If languageCode = 0 Then
          objCmdFile.WriteLine("set " & UCase(arrayOfficeNames(i)) & "_LANG=%OS_LANG%")
        Else
          WriteLanguageToFile objCmdFile, UCase(arrayOfficeNames(i)) & "_LANG", languageCode, False, False
        End If
        Exit For
      End If
    Next
  End If
Next

objCmdFile.Close
WScript.Quit(0)
Last edited by aker on 13.03.2014, 06:24, edited 3 times in total.
Reason: Code updated
Wer Rechtschreibfehler findet, darf sie behalten oder an den Meistbietenden versteigern. / Everybody finding a misspelling is allowed to keep or sell it.
aker

WSUS Offline Update „Community Edition“
https://gitlab.com/wsusoffline/wsusoffline/-/releases
aker
 
Posts: 3999
Joined: 02.03.2011, 15:32

Re: 3 was unexpected at this time

Postby Mack » 13.03.2014, 06:25

The updated DetermineSystemProperties.cmd produces 4 dialog boxes :-

Code: Select all
x64: C:\Program Files (x86)\Microsoft\MSOffice 2007\Office12
x64: C:\Program Files (x86)\Microsoft\MSOffice 2010\Office14\
C:\Program Files (x86)\Microsoft\MSOffice 2010\Office14\WINWORD.EXE
14.0.7113.5001


The SetSystemEnvVars.cmd that is in the temp folder contains this :-

Code: Select all
set O2K10_VER_APP=Word
set O2K10_VER_MAJOR=14
set O2K10_VER_MINOR=0
set O2K10_VER_BUILD=7113
set O2K10_VER_REVIS=5001
set O2K10_SP_VER=2
set O2K10_ARCH=x86
set O2K10_LANG_CODE=0x409
set O2K10_LANG=enu
Mack
 
Posts: 10
Joined: 10.03.2014, 05:17
Location: AUSTRALIA

Next

Return to Installation / Updating

Who is online

Users browsing this forum: No registered users and 213 guests

cron