windows - MSI får installeret argumenter fra registreringsdatabasen

Indlæg af Hanne Mølgaard Plasc

Problem



Vi 'faktisk skriver PowerShell cmdlets for at skabe et øjebliksbillede af installerede (brugerdefinerede) MSI'er. De cmdlets går gennem en liste af servere, kontrollere om MSI'er fra en given udgiver er installeret. Hvis så er tilfældet, kopieres MSI fra den eksterne maskine til vært udfører PowerShell cmdlet. Hidtil så godt.
I næste fase planlægger vi at genoprette et system med de tidligere hentede MSI-pakker.


Vores aktuelle problem: Nogle af MSI'erne har brug for kommandolinjeparametre til installation via msiexec. Vi søgte i Windows-registreringsdatabasen, hvis argumenterne er gemt et sted, men vi kunne ikke finde dem. Vi kontrollerede følgende stier:


 HKLM:SOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS-1-5-18Products*InstallProperties
 HKLM:SoftwareWow6432NodeMicrosoftWindowsCurrentVersionUninstall*
 HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall*


Er der nogen der ved, om installationsargumenterne, når du installerer en MSI via msiexec, vedvarer på Windows?


MSI-pakkerne bliver installeret via:


  msiexec /i somePackage.msi /qn /norestart Arg1=1 Arg2=someTest Arg3=true


thx

Bedste reference


Installer strenge : Som Chris har sagt, er vedvarende egenskaber fra en installation en udeladelse fra Windows Installer - efter min mening også. Jeg har implementeret brugerdefinerede funktioner til sådanne vedvarende flere gange for at arbejde rundt om begrænsningen for virksomhedernes implementering.


Afinstaller strenge : Selvom der ikke er nogen installeringsstrenger/installér kommandolinjer i registreringsdatabasen (som jeg ved)
der er afinstallationsstrenger skrevet til registret som forklaret her.


Omformer : Jeg vil gerne tilføje, at hvis der anvendes transformationer under installationen, kan du få stien til disse via MSI API. Anvendte transformer kan gøre væsentlige ændringer i MSI'en, der installeres, og er den kraftige tilgang til at tilpasse implementering i forhold til blot at indstille OFFENTLIGE EGENSKABER. Flere oplysninger her: Sådan gør du bedre ud af MSI-filer (transformer sektion).


For at hente en liste over transformer anvendt på din MSI-pakke på din boks (der kan ikke være nogen - de fleste virksomheder bruger transformer til implementering), prøv måske denne VBScript, der får adgang til MSI COM API for at få oplysningerne (i stedet for at læse direkte fra registreringsdatabasen - hvilket ikke er så godt, da råværdier kan blive påvirket af implementeringsdetaljer, der ikke ses i registreringsdatabasen i klar tekst).


For at køre scriptet skal du kopiere/indsætte det i en *.vbs fil på skrivebordet og dobbeltklikke for at køre. Udgang til msiinfo.csv. Åbn i Excel , et regnearksprogram eller bare Notesblok :


Set fso = CreateObject("Scripting.FileSystemObject")
Set output = fso.CreateTextFile("msiinfo.csv", True, True)
Set installer = CreateObject("WindowsInstaller.Installer")

On Error Resume Next ' we ignore all errors

' Write headers
output.writeline ("ProductCode" & ", " & "ProductName" & ", " & "Version" & ", " & "Transforms")

For Each product In installer.ProductsEx("", "", 7)
   productcode = product.ProductCode
   name = product.InstallProperty("ProductName")
   version=product.InstallProperty("VersionString")
   transforms= product.InstallProperty("Transforms")
   output.writeline (productcode & ", " & name & ", " & version & ", " & transforms)
Next

output.Close

Andre referencer 1


Desværre er Windows Installer egenskaber IKKE vedholdende. Det er op til hver MSI-forfatter at bestemme, hvordan han vil gemme/hente (mange ved ikke, at de har brug for) egenskaber, så de er tilgængelige i efterfølgende transaktioner.