; GetOfficeDetails2.kix
; 8/31/2015 2:46:58 PM Update script to test for newer Office versions
; Check if Office is Click-To-Run install and exit if it is
; (do not have Click-To-Run install so cannot code and test)
; https://msdn.microsoft.com/en-us/library/office/ff864733.aspx
; 7/17/2005 11:17PM
; Updated 7/19/2005 2:25PM
; http://www.kixtart.org/ubbthreads/showflat.php?Cat=0&Number=143052
Break On
Dim $SO
$SO=SetOption('Explicit','On')
$SO=SetOption('NoVarsInStrings','On')
$SO=SetOption('WrapAtEOL','On')
Dim $OfficeApps
$OfficeApps = GetOfficeDetails2()
? 'Office Type is : ' + $OfficeApps[10]
? 'Excel Version : ' + $OfficeApps[0]
? 'Word Version : ' + $OfficeApps[1]
? 'PowerPoint Version : ' + $OfficeApps[2]
? 'Access Version : ' + $OfficeApps[3]
? 'Publisher Version : ' + $OfficeApps[4]
? 'Project Version : ' + $OfficeApps[5]
? 'Visio Version : ' + $OfficeApps[6]
? 'Outlook Version : ' + $OfficeApps[7]
? 'FrontPage Version : ' + $OfficeApps[8]
? 'InfoPath Version : ' + $OfficeApps[9]
? 'Virtual Office: ' + $OfficeApps[11]
Function GetOfficeDetails2(optional $sComputer)
Dim $A,$B,$P,$Excelver,$Wordver,$PowerPointver,$Accessver,$Publisherver
Dim $Projectver,$FrontPagever,$Visiover,$Outlookver,$InfoPathver
Dim $Product,$Office,$VirtualOffice
Dim $Officeindex,$Officekey,$DetailsArray[12]
Dim $Index,$RP,$C,$D
$sComputer=IIf(Not $sComputer,'','\\'+Join(Split($sComputer,'\'),'',3)+'\')
$A=$sComputer+'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths'
$C=$sComputer+'HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\'
$D=$sComputer+Left(ReadValue($sComputer+'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir'),1)
$Index=0
Select
Case KeyExist("HKEY_LOCAL_MACHINE\Software\Microsoft\Office\14.0\Common\InstallRoot\Virtual")
$VirtualOffice=1
Exit
Case KeyExist("HKEY_LOCAL_MACHINE\Software\Microsoft\Office\15.0\Common\InstallRoot\Virtual")
$VirtualOffice=1
Exit
Case 1
$VirtualOffice=0
EndSelect
$B=EnumKey($A+'\',$Index)
If @ERROR Exit @ERROR EndIf
While @ERROR=0
If $sComputer
$RP=$D+'$'+Right(ReadValue($A+'\'+$B,'path'),-2)
Else
$RP=ReadValue($A+'\'+$B,'path')
EndIf
Select
Case $B='excel.exe'
$Excelver=GetFileVersion($RP+'\'+$B,'BinFileVersion')
Case $B='winword.exe'
$Wordver=GetFileVersion($RP+'\'+$B,'BinFileVersion')
Case $B='powerpnt.exe'
$PowerPointver=GetFileVersion($RP+'\'+$B,'BinFileVersion')
Case $B='msaccess.exe'
$Accessver=GetFileVersion($RP+'\'+$B,'BinFileVersion')
Case $B='mspub.exe'
$Publisherver=GetFileVersion($RP+'\'+$B,'BinFileVersion')
Case $B='winproj.exe'
$Projectver=GetFileVersion($RP+'\'+$B,'BinFileVersion')
Case $B='visio32.exe'
$Visiover=GetFileVersion($RP+'\'+$B,'BinFileVersion')
Case $B='outlook.exe'
Select
Case KeyExist("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0")
$Outlookver=GetFileVersion($RP+'\'+$B,'BinFileVersion')
Case 1
$Outlookver=GetFileVersion($RP+'\'+'OUTLLIB.DLL','BinFileVersion')
EndSelect
Case $B='frontpg.exe'
$FrontPagever=GetFileVersion($RP+'\'+$B,'BinFileVersion')
Case $B='infopath.exe'
$InfoPathver=GetFileVersion($RP+'\'+$B,'BinFileVersion')
EndSelect
$Index=$Index+1
$B=EnumKey($A+'\',$Index)
Loop
$Officeindex=0
$Officekey=EnumKey($C,$Officeindex)
If @ERROR Exit @ERROR EndIf
While @ERROR=0 And $Office=0
$Product=ReadValue($C+$Officekey,'DisplayName')
If InStr ($Product, 'Microsoft Office') And Not InStr($Product,'Live Meeting') And Not InStr($Product,'Studio')
$Office=$Product
EndIf
$Officeindex=$Officeindex+1
$Officekey=EnumKey($C,$Officeindex)
Loop
$DetailsArray[0]=$Excelver $DetailsArray[1]=$Wordver $DetailsArray[2]=$PowerPointver
$DetailsArray[3]=$Accessver $DetailsArray[4]=$Publisherver $DetailsArray[5]=$Projectver
$DetailsArray[6]=$Visiover $DetailsArray[7]=$Outlookver $DetailsArray[8]=$FrontPagever
$DetailsArray[9]=$InfoPathver $DetailsArray[10]=$Office $DetailsArray[11]=$VirtualOffice
$GetOfficeDetails2=$DetailsArray
EndFunction