Generieren einer MSI-Datei

USBDLM

 

Generieren einer MSI-Datei


 

 

Mit einer MSI-Datei kann man USBDLM mittels Gruppenrichtlinie im Netzwerk verteilen - Admin wissen das besser als ich...

 

Die USBDLM.MSI die bis einschließlich V4.5.9 geliefert wurde, ist mit OnDemand WinInstall LE generiert.

Bug: Für alle Versionen habe ich identische Product- und Package-IDs benutzt. Vorteil: Mit jeder Version kann man eine andere deinstallieren. Nachteil: Updates funktionieren nicht, für ein Update muss man deinstallieren und erneut installieren.

 

Ab V4.6 wird das Microsoft WIX toolset genutzt. Hier sind im WiX-Script für Product- und Package-ID ein "*" konfiguriert, so dass WiX immer neue GUIDs generiert. So funktionieren Updates, zum Deinstallieren muss aber die selbe Version wie zur Installation genutzt werden.

 

Zum Updaten sehr alter Versionen bitte zuerst V4.4 installieren, dann erst die aktuelle Version. Das MSI benutzt zum Anhalten des USBDLM-Dienstes dessen Kommandozeilenparameter -silentstop und diesen gibt es erst seit V4.4.

 

Hier gibt's das WIX-script für USBDLM: USBDLM.WXS.ZIP

 

Und hier das Microsoft WIX Toolset. Die WIX3x.MSI herunterladen, mit recht anklicken -> Installieren.

Falls ein Warndialog kommt, mit OK bestätigen (da geht's nur um die Visual Studio Integration).

 

WiX installiert sich in den Standard-Programme-Ordner, typischerweise "C:\Programme\WiX Toolset v3.8".

 

WiX benötigt das .NET Framework 3.5 SP1.

Ab Windows 7 funktioniert der .NET 3.5 Installer nicht mehr, dafür wird es mit Windows mitgeliefert. Aktiviert wird es über die Systemsteuerung -> "Windows Funktionen aktivieren oder deaktivieren" oder per Kommandozeile:

DISM /Online /Enable-Feature /FeatureName:NetFx3 /ALL /NoRestart

 

Dann die angepasste USBDLM.INI in den USBDLM-Ordner kopieren, ebenso die USBDLM.WXS. In der USBDLM.WXS USBDLM_sample.ini in USBDLM.ini ändern.

 

Dann im USBDLM-Ordner eine CMD- oder BAT-Datei anlegen, die das MSI generiert, etwa so:

 

 

@echo off

set WiX_Path=%ProgramFiles%\WiX Toolset v3.8\bin

 

if not exist "%WiX_Path%" echo !!!!!!!!!!! WiX nicht gefunden !!!!!!!!!!!!! & pause & goto ExitPoint

 

rem -- sicherstellen, dass der USBDLM-Ordner der aktuelle ist --

cd /D %~dp0

 

rem -- WiX candle und light ausführen, Pause falls Fehler --

 

"%WiX_Path%\candle.exe" -dProcessorArchitecture=x86 -arch x86 -out USBDLM.wixobj USBDLM.wxs

if errorlevel 1 pause & goto ExitPoint

 

"%WiX_Path%\light.exe" -out USBDLM.msi USBDLM.wixobj 

if errorlevel 1 pause & goto ExitPoint

 

rem -- aufräumen --

del USBDLM.wixobj

del USBDLM.wixpdb

 

:ExitPoint

 

 

Für die x64-Version ist zweimal x86 in x64 zu ändern:

"%WiX_Path%\candle.exe" -dProcessorArchitecture=x64 -arch x64 -out USBDLM.wixobj USBDLM.wxs

 

 

Die Datei USBDLM.wixpdb wird dort angelegt, wo auch das MSI hinkommt. Wenn man also einen alternativen Ausgabepfad angibt (-out), dann diesen auch in der Zeile mit "del USBDLM.wixpdb" angeben.