Discussion:
Windows Installer Version ermitteln
(zu alt für eine Antwort)
Christoph Duesmann
2004-12-08 15:35:20 UTC
Permalink
Hallo !

Wie kann ich aus VB.Net bzw. mit WMi die installierte MSI.-Installer-Version
herausfinden ?

Danke !

Christoph
Arne Janning
2004-12-08 17:49:52 UTC
Permalink
Hallo Christoph!

"Christoph Duesmann" schrieb
Post by Christoph Duesmann
Wie kann ich aus VB.Net bzw. mit WMi die installierte
MSI.-Installer-Version herausfinden ?
Falls Du mit Option Strict Off leben kannst:

Option Strict Off
[...]
Dim installer As Object
Dim version As String
Try
installer = CreateObject("WindowsInstaller.Installer")
version = installer.version
MessageBox.Show(version)
Catch ex As Exception
MessageBox.Show("Kein Installer verfügbar")
End Try


Ansonsten:
Option Strict On
[.]
Try
Dim t As Type = Type.GetTypeFromProgID( _
"WindowsInstaller.Installer")
Dim o As Object = Activator.CreateInstance(t)
Dim o2 As Object = _
t.InvokeMember("Version", _
Reflection.BindingFlags.GetProperty, _
Nothing, o, New Object() {})
MessageBox.Show(o2.ToString)
Catch
'Fehlerbehandlung...
End Try


Gruß

Arne Janning
Christoph Duesmann
2004-12-09 06:55:47 UTC
Permalink
Guten Morgen Arne !
Post by Arne Janning
Option Strict Off
[...]
Dim installer As Object
Dim version As String
Try
installer = CreateObject("WindowsInstaller.Installer")
version = installer.version
MessageBox.Show(version)
Catch ex As Exception
MessageBox.Show("Kein Installer verfügbar")
End Try
Danke für die Lösung !
Habe aber noch eine Frage : Lässt sich der Code auch so anpassen, das ich
die Installerversionen von anderen Rechnern herausbekomme ?
Hintergrund ist der, das wenn ein MSI-Paket mit der Version 2 erstellt wurde
auf einen Rechner verteilt werden soll, der nur die InstallerVersion 1
installiert hat, ich im Vorfeld schon bestimmen möchte, ob diese Installtion
überhaupt funktioniert.

Danke !

Christoph
Arne Janning
2004-12-09 13:22:24 UTC
Permalink
Hallo Christoph!

"Christoph Duesmann" schrieb
Post by Christoph Duesmann
Danke für die Lösung !
Habe aber noch eine Frage : Lässt sich der Code auch so anpassen, das ich
die Installerversionen von anderen Rechnern herausbekomme ?
Hintergrund ist der, das wenn ein MSI-Paket mit der Version 2 erstellt
wurde auf einen Rechner verteilt werden soll, der nur die InstallerVersion
1 installiert hat, ich im Vorfeld schon bestimmen möchte, ob diese
Installtion überhaupt funktioniert.
Nein, dafür ist der Code nicht gedacht. Womit erstellst Du denn die
MSI-Datei?

Wenn Du Sie mit einem VS.NET-Setup-Projekt erstellst, dann gehe zu
Projekt|Eigenschaften und wähle aus der "Bootstrapper"-Dropdownliste den
"Windows-Installer Bootstrapper". Es wird dann bei der Installation auf dem
Zielrechner geprüft, ob die Installerversion ausreichend ist, und wenn
nicht, wird sie automatisch aktualisiert. Dann hast Du kein Problem damit.
Wenn Du in der Dropdownliste "Paketdateien" die Option "Als lose
komprimierte Dateien" auswählst, siehst Du auch, dass VS.NET die Dateien
"InstMsiA.Exe" und "InstMsiW.Exe" (als Installerupdates für Consumer Windows
und NT) in das Ausgabeverzeichnis kopiert.

Wenn Du Wise, InstallShield, etc. benutzt, sollte das Klären von
Vorbedingungen ohnehin kein Problem sein.

Wenn Du MSI-Datei gar nicht selbst erstellt hast, bin ich überfragt. Wenn Du
Wise, InstallShield, etc. zur Hand hast, könntest Du die MSI-Datei editieren
und neu kompilieren. Vielleicht gibt es doch noch eine andere Möglichkeit
(WMI?). Vielleicht noch einmal in

news://news.microsoft.com/microsoft.public.de.german.entwickler.windows.installer

nachfragen.

Gruß

Arne Janning

Lesen Sie weiter auf narkive:
Suchergebnisse für 'Windows Installer Version ermitteln' (Fragen und Antworten)
5
Antworten
Windows Vista 32-Bit zu Windows 7 64-Bit?!?
gestartet 2011-02-04 07:27:42 UTC
software
Loading...