Aus dem Alltag eines IT'lers

VLC: Anpassung, Deployment, silent Installation

Software Wer den VideoLanClient als Paket verteilen will (z.B. per SCCM), kennt vermutlich das Problem mit dem dem nervigen Privacy- und Update-Dialog beim ersten Programmstart. Wer zudem kein Programm-Icon nach erfolgter Installation wünscht und möchte, dass alles im Hintergrund installiert wird, für den gibt es auch eine Lösung.

Die beste Art, die Installationsdatei anzupassen, ist die gepackte Version des VLCs von Videolan.org herunterzuladen und dabei die 7z-Variante (7-Zip-Paket) auszuwählen, da diese eine Datei beinhaltet, die sich zur Anpassung anbietet.
Zusätzlich sollten "NSIS" (Download unter Download von NSIS), das kostenlose Nullsoft scriptable Install System, sowie das Notepad++ (Download unter Download Notepad++) heruntergeladen und installiert werden.

Die Bearbeitung der Programmdatei sollte mit Notepad++ erfolgen. Für die spätere Neukompilierung der Setup-Datei benötigt man NSIS.
Wer darüber hinaus 7-Zip nicht hat, der wird unter Download 7-Zip fündig.

Informationen die Version 2.0.0 und aufwärts betreffend, siehe Marcus' sein Weblog.

Nach der Installation aller drei Programme, entpackt man das 7z-File des VLC-Players und öffnet darin den Ordner "NSIS", der unter anderem die Datei "vlc.win32.nsi" mit Notepad++

1. Um das Anlegen einer Desktopverknüpfung zu verhindern, sucht man nach der Zeile CreateShortCut "$DESKTOP\VLC media player.lnk" ; "$INSTDIR\vlc.exe" "" und kommentiert diese durch ein vorangestelltes ; (Semikolon) aus.

2. Damit der Dialog "Privacy and Network" sowie die Frage nach den Updates unterdrückt wird, sucht man zuerst nach der Zeile CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" "$INSTDIR\vlc.exe" "" und ändert diese in CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" "$INSTDIR\vlc.exe" "--no-
qt-privacy-ask --no-qt-updates-notif"
.
Anschließend sucht man nach dem Eintrag WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"' und ändert diesen zu WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" "--no-qt-privacy-ask"
--started-from-file "%1"'
.

3. Abschließend speichert man die Änderung und schließt die Datei. Danach klickt man die "vlc.win32.nsi" mit der rechten Maustaste an und wählt den Eintrag "Compile NSIS Script" aus, der nach der Installation von NSIS im Kontextmenü verfügbar ist.
NSIS kompiliert nun eine neue Setup-Datei und legt diese eine Ordnerebene höher als .EXE ab.

4. Für die Silent-Installation reicht es nun, die Option "/S" (großes "S") hinter den Installationspfad zu setzen. Z.B.: C:\vlc1.1.4.exe /S



Ergänzung von "Marcus":

Die Abfrage nach der Deinstallation der zuvor installierten Version bei einer Neuinstallation lässt sich im NSIS-Skript deaktivieren.

MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled IDNO done

ersetzen durch:

MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled /SD IDNO IDNO done



Auch das Mozilla Plugin lässt sich über diesen Weg aktivieren.

Im NSIS-Skript gibt es eine Zeile die mit "!ifdef INSTALL_MOZILLA" beginnt. Direkt darunter gibt es die Zeile die wie folgt lautet:
"Section /o $Name_Section03 SEC03"

Wenn man hier nun das "/o" entfernt, wird beim Installer das Mozilla-Plugin vorausgewählt. Normalerweise muss man das bei einer manuellen Installation zusätzlich anhaken. Durch diese Änderung ist die Vorauswahl schon gemacht und bei einer Silent-Installation wird das Plugin gleich mit installiert.



Eine vorherige Deinstallation ist nicht zwingend notwendig. Vorhandene Dateien werden überschrieben.

Danach wird ohne weiter nachzufragen ein Update installiert und die alte Version gelöscht/überschrieben. Einfach den frisch erstellten NSIS Installer mit "/S /NCRC" starten und man bekommt ein Setup/Update ohne Nachfrage



Vielen Dank an "Marcus" für diesen Input !

15 Comments

Linear

  • Strifes  
    Irgendwie funktionieren deine Befehle nicht. Sitze schon seit Stunden daran und weiß nicht woran es liegt. NSIS sagt mir, dass es die Befehle nicht kennt und bricht deswegen das Kompilieren ab.
    • Mr. Nerd  
      Hi !

      Kannst Du feststellen, an welcher Stelle ungefähr das Problem besteht ?
      Hast Du den Installer mit Noedpadd++ bearbeitet und dabei ggfs. etwas gelöscht oder dergleichen ?
      Vergleiche bitte nochmal die einzelnen Zeilen und nehme die Änderungen ggfs. mit Hand statt mit Copy & Paste vor.

      Mit den von mir angegebenen Angaben konnte ich VLC in der Version 1.1.4 fehlerfrei mithilfe von NSIS kompilieren.
  • Michael  
    Hallo,

    mit Version 1.1.5 scheint das mit der Privacy- und Updateabfrage nicht zu funktionieren. Auf jeden Fall erscheint die Meldung beim ersten Start trotzdem.

    Die Verknüpfung auf dem Desktop hat er allerdings erfolgreich übersprungen.
    • Mr. Nerd  
      Hi Michael,

      zumindest auf den ersten Blick hat sich in der EXE bezogen auf die Angaben nichts geändert.
      Ich schaue mal ob ich morgen dazu komme, mich näher damit zu beschäftigen oder ob's erst Montag wird.
      Schreibe dann an dieser Stelle oder im Blog, wenn ich die Einstellung oder den Parameter gefunden habe bzw. wie das Ergebnis der Testinstallation aussieht.
    • Gompo  
      Wenn man den Shortcut MANUELL selber auf seinem Desktop erstellen will, dürfen KEINE HOCHKOMMATAS gesetzt werden.

      Für das Compilieren mit NSIS müssen die Parameter aber tatsächlich so aussehen:
      "--qt-privacy-ask" "--no-qt-updates-notif"
      Die neu compilierte EXE erzeugt bei der Installation dann den Desktop-Shortcut so wie man es selber auch manuell machen würde (ohne Hochkommatas).
      • Mr. Nerd  
        Guter Hinweis ! Danke !
  • Marcus  
    Hi Mr. Nerd ;-)
    Vielen Dank für die kurze Beschreibung. Sie ist wirklich hilfreich für den Einstieg.

    Wie kann man aber vorgehen um silent ein Update des VLC zu installieren? Denn wird eine VLC Version entdeckt, wird immer schön gefragt ob diese zuvor deninstalliert werden soll. Also nicht gerade schön.

    Ich gebe zu, mit der aktuellen 1.1.7 Version habe ich es noch nicht probiert, aber bei der /S Switch für uninstall.exe funktioniert leider nicht... sonst würde ich einfach immer und ohne Rücksicht auf Verluste vor einer Neuinstallation uninstall.exe /S ausführen.

    VG
    Marcus
    • Mr. Nerd  
      Hi Marcus,

      richtig, die Abfrage "nervt" im Silentmodus, ist im herkömmlichen Installationsfall jedoch gut.
      Nutzt Du auch den SCCM für die Verteilung und Installation ?

      Ich habe es - zumindest über den SCCM - so gelöst, dass vor der Installation des VLCs zunächst eine Deinstallation erfolgt.
      D.h. das Programm "VLC 1.1.7 Installer" ruft vor seinem Start das Programm "VLC Uninstaller" auf.
      Die Deinstallation erfolgt dabei mit:

      "%Programfiles%\VideoLAN\VLC\uninstall.exe" /S /NCRC

      Zurück bleibt dabei der VLC Ordner mit ein oder zwei Dateien, die jedoch bei einer Silent Neuinstallation kein Problem verursachen.

      Die Installation erfolgt mit: Angepasst_vlc-1.1.7-win32.exe /L=1031 /S

      "Angepasst_vlc-1.1.7-win32.exe" ist dabei eine von mir angepasste EXE (wie hier im Blog auch beschrieben). Der Parameter "L=1031" forciert die Installation in Deutsch und "/S" sollte klar sein. :-)

      Willst Du ein Update oder eine Installation per GPO vornehmen, könnte das hiermit funktionieren:

      if exist %ProgramFiles%\VideoLAN\VLC\ver105.txt GOTO END
      if exist %ProgramFiles%\VideoLAN\VLC\vlc.exe %ProgramFiles%\Videolan\VLC\uninstall.exe /S /NCRC
      \\server\share\\VLC\vlc-0.8.6i-win32.exe /S /NCRC
      echo 1 > %ProgramFiles%\VideoLAN\VLC\ver105.txt
      :END

      Diese Infos habe ich von http://snip.rz0.eu/snippet.php?SnId=4
      • Marcus  
        Hallo Mr. Nerd,
        vielen Dank für deine Tipps. Leider habe ich keinen SCCM und mit einem Haufen Skripte über GPO arbeiten.

        Zurück zum Problem: Irgendwie will bei mir "uninstall.exe /S" gar nicht mehr in der Version 1.1.7. /NCRC habe ich nicht probiert, denn das sollte hier ja nicht den Ausschlag geben, oder?

        Ich habe aber nicht aufgegeben und direkt im NSIS-Skript eine Änderung gemacht. Und zwar:

        MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled IDNO done

        ersetzen durch:

        MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled /SD IDNO IDNO done

        Unabhängig von meinem "Problemchen" habe ich auch gleich noch das Mozilla-Plugin im NSIS-Skript eingeschaltet. Falls das jemanden interessieren sollte wie das funktioniert:

        Im NSIS-Skript gibt es eine Zeile die mit "!ifdef INSTALL_MOZILLA" beginnt. Direkt darunter gibt es die Zeile die wie folgt lautet:
        "Section /o $Name_Section03 SEC03"

        Wenn man hier nun das "/o" entfernt, wird beim Installer das Mozilla-Plugin vorausgewählt. Normalerweise muss man das bei einer manuellen Installation zusätzlich anhaken. Durch diese Änderung ist die Vorauswahl schon gemacht und bei einer Silent-Installation wird das Plugin gleich mit installiert.


        Danach wird ohne weiter nachzufragen ein Update installiert und die alte Version gelöscht/überschrieben. Einfach den frisch erstellten NSIS Installer mit "/S /NCRC" starten und man bekommt ein Setup/Update ohne Nachfrage

        Viele Grüße
        Marcus
        • Mr. Nerd  
          Hi Marcus,

          danke für den Input !!
          Werde Deine Tips ergänzend zum Blogeintrag hinzufügen !
          Ist ein guter Hinweis mit dem Mozilla Plugin.

          Was aber bewirkt Deine andere Einstellung ? Dass keine Prüfung mehr erfolgt und VLC in das bestehende Verzeichnis installiert und die vorheriger Installation überschreibt ?
          Wäre natürlich auch eine Lösung. Ich finde - zumindest die manuelle - Deinstallation vor der Neuinstallation gar nicht schlecht, da sich beim VLC das lästige Fontcache-Problem beheben lässt. Oftmals erneuert der VLC beim Starten jedesmal den Fontcache, obwohl dies nur beim ersten Mal erfolgen soll. Bei der Deinstallation kann man die Voreinstellungen usw. zum Löschen markieren. Danach funktioniert diese Cachegeschichte auch richtig.

          Was das silent Uninstall angeht: das funktioniert bei mir bis 1.1.5 . Mit 1.1.6 und 1.1.7 hatte ich es noch nicht getestet, da ich auf meinem SCCM-Testrechner die 1.1.5 gleich mit der 1.1.7 ersetzt und die 1.1.5 zugleich deinstalliert hatte. Aber ich denke mir, dass sich beim Uninstaller und seinen Optionen nichts geändert haben dürfte.
          Um ehrlich zu sein, ist mir die Funktion der letzten vier Schalter selbst nicht ganz klar. Gefunden habe ich zu diesen bisher noch nichts. Vielleicht sind aber genau diese ausschlaggebend dafür, dass die silent Uninstall funktioniert.

          Könntest Du's nochmal ausprobieren ?
          • Marcus  
            Hallo Mr. Nerd,
            die Option /NCRC bewirkt bei mir nicht das "uninstall.exe /S" funktioniert. Ehrlich gesagt hätte mich das auch sehr gewundert, denn /NCRC steht schlicht und einfach nur dafür das die CRC Prüfung ausgelassen werden soll. (siehe Doku zu NSIS http://nsis.sourceforge.net/Docs/Chapter3.html#3.2.1)

            Ich habe ein wenig weiter in der Doku gewühlt und würde die Zeile "MessageBox MB_YESNO|MB_ICONEXCLAMATION $Message_AlreadyInstalled /SD IDNO IDNO done" so interpretieren, das die Schaltfläche "NO/Nein" für die Installation verwendet wird.

            Demnach würde nach meinem Verständis der alte VLC nicht deinstalliert werden, sondern der neue dann nur drübergebügelt.

            Evtl verstehe ich die Doku aber auch nur falsch ;( (http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.4.15)

            Viele Grüße,
            Marcus
            • Mr. Nerd  
              "Demnach würde nach meinem Verständis der alte VLC nicht deinstalliert werden, sondern der neue dann nur drübergebügelt."

              Ja, so verstehe ich das auch.

              Wenn ich die Tage mal dazu komme, werde ich mir die Anleitung auch mal zu Gemüte führen.

              Danke aber nochmals für Deine Angaben.
              • Marcus  
                Hallo Mr. Nerd,
                habe mir erlaubt selber einen Artikel zum VLC Deployment zu verfassen und deinen Artikel darin natürlich verlinkt:

                http://www.marcus-bungert.de/archives/1110

                Viele Grüße
                Marcus
                • Mr. Nerd  
                  Klasse. Werd' ich mir am Wochenende mal durchsehen. Ist vielleicht noch das Eine oder Andere dabei, das ich gebrauchen kann !
  • Sonja G.  
    hallo,

    bei mir läuft das ganze auch nicht einwandfrei. wenn ich die parameter um das update auszuschalten integriere kommt die meldung trotzdem.

    kann man da noch etwas überprüfen?

    ich habe aktuell die version 1.1.7 und das deaktivieren des Updatecheck geht weder mit windows 7 noch mit windows xp.
    bei xp kann ich das wenigstens abfangen über diese vlcrc datei, (bei win 7 hab ich das verzeichnis noch nicht angepasst) aber schöner wäre es schon wenn man alles in einem abfangen kann.

    danke schon mal für die hilfe
    (übrigends find ich den blog hier gut. bin erst heute darauf gestoßen, ich kannte das mit dem installer noch gar nicht)

    grüße
    sonja
    • Mr. Nerd  
      Hi Sonja,

      kann erstmal nur "Hm..." sagen, weil ich mir das gerne nochmal ansehe. Das Problem bei der Sache ist: bei mir funktioniert's. :\
      Da ich voraussichtlich am Mittwoch wieder paketiere, kann ich Dir erst dann bescheid sagen.
      Ansonsten schau Dir mal Marcus' Kommentar an. Er wollte auf seiner Seite ebenfalls einen Beitrag zum Thema VLC und Silent einstellen.

      Viele Grüße bis dahin.
    • Mr. Nerd  
      Ok, also bei mir funktioniert's definitiv.

      Hier vielleicht nochmal die von mir gemachten Änderungen:

      Start der Anwendung (bzw. Verteilung über SCCM) per: C:\Programme\VideoLAN\VLC\vlc.exe "--no-qt-privacy-ask" "--no-qt-updates-notif" ("" mit schreiben !)

      Desktopverknüpfung weglassen (Befehlszeile durch ; ausblenden)

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

      Privacy and Network Policies-Dialog auslassen - folgende Zeile durch die danach folgende ersetzen:

      CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" "$INSTDIR\vlc.exe" ""

      durch

      CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" "$INSTDIR\vlc.exe" "--no-
      qt-privacy-ask"

      Außerdem folgende Zeile finden und ersetzen:

      WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" --started-from-file "%1"'

      durch

      WriteRegStr HKCR "VLC$R0\shell\Open\command" "" '"$INSTDIR\vlc.exe" "--no-qt-privacy-ask"
      --started-from-file "%1"'


      Autoupdate-Feature deaktivieren:

      CreateShortCut "$SMPROGRAMS\VideoLAN\VLC media player.lnk" "$INSTDIR\vlc.exe" "--no-
      qt-privacy-ask --no-qt-updates-notif"


      Das sollte es gewesen sein.
      Probiert's beide bitte nochmal.

      Viele Grüße !
  • Micha  
    Danke für die super Anleitung. Hat bei mir mit der 1.1.11 Version ohne Probleme funktioniert. Habe gerade die 2.0.1 Version getestet und dort kommt ein Fehler.

    include: could not find: "languages\declaration.nsh"
    Error in script "I:\VLC Player\2.0.1\Install\vlc-2.0.1\vlc.win32.nsi" on line 6 -- aborting creation process


    Scheint wohl ein Fehler von VLC zu sein. Wenn ich die originale Datei kompeliere, kommt der Fehler auch.

    Hat jemand eine Idee?
    • Mr. Nerd  
      Hi ! Schau mal ob Dir das hier weiterhilft:
      http://www.marcus-bungert.de/archives/1338

      Habe meinen Eintrag mal entsprechend ergänzt.
    • kurvenrauber  
      In der 2.0.1 ZIP-Datei fehlen die Verzeichnisse languages und NSIS, die im der 2.0.0 ZIP-Datei noch vorhanden waren. Habe die fehlenden Verzeichnisse der 2.0.0 ZIP genommen und konnte 2.0.1 kompilieren. Da haben die Leute von VLC wohl beim Erstellen der 2.0.1 ZIP was vergessen. Hoffe es hilft Dir.
      • Mr. Nerd  
        Leider stark verspätet (meine Antwort), aber dennoch: danke für die Info !

Add Comment

E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
BBCode format allowed
Was ergibt 17+4 ?

Submitted comments will be subject to moderation before being displayed.