Dieses kleine Modul installiert alle MSI-Pakete, die im aktuellen Programmverzeichnis gefunden werden im "Quiet"-Modus, d. h. ohne irgendwelche Nachfragen.
Module modMain Sub Main() Console.WriteLine("Installiere MSI Pakete...") Try RunAll() Catch ex As Exception Console.WriteLine("Fehler: " & ex.Message) Console.WriteLine("Bitte drücken Sie eine beliebige Taste zum Beenden.") Console.ReadLine() End Try Console.WriteLine("Installation abgeschlossen.") End Sub ''' <summary> ''' Nach MSI-Paketen im aktuellen Verzeichnis (dieser EXE) suchen und alle MSI-Pakete ''' nacheinander ausführen. ''' </summary> ''' <remarks></remarks> Public Sub RunAll() Dim lstFiles As Collections.ObjectModel.ReadOnlyCollection(Of String) = _ My.Computer.FileSystem.GetFiles(Environment.CurrentDirectory, FileIO.SearchOption.SearchTopLevelOnly, "*.MSI") For Each fn As String In lstFiles ExecuteAndWait(fn, "/quiet") Next End Sub ''' <summary> ''' Einen Prozess starten und auf dessen Ende warten ''' </summary> ''' <param name="ProcessPath">Name der Datei die ausgeführt werden soll</param> ''' <param name="Arguments">Optionale Parameter</param> ''' <remarks></remarks> Public Sub ExecuteAndWait(ByVal ProcessPath As String, Optional ByVal Arguments As String = "") Dim proc As System.Diagnostics.Process Try proc = New System.Diagnostics.Process() proc.StartInfo.FileName = ProcessPath proc.StartInfo.Arguments = Arguments proc.StartInfo.WindowStyle = ProcessWindowStyle.Normal proc.Start() proc.WaitForExit() proc.Close() Catch ex As Exception MsgBox(String.Format("Prozess {0} konnte nicht gestartet werden. Fehler: {1}.", ProcessPath, ex.Message)) End Try End Sub End Module