Unwanted and unexpected problems occurs by a mixed usage of kixtart files.
What would it be nice when there is a procedure, which can check for
this kind of mixage.
The new tool version.kix has the capability to do it.
The tool checks
code:
IF setconsole("hide")
ENDIF
;
; NT/95 check kixtart version - Kixtart 3.63
;
; (c) scripting@wanadoo.nl - 2001
;
; vs 1.03 - program
;
; 1.00 (20010330) original version
; 1.01 (20010330) - introduction of $log_mode. $log_mode="yes" means
; the creation of a dynamic list.
; - introduction of $logfile. this file contains
; dynamic list information.
; 1.02 (20010330) - GetFileTime information also to $logfile entries.
; 1.03 (20010330) - check also KXRPC module.
; - GetFileSize information also to $logfile entries.
; - introduction of $debug_file. change $logfile to $log_file.
;
$prgrm_version="1.03"
;
$tmp_directory=ExpandEnvironmentVars("%tmp%")
IF (substr($tmp_directory,len($tmp_directory),1) <> "\")
$tmp_directory=$tmp_directory+"\"
ENDIF
;
$debug_mode="no" ; - yes/no -
$debug_file=$tmp_directory+"kix-info.txt"
$log_mode="no" ; - yes/no -
$log_file="c:\kix-versions.txt"
;
IF (@inwin = 1)
$NT_mode="yes"
ELSE
$NT_mode="no"
ENDIF
;
$os=""
SELECT
CASE ($NT_mode = "yes") AND (@dos = "5.0") ; - Windows 2000 -
$os="W2K"
CASE ($NT_mode = "yes") ; - Windows NT -
$os="NT4"
CASE ($NT_mode <> "yes") AND (@dos = "4.90") ; - Windows ME -
$os="ME"
CASE ($NT_mode <> "yes") AND (@dos = "4.10") ; - Windows 98 -
$os="W98"
CASE ($NT_mode <> "yes") AND (@dos = "4.0") ; - Windows 95 -
$os="W95"
CASE 1
$os="???" ; - undetermined -
ENDSELECT
;
del $tmp_directory+"kixtart.txt"
IF ($debug_mode = "yes")
IF (RedirectOutput($debug_file,1) = 0)
ENDIF
ENDIF ? "Kixtart "+@kix+" - "+$os+" version check (vs "+$prgrm_version+")"+" "+$time_start
?
; --------------------------------------------------------------------------
; - init kixtart version information -
; --------------------------------------------------------------------------
$max_kix_files=5
DIM $kix_files[$max_kix_files+1]
DIM $kix_info[$max_kix_files+1]
DIM $kix_found[$max_kix_files+1]
$kix_files[1]="kix32.exe" $kix_info[1]="" $kix_found[1]=""
$kix_files[2]="kx16.dll" $kix_info[2]="" $kix_found[2]=""
$kix_files[3]="kx32.dll" $kix_info[3]="" $kix_found[3]=""
$kix_files[4]="kx95.dll" $kix_info[4]="" $kix_found[4]=""
$kix_files[5]="kxrpc.exe" $kix_info[5]="" $kix_found[5]=""
;
$number_of_versions=13
$max_kix_version=$max_kix_files*20
DIM $kix_vs_info[$max_kix_version+1]
; $kix_vs_info[ 0]=" filename name filename version size date "
$kix_vs_info[ 1]="3.34 kix32.exe 106496 1996/08/01 00:00:00"
$kix_vs_info[21]="3.34 kx16.dll 48128 1996/07/24 00:00:00"
$kix_vs_info[41]="3.34 kx32.dll 5632 1996/07/24 00:00:00"
$kix_vs_info[61]="3.34 kx95.dll - missing file - "
$kix_vs_info[81]="3.34 kxrpc.exe - missing file - "
$kix_vs_info[ 2]="3.35 kix32.exe 108544 1996/11/12 03:35:00"
$kix_vs_info[22]="3.35 kx16.dll 47104 1996/11/12 03:35:00"
$kix_vs_info[42]="3.35 kx32.dll 22016 1996/11/12 03:35:00"
$kix_vs_info[62]="3.35 kx95.dll - missing file - "
$kix_vs_info[82]="3.35 kxrpc.exe - missing file - "
$kix_vs_info[ 3]="3.47 kix32.exe KIX32 KIX32.EXE 3, 47, 0, 0 131072 1998/02/16 21:06:20"
$kix_vs_info[23]="3.47 kx16.dll 46592 1998/02/10 03:46:00"
$kix_vs_info[43]="3.47 kx32.dll KX32 KX32.DLL 3, 44, 0, 0 29184 1998/02/10 03:46:00"
$kix_vs_info[63]="3.47 kx95.dll KX95 KX95.DLL 3, 44, 0, 0 31744 1998/02/10 03:46:00"
$kix_vs_info[83]="3.47 kxrpc.exe KXRPC KXRPC.EXE 3, 44, 0, 0 67072 1998/02/10 03:46:00"
$kix_vs_info[ 4]="3.49 kix32.exe KIX32 KIX32.EXE 3, 49, 0, 0 137216 1998/09/23 17:53:04"
$kix_vs_info[24]="3.49 kx16.dll 46592 1998/09/19 03:48:00"
$kix_vs_info[44]="3.49 kx32.dll KX32 KX32.DLL 3, 44, 0, 0 29184 1998/09/19 03:48:00"
$kix_vs_info[64]="3.49 kx95.dll KX95 KX95.DLL 3, 44, 0, 0 31744 1998/09/19 03:48:00"
$kix_vs_info[84]="3.49 kxrpc.exe KXRPC KXRPC.EXE 3, 44, 0, 0 67072 1998/09/19 03:48:00"
$kix_vs_info[ 5]="3.50 kix32.exe KIX32 KIX32.EXE 3, 50, 0, 0 131072 1998/10/20 12:41:06"
$kix_vs_info[25]="3.50 kx16.dll 46592 1998/09/19 03:48:00"
$kix_vs_info[45]="3.50 kx32.dll KX32 KX32.DLL 3, 44, 0, 0 29184 1998/09/19 03:48:00"
$kix_vs_info[65]="3.50 kx95.dll KX95 KX95.DLL 3, 44, 0, 0 31744 1998/09/19 03:48:00"
$kix_vs_info[85]="3.50 kxrpc.exe KXRPC KXRPC.EXE 3, 44, 0, 0 67072 1998/09/19 03:48:00"
$kix_vs_info[ 6]="3.51 kix32.exe KIX32 KIX32.EXE 3, 51, 0, 0 131072 1999/01/05 18:40:22"
$kix_vs_info[26]="3.51 kx16.dll 46592 1998/09/19 02:48:00"
$kix_vs_info[46]="3.51 kx32.dll KX32 KX32.DLL 3, 44, 0, 0 29184 1998/09/19 02:48:00"
$kix_vs_info[66]="3.51 kx95.dll KX95 KX95.DLL 3, 44, 0, 0 31744 1998/09/19 02:48:00"
$kix_vs_info[86]="3.51 kxrpc.exe KXRPC KXRPC.EXE 3, 44, 0, 0 67072 1998/09/19 02:48:00"
$kix_vs_info[ 7]="3.53 kix32.exe KIX32 KIX32.EXE 3, 53, 0, 0 135168 1999/04/29 12:32:01"
$kix_vs_info[27]="3.53 kx16.dll 46592 1998/09/19 03:48:00"
$kix_vs_info[47]="3.53 kx32.dll KX32 KX32.DLL 3, 44, 0, 0 29184 1998/09/19 03:48:00"
$kix_vs_info[67]="3.53 kx95.dll KX95 KX95.DLL 3, 44, 0, 0 31744 1998/09/19 03:48:00"
$kix_vs_info[87]="3.53 kxrpc.exe KXRPC KXRPC.EXE 3, 44, 0, 0 67072 1998/09/19 03:48:00"
$kix_vs_info[ 8]="3.54 kix32.exe KIX32 KIX32.EXE 3, 54, 0, 0 135168 1999/05/01 12:27:06"
$kix_vs_info[28]="3.54 kx16.dll 46592 1998/09/19 03:48:00"
$kix_vs_info[48]="3.54 kx32.dll KX32 KX32.DLL 3, 44, 0, 0 29184 1998/09/19 03:48:00"
$kix_vs_info[68]="3.54 kx95.dll KX95 KX95.DLL 3, 44, 0, 0 31744 1998/09/19 03:48:00"
$kix_vs_info[88]="3.54 kxrpc.exe KXRPC KXRPC.EXE 3, 44, 0, 0 67072 1998/09/19 03:48:00"
$kix_vs_info[ 9]="3.55 kix32.exe KIX32 KIX32.EXE 3, 55, 0, 0 135168 1999/05/17 12:22:06"
$kix_vs_info[29]="3.55 kx16.dll 46592 1998/09/19 03:48:00"
$kix_vs_info[49]="3.55 kx32.dll KX32 KX32.DLL 3, 44, 0, 0 29184 1998/09/19 03:48:00"
$kix_vs_info[69]="3.55 kx95.dll KX95 KX95.DLL 3, 44, 0, 0 31744 1998/09/19 03:48:00"
$kix_vs_info[89]="3.55 kxrpc.exe KXRPC KXRPC.EXE 3, 44, 0, 0 67072 1998/09/19 03:48:00"
$kix_vs_info[10]="3.60 kix32.exe KIX32 KIX32.EXE 3, 60, 0, 0 159744 1999/09/01 16:00:00"
$kix_vs_info[30]="3.60 kx16.dll 47104 1999/09/01 16:00:00"
$kix_vs_info[50]="3.60 kx32.dll KX32 KX32.DLL 3, 60, 0, 0 32768 1999/09/01 16:00:00"
$kix_vs_info[70]="3.60 kx95.dll KX95 KX95.DLL 3, 60, 0, 0 36864 1999/09/01 16:00:00"
$kix_vs_info[90]="3.60 kxrpc.exe KXRPC KXRPC.EXE 3, 60, 0, 0 57344 1999/09/01 16:00:00"
$kix_vs_info[11]="3.61 kix32.exe KIX32 KIX32.EXE 3, 61, 0, 0 163840 1999/10/08 14:37:15"
$kix_vs_info[31]="3.61 kx16.dll 47104 1999/09/01 16:00:00"
$kix_vs_info[51]="3.61 kx32.dll KX32 KX32.DLL 3, 60, 0, 0 32768 1999/09/01 16:00:00"
$kix_vs_info[71]="3.61 kx95.dll KX95 KX95.DLL 3, 60, 0, 0 36864 1999/09/01 16:00:00"
$kix_vs_info[91]="3.61 kxrpc.exe KXRPC KXRPC.EXE 3, 60, 0, 0 57344 1999/09/01 16:00:00"
$kix_vs_info[12]="3.62 kix32.exe KIX32 KIX32.EXE 3, 62, 0, 0 163840 1999/11/24 16:50:01"
$kix_vs_info[32]="3.62 kx16.dll 47104 1999/09/01 15:00:00"
$kix_vs_info[52]="3.62 kx32.dll KX32 KX32.DLL 3, 60, 0, 0 32768 1999/09/01 15:00:00"
$kix_vs_info[72]="3.62 kx95.dll KX95 KX95.DLL 3, 60, 0, 0 36864 1999/09/01 15:00:00"
$kix_vs_info[92]="3.62 kxrpc.exe KXRPC KXRPC.EXE 3, 60, 0, 0 57344 1999/09/01 15:00:00"
$kix_vs_info[13]="3.63 kix32.exe KIX32 KIX32.EXE 3, 63, 0, 0 163840 2000/10/15 14:50:20"
$kix_vs_info[33]="3.63 kx16.dll 47104 1999/09/01 16:00:00"
$kix_vs_info[53]="3.63 kx32.dll KX32 KX32.DLL 3, 60, 0, 0 32768 1999/09/01 16:00:00"
$kix_vs_info[73]="3.63 kx95.dll KX95 KX95.DLL 3, 60, 0, 0 36864 1999/09/01 16:00:00"
$kix_vs_info[93]="3.63 kxrpc.exe KXRPC KXRPC.EXE 3, 60, 0, 0 57344 1999/09/01 16:00:00"
; --------------------------------------------------------------------------
; - check kixtart version at local drive -
; --------------------------------------------------------------------------
$source_directory=@curdir
IF ($NT_mode = "yes")
$destination_directory=ReadValue("HKEY_LOCAL_MACHINE\software\microsoft\windows NT\currentversion", "SystemRoot")
ELSE
$destination_directory=ReadValue("HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion", "SystemRoot")
ENDIF
IF (len($destination_directory) = 0)
$destination_directory="c:\"
ENDIF
IF (substr($destination_directory,len($destination_directory),1) <> "\")
$destination_directory=$destination_directory+"\"
ENDIF
IF ($debug_mode = "yes")
$destination_directory="c:\" ; <--- change line to check another drive
ENDIF
;
$search_program="kix32.exe"
$search_key=$destination_directory+$search_program
IF (exist("%temp%\kixtart.tmp") = 1)
del %temp%\kixtart.tmp
ENDIF
SHELL "%comspec% /e:1024 /c dir "+$search_key+" /b /s >%temp%\kixtart.tmp"
SHELL "%comspec% /e:1024 /c echo -end.of.list- >>%temp%\kixtart.tmp"
IF (exist ("%temp%\kixtart.tmp") = 1)
IF open(1,"%temp%\kixtart.tmp")
ENDIF
;
$found="no"
$count=0
WHILE ($found = "no")
$result=readline(1)
IF (@error <> 0) or (instr($result,"-end.of.list-") <> 0)
$found="yes"
ELSE
$count=$count+1
$source_directory=substr($result,1,len($result)-len($search_program))
? "- "+substr(" ",1,5-len("$count"))+$count+" "+$result
GOSUB "check_version_info"
ENDIF
LOOP
IF close(1)
ENDIF
IF ($count <> 0)
IF ($count = 1)
? "Informative KIX-VERSION: "+$count+" file found with key '"+$search_key+" /s'."
ELSE
? "Informative KIX-VERSION: "+$count+" files found with key '"+$search_key+" /s'."
ENDIF
ENDIF
ENDIF
IF (exist("%temp%\kixtart.tmp") = 1)
del %temp%\kixtart.tmp
ENDIF
GOTO "end_script"
EXIT
; --------------------------------------------------------------------------
; - check kixtart version at specified directory -
; --------------------------------------------------------------------------
:check_version_info
IF (substr($source_directory,len($source_directory),1) <> "\")
$source_directory=$source_directory+"\"
ENDIF
;
$i=1
WHILE ($i <= $max_kix_files)
$source_file=$source_directory+$kix_files[$i]
IF (exist($source_file) = 1)
IF ($debug_mode = "yes")
?
? "Informative VERSION: "+LCASE($source_file)
?
? " size = "+GetFileSize($source_file)
? " time = "+GetFileTime($source_file)
?
? " company name "+GetFileVersion($source_file,"company name")
? " filedescription "+GetFileVersion($source_file,"filedescription")
? " fileversion "+GetFileVersion($source_file,"fileversion")
? " internalname "+GetFileVersion($source_file,"internalname")
? " language "+GetFileVersion($source_file,"language")
? " legalcopyright "+GetFileVersion($source_file,"legalcopyright")
? " legaltrademarks "+GetFileVersion($source_file,"legaltrademarks")
? " originalfilename "+GetFileVersion($source_file,"originalfilename")
? " privatebuild "+GetFileVersion($source_file,"privatebuild")
? " productname "+GetFileVersion($source_file,"productname")
? " productversion "+GetFileVersion($source_file,"productversion")
? " specialbuild "+GetFileVersion($source_file,"specialbuild")
ENDIF
$kix_file_size=GetFileSize($source_file)
$kix_file_time=GetFileTime($source_file)
$kix_internalname=GetFileVersion($source_file,"internalname")
$kix_original_filename=GetFileVersion($source_file,"originalfilename")
$kix_product_version=GetFileVersion($source_file,"productversion")
;
$kix_info[$i]=""
$kix_info[$i]=$kix_info[$i]+substr($kix_files[$i]+" ",1,10)+" "
;
$kix_info[$i]=$kix_info[$i]+substr($kix_internalname+" ",1,5)+" "
$kix_info[$i]=$kix_info[$i]+substr($kix_original_filename+" ",1,10)+" "
$kix_info[$i]=$kix_info[$i]+substr($kix_product_version+" ",1,11)+" "
$kix_info[$i]=$kix_info[$i]+substr(" ",1,7-len("$kix_file_size"))+$kix_file_size+" "
IF (len($kix_file_time) > 1)
$kix_info[$i]=$kix_info[$i]+$kix_file_time
ELSE
$kix_info[$i]=$kix_info[$i]+" - missing file - "
ENDIF
$kix_info[$i]=$kix_info[$i]+" "
$kix_info[$i]=$kix_info[$i]+$source_directory
ELSE
$kix_info[$i]=""
$kix_info[$i]=$kix_info[$i]+substr($kix_files[$i]+" ",1,10)+" "
$kix_info[$i]=$kix_info[$i]+"- missing file -"
ENDIF
$i=$i+1
LOOP
;
$version=substr($kix_info[1],29,1)+"."+substr($kix_info[1],32,2)
IF ($version = " . ")
$version="?.??"
ENDIF
$kix_found[1]=""
$kix_found[2]=""
$kix_found[3]=""
$kix_found[4]=""
$kix_found[5]=""
; - check_version -
$k=1
WHILE ($k <= $number_of_versions)
$l=1
WHILE ($l <= $max_kix_files)
IF (LTRIM(RTRIM(substr($kix_info[$l],1,52))) = LTRIM(RTRIM(substr($kix_vs_info[20*($l-1)+$k],6,52))))
$kix_found[$l]=$kix_found[$l]+"-"+substr($kix_vs_info[20*($l-1)+$k],1,4)+"-"
ENDIF
$l=$l+1
LOOP
$k=$k+1
LOOP
IF ($debug_mode = "yes")
?
ENDIF
? " -version- "+$version
? $kix_files[1]+" " +$kix_found[1]+" "+GetFileTime($source_directory+$kix_files[1])+" "+GetFileSize($source_directory+$kix_files[1])
? $kix_files[2]+" "+$kix_found[2]+" "+GetFileTime($source_directory+$kix_files[2])+" "+GetFileSize($source_directory+$kix_files[2])
? $kix_files[3]+" "+$kix_found[3]+" "+GetFileTime($source_directory+$kix_files[3])+" "+GetFileSize($source_directory+$kix_files[3])
? $kix_files[4]+" "+$kix_found[4]+" "+GetFileTime($source_directory+$kix_files[4])+" "+GetFileSize($source_directory+$kix_files[4])
? $kix_files[5]+" " +$kix_found[5]+" "+GetFileTime($source_directory+$kix_files[5])+" "+GetFileSize($source_directory+$kix_files[5])
IF ($version = "?.??")
$version=substr($kix_found[1],2,4)
ENDIF
IF (instr($kix_found[1], LTRIM(RTRIM($version))) <> 0) AND
(instr($kix_found[2], LTRIM(RTRIM($kix_found[1]))) <> 0) AND
(instr($kix_found[3], LTRIM(RTRIM($kix_found[1]))) <> 0) AND
(instr($kix_found[4], LTRIM(RTRIM($kix_found[1]))) <> 0) AND
THEN
$kix_ok="yes"
ELSE
$kix_ok="no"
ENDIF
IF ($kix_ok = "yes")
? " -version- "+$version+" found"
ELSE
? " -version- "+$version+" incomplete or missing file(s)"
ENDIF
;
IF ($log_mode = "yes")
$file=$log_file
$section=$os+" "+$version+" " ; - ok/error -
$key=LCASE(@wksta)+" "+$version+" "+$os
$xxx=""
$xxx=$xxx+substr(@date,1,4)+substr(@date,6,2)+substr(@date,9,2)
$xxx=$xxx+"_"
$xxx=$xxx+@time+" "
$xxx=$xxx+$version+" "
$xxx=$xxx+LTRIM(RTRIM($kix_files[1]))+"=('"+$kix_found[1]+"','"+GetFileTime($source_directory+$kix_files[1])+"') "
$xxx=$xxx+LTRIM(RTRIM($kix_files[2]))+"=('"+$kix_found[2]+"','"+GetFileTime($source_directory+$kix_files[2])+"') "
$xxx=$xxx+LTRIM(RTRIM($kix_files[3]))+"=('"+$kix_found[3]+"','"+GetFileTime($source_directory+$kix_files[3])+"') "
$xxx=$xxx+LTRIM(RTRIM($kix_files[4]))+"=('"+$kix_found[4]+"','"+GetFileTime($source_directory+$kix_files[4])+"') "
$xxx=$xxx+LTRIM(RTRIM($kix_files[5]))+"=('"+$kix_found[5]+"','"+GetFileTime($source_directory+$kix_files[5])+"') "
$xxx=$xxx+"directory=('"+$source_directory+"')"
IF ($debug_mode = "yes")
?
? " file = "+$file
IF ($kix_ok = "yes")
? " section = "+$section+"ok"
ELSE
? " section = "+$section+"error"
ENDIF
? " key = "+$key
? " xxx = "+$xxx
?
ENDIF
IF ($kix_ok = "yes")
IF writeprofilestring($file, $section+"error", $key, "")
ENDIF
IF writeprofilestring($file, $section+"ok", $key, $xxx+" -ok-")
ENDIF
ELSE
IF writeprofilestring($file, $section+"ok", $key, "")
ENDIF
IF writeprofilestring($file, $section+"error", $key, $xxx+" -error-")
ENDIF
ENDIF
ENDIF
RETURN
; --------------------------------------------------------------------------
; - end -
; --------------------------------------------------------------------------
:end_script
IF (RedirectOutput("CON") = 0)
ENDIF
IF ($debug_mode = "yes")
?
? "Informative KIX-VERSION: output written to '"+$debug_file+"'."
ENDIF
Greetings.