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.