gstreamer/Windows+deployment.markdown
Thibault Saunier 0ea07b873a Remove references to Confluence and last edit informations
They make no sense anymore
2016-05-27 12:00:22 -04:00

9.1 KiB
Raw Blame History

Windows deployment

This page explains how to deploy GStreamer along your application. There are different mechanisms, which have been reviewed in Deploying your application. The details for some of the mechanisms are given here, and more options might be added to this documentation in the future.

Shared GStreamer

This is the easiest way to deploy GStreamer, although most of the time it installs unnecessary files which grow the size of the installer and the target drive free space requirements. Since the SDK might be shared among all applications that use it, though, the extra space requirements are somewhat blurred.

Simply pack the GStreamer SDK runtime installer (the same one you installed in your development machine) inside your installer (or download it from your installer) and execute it silently using msiexecmsiexec is the tool that wraps most of the Windows Installer functionality and offers a number of options to suit your needs. You can review these options by executing msiexec without parameters. For example:

msiexec /i gstreamer-sdk-2012.9-x86.msi

This will bring up the installation dialog as if the user had double-clicked on the msi file. Usually, you will want to let the user choose where they want to install the SDK. An environment variable will let your application locate it later on.

Private deployment of GStreamer

You can use the same method as the shared SDK, but instruct its installer to deploy to your applications folder (or a subfolder). Again, use the msiexec parameters that suit you best. For example:

msiexec /passive INSTALLDIR=C:\Desired\Folder /i gstreamer-sdk-2012.9-x86.msi

This will install the SDK to C:\Desired\Folder  showing a progress dialog, but not requiring user intervention.

Deploy only necessary files, by manually picking them

On the other side of the spectrum, if you want to reduce the space requirements (and installer size) to the maximum, you can manually choose which GStreamer libraries to deploy. Unfortunately, you are on your own on this road, besides using the Dependency Walker tool to discover inter-DLL dependencies.

Bear in mind that GStreamer is modular in nature. Plug-ins are loaded depending on the media that is being played, so, if you do not know in advance what files you are going to play, you do not know which DLLs you need to deploy.

Deploy only necessary packages, using provided Merge Modules

If you are building your installer using one of the Professional editions of Visual Studio or WiX you can take advantage of pre-packaged Merge Modules. The GStreamer SDK is divided in packages, which roughly take care of different tasks. There is the core package, the playback package, the networking package, etc. Each package contains the necessary libraries and files to accomplish its task.

The Merge Modules are pieces that can be put together to build a larger Windows Installer. In this case, you just need to create a deployment project for your application with Visual Studio and then add the Merge Modules for the GStreamer packages your application needs.

This will produce a smaller installer than deploying the complete GStreamer SDK, without the added burden of having to manually pick each library. You just need to know which packages your application requires.

Available packages (Click to expand)

Package name Dependencies Licenses Description
base-system   JPEG, FreeType, BSD-like, LGPL,
LGPL-2+, LGPL-2.1, LibPNG and MIT
Base system dependencies
gobject-python base-system LGPL GLib/GObject python bindings
gstreamer-capture base-system, gstreamer-core LGPL and LGPL-2+ GStreamer plugins for capture
gstreamer-clutter base-system, gtk+-2.0, gstreamer-core LGPL GStreamer Clutter support
gstreamer-codecs base-system, gstreamer-core BSD, Jasper-2.0, BSD-like, LGPL,
LGPL-2, LGPL-2+, LGPL-2.1 and LGPL-2.1+
GStreamer codecs
gstreamer-codecs-gpl base-system, gstreamer-core BSD-like, LGPL, LGPL-2+ and LGPL-2.1+ GStreamer codecs under the GPL license and/or with patents issues
gstreamer-core base-system LGPL and LGPL-2+ GStreamer core
gstreamer-dvd base-system, gstreamer-core GPL-2+, LGPL and LGPL-2+ GStreamer DVD support
gstreamer-effects base-system, gstreamer-core LGPL and LGPL-2+ GStreamer effects and instrumentation plugins
gstreamer-networking base-system, gstreamer-core GPL-3, LGPL, LGPL-2+, LGPL-2.1+
and LGPL-3+
GStreamer plugins for network protocols
gstreamer-playback base-system, gstreamer-core LGPL and LGPL-2+ GStreamer plugins for playback
gstreamer-python base-system, gobject-python,
gstreamer-core
LGPL and LGPL-2.1+ GStreamer python bindings
gstreamer-system base-system, gstreamer-core LGPL, LGPL-2+ and LGPL-2.1+ GStreamer system plugins
gstreamer-tutorials   LGPL Tutorials for GStreamer
gstreamer-visualizers base-system, gstreamer-core LGPL and LGPL-2+ GStreamer visualization plugins
gtk+-2.0 base-system LGPL Gtk toolkit
gtk+-2.0-python base-system, gtk+-2.0 LGPL and LGPL-2.1+ Gtk python bindings
snappy

base-system, gstreamer-clutter,
gtk+-2.0, gstreamer-playback,
gstreamer-core, gstreamer-codecs

LGPL Snappy media player

If you include a merge module in your deployment project, remember to include also its dependencies. Otherwise, the project will build correctly and install flawlessly, but, when executing your application, it will miss files.

Get the ZIP file with all Merge Modules for your architecture:

32 bits

GStreamer SDK 2013.6 (Congo) for Windows 32 bits (Merge Modules) - mirror - md5 - sha1

64 bits
GStreamer SDK 2013.6 (Congo) for Windows 64 bits (Merge Modules) - mirror - md5 - sha1

Due to the size of these files, usage of a Download Manager is highly recommended. Take a look at this list if you do not have one installed. If, after downloading, the installer reports itself as corrupt, chances are that the connection ended before the file was complete. A Download Manager will typically re-start the process and fetch the missing parts.