VLC media player als MSI Paket über Windows Softwareverteilung

Mi, 02.12.2009 - 19:26 -- admin

In Unternehmen werden immer mehr Videos per E-Mail verschickt, mit dem Handy aufgenommen oder zu Schulungszwecken bereitgestellt. Leider herrscht ein totales durcheinander an Videoformaten. Mitarbeiter wollen natürlich alle ihre Videos ohne weiteres per Doppelklick am eigenen Arbeitsplatz öffnen können. Es wird kein halt vor irgendwelche proprietären Videoformaten gemacht.

Der Windows Media Player (zumindest in Windows XP) kann ohne einen Codec quasi überhaupt nichts abspielen. Ab Windows 7 kann der Media Player schon einiges mehr, allerdings bei der Vielzahl an Formaten, macht er auch schlapp. Irgendwelche Codec Packs in einem größerem Netzwerk fällt wohl auch flach. Zum Glück gibt es ja kostenlosen Open Source Player, die so gut wie alles abspielen können. Am meist verbreitetsten ist wohl nicht umsonst der VLC media player (VideoLAN), mir ist bisher noch nichts untergekommen was nicht abgespielt werden wollte, selbst defekte Videodatei werden fast problemlos abgespielt.

Es spricht also eigentlich nichts dagegen diesen Player im Unternehmensnetzwerk bereitzustellen, bis auf den kleinen Punkt, dass es keine direkt MSI Datei gibt. Ich erkläre in den unten aufgeführten Schritten, wie ich dies mithilfe von WISE Installation Studio bewerkstelligt habe und ein paar alternativen Möglichkeiten.

Projekterstellung

Früher habe ich die Snapshot Funktion genutzt. Es werden hier ein Vorher-Nachher Vergleich gemacht. Dies mag sicherlich die schnellste Möglichkeit sein, allerdings weiß man nie so genau was dann wirklich im fertigen Paket landet und die Funktion ist nicht unbedingt so wie man es sich vorstellt.

Also sollte man ein Paket von Null aufbauen, zumal es beim VLC keine großen systeminterne Funktionen verändert werden. Man installiert am besten den VLC aus der Setupdatei mit alle den Einstellungen die man benötigt. Somit werden nachher unter anderem beim Hinzufügen der Dateien ins Paket automatisch Referenzen zwischen DLLs und Windows-Registrierung erkennt

Dateien hinzufügen

Wir starten also unseren Wise Install Editor mit unserem erstellen Projekt, da wird bereits VLC installiert haben, wechseln wir in den Programm-Ordner und fügen alle Dateien von C:\Programme\VideoLAN im Menüpunkt Files zu \Program Files hinzu. Es werden nun alle Datei und eventuelle Systemreferenzen automatisch ins Paket eingefügt.
Zusätzlich zu den Programmdatei muss noch die Datei vlcrc hinzugefügt werden. Die Datei wird nach dem ersten Starten von VLC angelegt (siehe Privatsphären- und Netzwerkeinstellungen Dialog). Die Datei liegt unter C:\Dokumente und Einstellungen\user\Anwendungsdaten\vlc und muss in Wise unter Windows\Profiles\Application Data\vlc angelegt werden, da die Datei in den Userordner installiert werden muss.

Zur besseren Verwaltung sollten, dann nach Fertigstellung des Paketes alle Datei in den Projektordner kopiert werden.

Dateiverknüpfungen

Die Dateiverknüpfungen müssen manuelle für jede Dateiendung unter File Associations erstellt werden. Zwar könnte man auch einfach die Registry Schlüssel aus CLASSES_ROOT nehmen, dieses sollte man aber besser lassen. VLC hat bei der Installation die Dateiverknüpfungen bereits erstellt und benannt, sofern man diese nicht explizit abgewählt hat.
Wir fügen also alle Dateiendungen einzeln hinzu. Eine Liste bekommt man übrigens wenn man sich die die VLC Version als ZIP runterlädt. Dort liegt eine NSS (Nullsoft Installer), die man sich einfach mit dem Editor öffnen kann. Alternativ kann man natürlich auch bei der Installation den Zweig erweitern, dort stehen auch alle Endungen drin.
Schließlich sollte man die Symbole der Verknüpfungen noch ändern, damit auch das gewohnt Symbole bei den Dateien erscheint.

vlcrc für jeden User

Damit die vlcrc Datei auch in den Profilordnern der User landet muss ein sogenanntes Advertising auf diese Datei. Wir müssen dazu in den Setup Editor wechseln und die Komponente vlcrc auswählen. Dort erstellen wir einen neuen Registry Eintrag und importieren einfach unseren Fantasieeintrag

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\VideoLAN]
"Package"="by blabla"

VLC ActiveX Webplayer

VLC bietet ein ActiveX Webplayer an. Dieser wird zwar automatisch registriert und ist auch benutzbar allerdings weiß er nicht wo er nach Modulen suchen muss. Dazu muss unter HKEY_LOCAL_MASCHINE\Software\VideoLAN\VLC noch der Installationspfad hinterlegt werden. Ein einfaches importieren des vorhanden Schlüssels sollte reichen.

MSI Advertising

In MSI-Paketen gibt es sogenannte Advertising Points wird z.B. ein Dateiendung angeklickt oder ein Programm gestartet, werden die benötigten Konfigurationsdateien (meisten Userdaten; wie z.B. die vlcrc Datei) überprüft und ggf. angelegt. Hat man alles wie oben gemacht, so sind alle Dateiendungen mit VLC verknüpft. Sobald ein Doppelklick auf eine verknüpfte Datei gemacht wird oder das Programm über das Desktopsymbol gestartet wird, erfolgt der Konfigurationvorgang. Probleme gibt es allerdings, wenn Dateiendungen bereits mit Anwendungen registriert sind, wie z.B. wmv oder mp3, die mit dem Media Player registriert sind. Diese werden erst überschrieben, wenn man ein Advertising durchführt. Nun könnte man dem Anwender sagen, einfach einmal den VLC manuell starten, aber man weiß ja, dass das nicht gleich von alle umgesetzt wird

Man müsste also einmalig diese Aktion für jeden User einmal ausführen. Hierzu gibt ist der Key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\[ProductCode] zuständig. Dieser Schlüssel liegt ebenso unter HKEY_CURRENT_USER und werden miteinander verglichen. Ist der Key unter HKCU nicht vorhanden wird die definierte Aktion ausgeführt und der Schlüssel aus der HKLM kopiert. Die hinterlegte Aktion wird also nur einmal ausgeführt.
Ist dort Wert StubPath vorhanden so wird die dort eingetragene Funktion ausgeführt. Ich lass hier einfach eine komplette Reparaturinstallation des Paketes durchlaufen, sicher ist sicher. Dazu einfach den entsprechenden Registry-Code von unten ins Paket einfügen einfügen:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\[ProduktCode]]
"StubPath"="msiexec /fum [ProduktCode] /q"
@="VideoLAN 1.0.3"

Privatsphären- und Netzwerkeinstellungen Dialog ausblenden

Ab VideoLAN 0.9 muss das Verhalten für Updatemeldungen und weitere Onlineaktivitäten beim ersten Starten eingestellt werden. Will man dieses Verhalten ausstellen, so muss eine vlcrc Datei im Profilordner (Anwendungsdaten\vlc) des User liegen und die unten aufgeführten Werte enthalten.

qt-updates-notif=0
qt-privacy-ask=0

DVD / CD Wiedergabe - Autostart

Die Autoplay bzw deren Auswhlmöglichkeiten für DVD und CDs habe ich nicht mit ins Paket genommen. Hierzu müssten die Bild vorhanden Registryeinträge übertragen werden.

Sonstiges

  • Install for Profile: per-machine installation
  • Uninstall Icon einfügen, eventuell Hide modify button aktivieren

kurz und knapp

Auf Appdeploy.com habe ich einen guten Tipp zur VLC Verteilung gefunden:

-== VLC media player 0.9.9 ==-

Although the .exe installer does take a /S switch, there is not a nice way to control the shortcuts (e.g. remove desktop shortcut) without a 'delete' command somewhere, and there is not a nice way to stop the 'Privacy and Network Policies' window opening on first use. The window asks for update notification settings and auto-download of album art.

The preferences including the auto-update check settings are stored in:
%UAPPDATA%\vlc\vlcrc
This is a text file that can be edited with Notepad. The two settings that are required in this file are:
qt-updates-notif=0
qt-privacy-ask=0

This will prevent the notification of updates and not prompt for the settings at first run. If you set these, put the vlcrc file aside for later.

I then downloaded the windows zip file vlc-0.9.9-win32.zip from http://www.videolan.org/vlc/download-windows.html.

I created a new msi (using Wise Windows Installer Editor) and added all the files and folders from the zip to install to [INSTALLDIR] = %ProgramFiles\VideoLAN\VLC which is the same as the folder that is used when using their installer.

Then add the vlcrc that was amended earlier, to install to Windows\Profiles\Application Data\vlc
Then add an HKCU value as the primary key to the vlcrc component to ensure that the app auto-repairs for each user (e.g. HKCU\Software\VLC media player\Packaged = "by fred bloggs"). Note that you may get an ICE91 warning on the vlcrc component, but adding the HKCU value within the component as the primary key ensured that the self-repair ran properly and installed the file for me for all users logging on and running VLC, thus pr

Windows 7

Ich habe das oben erstellt Paket, testweise auf einer virtuellen Windows 7 Installation verteilen lassen, sämtliche Einstellungen scheinen wunderbar zu funktionieren.

Alternativen

Als Alternative lässt die Installation auch direkt über die normale Setupdatei (EXE) per MSI bewerkstelligen. Mit dem Programm Windows Installer Wrapper Wizard kann eine MSI Datei erstellen, welche eine Datei / Anwendung mit Parameter ausführt. Es können für die Installation als auch für die Deinstallation unterschiedliche Angaben gemacht werden. Da der Nullsoft Installer von VLC Silentparamter unterstützt, sollte das auch wohl gehen. Hab es bisher nicht getestet - nur mal angedacht. Eventuelle Script oder Batchdateien finden sich unter wpkg.org