Update theme submodule
[platform/upstream/gstreamer.git] / markdown / deploying / index.md
1 ---
2 short-description: Deploy GStreamer with your application
3 ...
4
5 # Deploying your application
6
7 Once the development of your application is finished, you will need to
8 deploy it to the target machine, usually in the form of a package or
9 installer. You have several options here, and, even though this subject
10 is not really in the scope of this documentation, we will give some
11 hints to try to help you.
12
13 ## Multiplatform vs. single-platform packaging system
14
15 The first choice you need to make is whether you want to deploy your
16 application to more than one platform. If yes, then you have the choice
17 to use a different packaging system for each platform, or use one that
18 can deliver to all platforms simultaneously. This table summarizes the
19 pros and cons of each option.
20
21 <table>
22 <colgroup>
23 <col width="33%" />
24 <col width="33%" />
25 <col width="33%" />
26 </colgroup>
27 <thead>
28 <tr class="header">
29 <th> </th>
30 <th>Pros</th>
31 <th>Cons</th>
32 </tr>
33 </thead>
34 <tbody>
35 <tr class="odd">
36 <td><p><strong>Multiplatform packaging system</strong></p>
37 <p>The same system is used to package your application for all platforms</p></td>
38 <td><ul>
39 <li><p>You only need to develop your packaging system once, and it works for all supported platforms.</p></li>
40 </ul></td>
41 <td><ul>
42 <li>On some platforms, the packaging system might impose artificial restrictions inherited from the other platforms.</li>
43 </ul></td>
44 </tr>
45 <tr class="even">
46 <td><p><strong>Single-platform packaging system</strong></p>
47 <p>Your application is packaged using a different system on each platform.</p></td>
48 <td><ul>
49 <li><p>You can make use of all the advantages each packaging system can offer.</p>
50 </li>
51 </ul></td>
52 <td><ul>
53 <li><p>You need to develop a new packaging system for each supported platform.</p></li>
54 </ul></td>
55 </tr>
56 </tbody>
57 </table>
58
59 GStreamer itself supports many different platforms (Linux, iOS, Android, Mac
60 OS X, Windows, etc) and has been built using a multiplatform packaging
61 system named **Cerbero**, which is available for you to use, should you
62 choose to go down this route.
63
64 ## Shared vs. private GStreamer deployment
65
66 You can install GStreamer in the target machine in the same way
67 you installed it in your development machine, you can deploy it
68 privately, or you can even customize it before deploying. Here you have
69 a few options:
70
71 <table>
72 <colgroup>
73 <col width="33%" />
74 <col width="33%" />
75 <col width="33%" />
76 </colgroup>
77 <thead>
78 <tr class="header">
79 <th></th>
80 <th>Pros</th>
81 <th>Cons</th>
82 </tr>
83 </thead>
84 <tbody>
85 <tr class="odd">
86 <td><p><strong>Shared GStreamer</strong></p>
87 <p>GStreamer is installed independently of your application, as a prerequisite, in a common place in the target computer (<code>C:\Program Files</code>, for example). You application uses an environment variable to locate it.</p></td>
88 <td><ul>
89 <li>If more than one application in the target computer uses GStreamer, it is installed only once and shared, reducing disk usage.</li>
90 </ul></td>
91 <td><ul>
92 <li>Tampering or corruption of the shared GStreamer installation can make your application fail.</li>
93 </ul></td>
94 </tr>
95 <tr class="even">
96 <td><p><strong>Private GStreamer with dynamic linking</strong></p>
97 <p>Your application deploys GStreamer to a private folder.</p></td>
98 <td><ul>
99 <li>Your GStreamer is independent of other applications, so it does not get corrupted if other applications mess with their installations.</li>
100 </ul></td>
101 <td><ul>
102 <li>If multiple applications in the target computer use GStreamer, it won’t be shared, consuming more disk space.</li>
103 </ul></td>
104 </tr>
105 <tr class="odd">
106 <td><p><strong>Private GStreamer with static linking</strong></p>
107 <p>Your application links statically against GStreamer, so it effectively becomes part of your application binary.</p></td>
108 <td><ul>
109 <li>Your GStreamer is independent of other applications, so it does not get corrupted if other applications mess with their installations.</li>
110 <li>Deployment for ordinary users is easier as you have fewer files.</li>
111 <li>This is your only choice on iOS.</li>
112 </ul></td>
113 <td><ul>
114 <li>If multiple applications in the target computer use GStreamer, it won’t be shared, consuming more disk space.</li>
115 <li>You need to provide the required files for your users to re-link your application against a modified GStreamer as required by the license.</li>
116 </ul></td>
117 </tr>
118 </tbody>
119 </table>
120
121 The following pages give further directions for some of the above
122 options.
123
124   - Platform-specific packaging methods:
125       - For [Mac OS X](deploying/mac-osx.md)
126       - For [Windows](deploying/windows.md)
127   - [Multiplatform deployment using
128     Cerbero](deploying/multiplatform-using-cerbero.md)