VLC – VideoLAN media player 2.0.0 – Silent Unattended Deployment mit Anpassungen

Categories: Deployment, IT Krimskrams, VLC
Tags: No Tags
Comments: 16 Comments
Published on: 22. February 2012

Vor längerer Zeit hatte ich hier kurz gezeigt wie man den VLC auf alle Rechner in einem Netzwerk bekommen kann ohne das die Benutzer gestört werden.

In der Zwischenzeit gibt es die Version 2.0.0 des VLC und es ist an der Zeit umzustellen und den neuen VLC im Netzwerk zu verteilen.

Die Voraussetzungen sind geblieben:

  1. Benutzer haben keine administrativen Rechte.
  2. Der VLC media player soll “silent” auf die Rechner im Domänen-Netzwerk installiert werden. Die Benutzer sollen nicht in die Installation eingreifen können/müssen/dürfen.
  3. Beim ersten Programmstart des VLC erscheint überlicherweise ein Dialog der den Benutzer auffordert Einstellungen zu Update-Benachrichtigungen und Privacy-Einstellungen zu machen. Da Updates immer durch einen Mitarbeiter der IT-Abteilung installiert werden und die Benutzer sowieso keine administrativen Rechte haben, soll dieser Dialog komplett verschwinden.
  4. Es soll kein Desktop-Symbol in %PUBLIC&\Desktop oder %ALLUSERSPROFILE%\Desktop angelegt werden
  5. Nicht alle Dateitypen sollen mit VLC verknüpft werden da DRM geschützte Mediendateien nicht von VLC behandelt werden können.
  6. Das Mozilla-Plugin für VLC soll aktiviert werden.
  7. Als Sprache soll immer deutsch verwendet werden.
  8. Updates sollen ohne Benutzernachfrage wie vom Administrator definiert installiert werden.
  9. Boardmittel von Windows 7 und Windows XP sowie Windows Server 2008 R2 müssen für die Verteilung der Software ausreichen.

Man benötigt:

  1. Das Nullsoft Scriptable Installer System (NSIS)
  2. 7-Zip oder ein anderes Packprogramm welches mit .7z Archiven umgehen kann.
  3. Einen Texteditor. Ich bevorzuge Notepad++, aber jeder andere Editor wie z.B. das Notepad reicht vollkommen aus.
  4. VLC media player für Windows als .7z Archiv.

Ich gehe davon aus das NSIS, 7-Zip und ein Editor installiert sind. Alle nachfolgenden Arbeiten nehme ich unter C:\TEMP vor.

Schritt 1: Vorarbeit

Das .7z Archiv des VLC entpackt man nach C:\TEMP\vlc-2.0.0.-win32. In dem Verzeichnis befindet sich die Datei vlc.win32.nsi die man mit seinem Lieblingseditor öffnet (in meinem Fall notepad++).

Schritt 2: kein Desktop-Symbol

Zunächst soll dem Setup unterbunden werden ein Desktop-Symbol in %ALLUSERSPROFILE%\Desktop oder %PUBLIC%\Desktop anzulegen. In Zeile 603 der VLC 2.0.0 .nsi Datei, kommentiert man mit einem Semikolon einfach die folgende Zeile aus:

;CreateShortCut “$DESKTOP\VLC media player.lnk” \
“$INSTDIR\vlc.exe” “”

Schritt 3: Benachrichtigungen zu Privacy-Einstellungen und Updates unterbinden & Sprache immer deutsch

In den Zeilen 589 bis 592 der VLC 2.0.0 .nsi Datei, ergänzt man die Einträge:

CreateShortCut “$SMPROGRAMS\VideoLAN\VLC media player.lnk” \
“$INSTDIR\vlc.exe” “–no-qt-privacy-ask –no-qt-updates-notif –language=de”
CreateShortCut “$SMPROGRAMS\VideoLAN\VLC media player skinned.lnk” \
“$INSTDIR\vlc.exe” “-Iskins – -no-qt-privacy-ask – -no-qt-updates-notif –language=de”

Vor no-qt-updates no-qt-privacy und language sind ZWEI Bindestriche!

In der Sektion Language ab Zeile 104 Files setzt man die Sprache German an erste Stelle. Die Sprache an der ersten Stelle wird immer die Standardsprache sein.

!insertmacro MUI_LANGUAGE “German”
!insertmacro MUI_LANGUAGE “English” # first language is the default language
!insertmacro MUI_LANGUAGE “French”
!insertmacro MUI_LANGUAGE “Spanish”
!insertmacro MUI_LANGUAGE “SimpChinese”
!insertmacro MUI_LANGUAGE “TradChinese”


Schritt 4: Verknüpfungen mit bestimmten Dateitypen verhindern

Ich möchte nicht das .wma, .wmv, .asf, .asx mit VLC media player verknüpft werden. Dazu werden die Zeilen 298, 310, 254 und 258 auskommentiert:

;!insertmacro ${_action} “.wma”
;!insertmacro ${_action} “.asf”
;!insertmacro ${_action} “.wmv”
;!insertmacro ${_action} “.asx”

Schritt 5: Mozilla-Plugin aktivieren

In den vergangenen Versionen des VLC musste man noch manuell das Mozilla-Plugin einschalten. Erfreulicherweise ist das ab Version 2.0.0 bereits als Standard-Aktion
im .nsi in Zeile 608 definiert.

Schritt 6: Update ohne Nachfrage installieren 

Der NSIS Installer bietet mit der Option /S die möglichkeit Silent-Installationen durchzuführen. Ist aber der VLC media player bereits auf dem Rechner installiert
erscheint trotz der Option /S ein Dialog der auffordert die alte Version zuerst zu deinstallieren.

Wenn man auf diese Art und Weise den VLC dann an viele Rechner in einem Netzwerk verteilt und die Installation im Kontext des Systems vor dem Login durchgeführt
wird, dann rennt der Installer in ein Timeout bevor es weitergehen kann.

Deswegen installiere ich “ohne Rücksicht” auf die bereits installierte Version des VLC und ersetze die alte. Damit das funktioniert müssen im .nsi File
Standard-Antworten der Dialoge definiert werden. In Zeile 919 findet man den entsprechenden Dialog der wie folgt geändert wird:

 

MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled /SD IDNO IDNO done

Schritt 7: NSIS Installer kompilieren

Das hört sich schlimmer an als es ist. Wir werfen den Compiler an :) Als erstes wird das NSIS Skript mit unseren Änderungen gespeichert. Dadurch das NSIS installiert wurde, gibt es nun einen Eintrag im Kontextmenü des Windows-Explorers.

Im entpackten VLC Verzeichnis klickt mit der rechten Maustaste auf die soeben geänderte und hoffentlich gespeicherte Datei vlc.win32.nsi und klickt auf Compile NSIS Script. Der Rest erledigt sich automatisch.

Ein Verzeichnis oberhalb des Speicherortes der Datei vlc.win32.nsi wird ein Installationspaket des VLC erstellt welches sich nun ganz einfach über ein Login-Script und den NSIS Parametern /S /NCRC ohne weitere Dialoge oder Nachfragen verteilen lässt.
Fazit
Die vorgestellte Lösung betrifft meine Bedürfnisse und hat keinen Anspruch auf Vollständigkeit. Aber wie man sieht, sind Erweiterungen mit NSIS durchausmöglich und der VLC kann getuned installiert werden.

 

Die Zeilennummern beziehen sich auf die Version 2.0.0 des VLC. In anderen Versionen können diese Zeilennummern abweichen.

16 Comments - Leave a comment
  1. Naix says:

    Hallo beisammen,
    ich bin zur Zeit auch dabei eine automasierte Lösung zur Installation vom VLC Player 2.0.1 zu entwickeln.
    Eine komplette Silent Installation habe ich auch schon hinbekommen. Mein Ziel ist es dennoch eine interaktive Installation hinzubekommen.
    Sprich der User bekommt einen Statusbalken und sieht wie weit die Installation fortgeschritten ist. Trotzallem muss dieser aber keine Eingaben etc. machen.
    Ich Habe schon verschiedene Parameter ausprobiert, jedoch ohne Erfolg.
    Kann mir da jemand helfen?
    Gruß Naix

  2. Michael says:

    Interessanter Artikel.
    Für alle, die sich am updatefenster nicht so stören und einfach nur eine stille Installation ohne nerviges first-run-Fenster wollen gibt es noch eine einfachere Methode:

    installieren mit vlc-2.x.x-win32.exe /S (–> Achtung, case sensitive!)
    kopieren von (möglicherweise angepasster) vlcrc und vlc-qt-interface.ini nach %UserProfileDir%\AppData\Roaming\vlc\
    Fertig!

    P.S. am einfachsten kriegt man die passende vlcrc wenn man VLC einmal installiert, alle Optionen anpasst und dann die Datei aus dem o.g. Pfad rauskopiert.

  3. alfred says:

    Mahlzeit!
    Danke für die Anleitung – habe damals schon den 1.1.11er damit angepasst.
    Jetzt habe ich mir grad den 2.0.1er angepasst.
    Folgendermaßen bin ich vorgegangen:
    - 2.0.1 7zip entpackt
    - 2.0.0 7zip entpackt
    - vom 2.0.1 Tarball das nsi-Script und den languages-Ordner geholt
    - vom 2.0.0 7Zip den NSIS-Ordner geholt
    - Anpassungen gemacht (im Grunde die selben wie Du, zusätzlich noch die Plugins für Mozilla und ActiveX auskommentiert)

    Fehlermeldung:
    Invalid command: @HAVE_WIN64_FALSE@
    Error in script “E:\Temp\vlc201\vlc-2.0.1\vlc.win32.nsi” on line 23 — aborting creation process

    @HAVE_WIN64_FALSE@ –> aus Zeile 23 gelöscht, da ich eh die Plugins nicht installiere –> geht

    komischerweise benennt er den Installer als 2.0.0
    im Script selbst steht bei der Version @VERSION@. Habs mal auf 2.0.1 festgesetzt, jetzt meckert der Compiler auf einmal noch mehr @HAVE_WIN64_FALSE@ an.

    Werde mal weiter testen, evtl. mit der NSI vom 2.0.0 und dann nochmal Bescheid geben ;)

    • majobu says:

      Hm… Ich habe diese Fehlermeldung noch nicht gehabt. Kann es sein das du versuchst die experimentelle 64 Bit Version mit dem nsi File der 32 Bit Version zu bearbeiten?

      Das mit der Versionsnummer ist korrekt… die muss man im nsi File anpassen (es sind glaube ich 2 Stellen).

      Meine Tests habe ich übrigens immer mit der 32 Bit Version gemacht. Einmal auf einem 32 Bit Host mit Windows XP und einmal auf einem Windows 7 Host mit 64 Bit.

    • alfred says:

      So, jetzt hats geklappt:

      - nsi von Version 2.0.0 (Version geändert auf 2.0.1)
      - Languages von Tarball 2.0.1 und 7zip 2.0.0 (im Tarball fehlen einige)
      - Kompilieren geht

      Installieren muss ich noch testen…
      Wie ist das mit Schritt 6 in deiner Anleitung? mit /S /NCRC wird auch die Meldung unterdrückt, dass ein alter VLC installiert sei? Oder geht das nicht (mehr)?

      Danke und Gruß

      • alfred says:

        Ne, war nicht die experimentelle 64bit.
        Mein Sys ist ein 7 Prof x64. Aber jetzt hats geklappt. Installation probier ich gleich nachher aus.

        mfg

      • majobu says:

        Doch, die Parameter /S und /NCRC funktionieren noch. Allerdings ist die Änderung an der Dialogbox nicht mehr notwendig (MessageBox MB_YESNO…….. etc) da das bereits in dem letzten nsi-File schon eingebaut ist.

        • alfred says:

          alles klar, danke!

          Also mit den Schritten von meinen Post am 9. May 2012 um 10:58 hats dann hingehauen. Neuinstallation und Update funktionieren

  4. gweep says:

    Hi Marcus,

    Ich hab das jetzt mal extra mit der Version 2.0.0 probiert, allerdings bekomme ich immer den Fehler das mir die MUI.nsh fehlt. Die ist aber weder in der .zip, noch in der .7z Version enthalten. Als Fehler wird Zeile 57 angegeben. Selbiges Problem hatte ich auch bei der 2.0.1 nachdem ich das Language Verzeichnis, sowie das NSIS Verzeichnis, rüberkopiert habe.

    Hast du eine Idee wie ich dieses Problem beheben kann?

    Danke,
    LG,
    Alex

    • majobu says:

      Hallo Alex,
      vielen Dank für dein Interesse :) Ich habe gerade versucht dein Problem nachzustellen. Ich muss mich hier sowieso gerade um Updates im Netzwerk kümmern und da kam mir das gerade recht :)

      Vor der Erklärung: ich kann deinen Fehler weder bei der Version 2.0.0 noch bei 2.0.1 nachvollziehen.

      Beim Probieren habe ich jedoch festgestellt das Schritt 6 scheinbar nicht mehr nötig ist.

      Als Voraussetzung habe ich Version 1.1.9 des VLC installiert um das Update-Feature zu testen.

      Begonnen habe ich dann mit dem VLC 2.0.0 im 7z Paket. Dort ist die Datei vlc.win32.nsi im Paket dabei. In der Datei habe ich meine Änderungen durchgeführt und dann das .nsi File mit “Compile NSIS Script” bearbeitet. Heraus kam ein Installer der alles das machte was er sollte (nach den Änderungen).

      Ich habe mir dann die Version 2.0.1 als 7z Paket besorgt und das .nsi File der Version 2.0.0 kopiert. Achtung: hier ist die Versionsnummer ganz am Anfang zu ändern. Zusätzlich habe ich die Verzeichnisse languages und NSIS der Version 2.0.0 kopiert und dann wieder “Compile NSIS Script” durchgeführt.

      Auch hier kam ein Install bei heraus der genau das macht was er soll.

      An deiner Stelle würde ich mal mit ganz frischen Downloads der 7z Pakete beginnen. So habe ich das jetzt auch auf einer “jungfräulichen” virtuellen Installation von Windows 7 ausprobiert.

      Viele Grüße,
      Marcus

      • gweep says:

        Hallo,

        Hab ich jetzt nochmal probiert, hab nur das Desktop Symbol entfernt, sonst nichts geändert und kam wieder zur gleichen Fehlermeldung:
        !include: could not find: “MUI.nsh”
        Error in script “C:\Users\xxx\Downloads\vlc-2.0.0-win32\vlc-2.0.0\vlc.win32.nsi” on line 57 — aborting creation process

        • majobu says:

          Wie gesagt, bei mir funktioniert es “out of the box” ganz ohne Probleme. Hat du das 7z Archiv noch einmal neu geladen und frisch entpackt? Schicke vlc.win32.nsi zu pastebin.de und post hier mal den Link. Ich probiere das dann mal mit deiner Datei aus.

          Ein Unterschie der mir hier aber noch aufgefallen ist:

          Ich verwendet als Pfad einen viel kürzeren als du zum kompilieren… nämlich c:\temp\vlc-2.0.0-win32 oder d:\temp\vlc-2.0.0-win32

          Ich habe es schon erlebt das manche Anwendungen mit den etwas tieferen Pfaden nicht klar kommen… ist nur der Blick in die Glaskugel; könnte aber eine Möglichkeit sein.

  5. Markus mit "k" says:

    Hallo,

    erstmal: Super ausführliche Anleitung. Vielen Dank dafür.
    Ich habe nur ein “kleines” Problem: In der Version 2.0.1 existiert im 7-Zip-Archiv die Datei vlc.win32.nsi nicht. Ich habe auch nach .nsi-Dateien mit anderem Namen gesucht. Leider bin ich nicht fündig geworden.
    Funktioniert das trotzdem noch irgendwie?

    mfg
    Markus

    • majobu says:

      Das File wurde wohl entfernt…
      Hier http://forum.videolan.org/viewtopic.php?f=14&t=99300&p=333381&hilit=.nsi#p333381 heisst es das es ein Fehler sei.

      Ein Ticket dazu wurde ebenfalls eröffnet aber auch gleich wieder durch eien Maintainer geschlossen: http://trac.videolan.org/vlc/ticket/6491

      Demnach soll das passende .nsi im Source-Tarball stecken. Ich habe mir den Tarball kurz runtergeladen und dort unterhalb von extras\package\win32 das File vlc.win32.nsi.in gefunden.

      Ungeprüft und mal in die Glaskugel geschaut, würde ich das File einfach mal entsprechend umbennen und für die vorgeschlagene Vorgehensweise verwenden. Aber nicht vergessen die Languages mit zu kopieren…. ich glaube die werden gebraucht.

      • Naix says:

        Hallo beisammen,

        ich bin zur Zeit auch dabei eine automasierte Lösung zur Installation vom VLC Player 2.0.1 zu entwickeln.

        Eine komplette Silent Installation habe ich auch schon hinbekommen. Mein Ziel ist es dennoch eine interaktive Installation hinzubekommen.
        Sprich der User bekommt einen Statusbalken und sieht wie weit die Installation fortgeschritten ist. Trotzallem muss dieser aber keine Eingaben etc. machen.

        Ich Habe schon verschiedene Parameter ausprobiert, jedoch ohne Erfolg.
        Kann mir da jemand helfen?
        Gruß Naix

Leave a comment

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Welcome , today is Sunday, 20. May 2012