Die Idee:
Alle Installationsdateien liegen gesammelt in einem Ordner, und das Skript greift lediglich über den Dateinamen darauf zu.
Warum das ein Gamechanger ist
Das klingt zunächst banal, hat aber massive Vorteile:
- Keine wechselnden Pfade mehr
- Kein Anpassen des Skripts bei neuen Versionen
- Klare, reproduzierbare Installationen
Das Skript wird gestartet und findet die passende Datei sofort. Das spart Zeit und reduziert Fehler.
Praktisches Beispiel
Angenommen, du nutzt ein PowerShell-Skript, das auf einem Server oder einer Netzwerkfreigabe nach MSI-Dateien sucht:
- Prüfen, ob die Datei existiert
- Kopieren auf den lokalen Rechner
- Installation ausführen
Einfach, zuverlässig, automatisierbar.
Der entscheidende Vorteil bei Updates
Kommt ein Update, ersetzt du nur die Datei im Ordner.
Der Dateiname bleibt gleich – das Skript bleibt unverändert.
Ergebnis:
- Kein Skript-Anpassen
- Kein Verteilen neuer Versionen
- Ein zentraler Ort für alle Updates
Gerade bei mehreren Rechnern oder ganzen Netzwerken ist das Gold wert.
Konsistenz und Fehlerreduktion
Da jede Installation exakt gleich abläuft:
- Weniger manuelle Fehler
- Leichtere Fehlersuche
- Sauberer, nachvollziehbarer Ablauf
Ein Skript zu korrigieren ist deutlich einfacher, als Installationsfehler auf einzelnen Rechnern zu suchen.
Fazit
Alle Software in einem Ordner bündeln und per Skript installieren:
- Spart Zeit
- Reduziert Fehler
- Macht Updates trivial
Einmal eingerichtet, will man es nicht mehr anders machen.
Beispielskript (PowerShell)
$UNCPath = "\\Server\Share\Software\"
$FilePrefix = "Dateiname" # gewünschten Dateinamen anpassen
$MSIParams = "/qn" # weitere MSI-Parameter optional
$TargetPath = "C:\temp" # lokaler Zielordner
# Suche nach MSI-Dateien mit dem definierten Präfix
$MSIFiles = Get-ChildItem -Path $UNCPath -Filter "$FilePrefix*.msi"
# Prüfen, ob passende Dateien gefunden wurden
if ($MSIFiles.Count -eq 0) {
Write-Host "Keine passende MSI-Datei gefunden. Skript wird beendet."
exit
} elseif ($MSIFiles.Count -gt 1) {
Write-Host "Mehrere passende MSI-Dateien gefunden. Erste Datei wird verwendet."
}
$MSIFileName = $MSIFiles[0].Name
$FullUNCPath = Join-Path $UNCPath $MSIFileName
$LocalFile = Join-Path $TargetPath $MSIFileName
# Zielordner anlegen, falls nicht vorhanden
if (-not (Test-Path $TargetPath)) {
New-Item -Path $TargetPath -ItemType Directory -Force | Out-Null
}
# MSI-Datei lokal kopieren
Copy-Item -Path $FullUNCPath -Destination $LocalFile -Force
# Installation starten
Start-Process -FilePath "msiexec.exe" `
-ArgumentList "/i `"$LocalFile`" $MSIParams" `
-Wait -NoNewWindow
# Optional: MSI nach der Installation löschen
# Remove-Item -Path $LocalFile -Force