Read the fucking MSI (Part II)

Die gleiche Routine wie bei "MSI auslesen", aber hier erfolgt die Datenübergabe an %comspec% per wscript.echo.

Batches können in dieser Konstellation drei Parameter abgreifen.

Nämlich so :

set MSI-Datei = lalala.msi
for /f "delims=* tokens=1-3" %%a in ('cscript //nologo "%~dp0Data\setenv2.vbs" "%~dp0install\%MSI-Datei%"') do (
set Produktname=%%a
set Installversion=%%b
set MSIGUID=%%c
)

 

Der scharfäugige Beobachter sieht natürlich sofort, dass die VBS.Datei aus einer CMD heraus aufgerufen wird und vom VBS ausgelesene Werte einer MSI-Datei zurückgibt.

 

option explicit
on error resume next

Dim FS, TS, WI, DB, View, Rec, oargs, i, wshell
Dim proplst, result, str, pname, pver, pcode

set oArgs=wscript.Arguments


if oArgs.Count <1 then
wscript.echo VBCRLF & "! FEHLER !" & VBCRLF & "! Fehlender Parameter !"
wscript.quit
End if

Set WI = CreateObject("WindowsInstaller.Installer")
Set DB = WI.OpenDatabase(oargs(0),2)

'Füllen des Property-Arrays und deklarieren des Übergabe-Arrays'
'Für jedes hinzugefügte Attribut in proplst wird der Zähler in result um Eins erhöht'
proplst = Array("ProductName","InstallVersion","ProductCode")
i = ubound(proplst)
result = Array()

i=0
for i=0 to ubound(proplst)

'SQL-Statements definieren
Set View = DB.OpenView("Select `Value` From Property WHERE `Property` = '" & proplst(i) & "'")
'SQL-Statements ausführen
View.Execute
Set Rec = View.Fetch
redim preserve result(i)
result(i) = rec.StringData(1)

'Für die Variablenübergabe an das CMD'
select case i
case 0 pname = result(i)
case 1 pver = result(i)
case 2 pcode = result(i)
end select


'... und für die Stringerzeugung wegen des logfilenamens'
if not i= ubound(proplst) then
if not i+1 = ubound(proplst) then
str = str & result(i) & "_"
else
str = str & result(i)
end if

end if

next


'Set FS = CreateObject("Scripting.FileSystemObject")
'Set TS = FS.CreateTextFile("c:\Logs\MSI\" & str & ".txt")
'TS.Write pname&"_"&pver&"_"&pcode
wscript.echo pname & "*" & pver & "*" & pcode
'TS.Close

wscript.quit

  • Donnerstag, 15 März 2018

Leave a comment

You are commenting as guest.