summaryrefslogtreecommitdiff
path: root/ApplicationPackageSpec.mdwn
blob: d3af00e1a863bad6dad30cf813ac55d828c6a33f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194


# Application Package Specification (Idea)



---

 
## Introduction

This specification is designed to provide a desktop neutral way to package one application. 

Dependencies can be installed on first start of the application. The necessary runtime environment should be installed (may use of packagekit) and the runtime environment should install the necessary modules. 


## Package Structure

A application-package is an archive containing the application and a file describing all the contents. The archive should be a gzip-compressed tarball with an .app extension. 


[[!format txt """
    /
    /info
    /app/
"""]]

### Package Description

The info file should be formatted as followed: 


#### Package Name


[[!format txt """
    [Application]
    Name=Example application
"""]]
The Name of the application, it is required for identification-purposes. 
#### ApplicationPackage-file version


[[!format txt """
    Version=1.0
"""]]
The Desktop-file syntax version, this field must be present. 


#### Mime-type


[[!format txt """
    Type=X-ApplicationPackage
"""]]
The mime-type, this field must be present and have the value _X-Application``Package_. 


#### Executable file


[[!format txt """
    Exec=example.bin
"""]]
This field represents the main executable file of the application. It must be present. 


#### Mime-type of executable file


[[!format txt """
    ExecType=application/x-executable
"""]]
This field represents the mime-type of the main executable file of the application. It must be present. 


#### Maintainer


[[!format txt """
    Maintainer=John Doe <john DOT doe AT freedesktop DOT org>
"""]]
The Theme``Package maintainer, this field should be present and formatted as followed 

_Name < email >_ 

If for some reason this field is not available, implementations may choose to warn a user about this fact. 


#### Application version


[[!format txt """
    Application-Version=1.0
"""]]
The Application``Package version-number (increases with every update), this field should be present and formatted as followed 

_a[.b[.c[.d[.e]]]]_ Where a, b, c, d and e are numbers between 0 and 4294967296 (32 bits unsigned integers). 


##### Author(s) / Artist(s) name(s)


[[!format txt """
    Authors=Jane Doe <jane AT freedesktop DOT org>; John Doe <john AT freedesktop DOT org>
"""]]
The author(s) of the application, this field may be present. 

_Name < email >[; Name < email >[; etc...]]_ 


##### Package Description


[[!format txt """
    Description=This example application is a great multiplayer game for the whole family. You can use your keyboard and your mouse. For more information see our website: www.greatgame.example.
"""]]
This field provides a description about the application. 


##### Application License Information


[[!format txt """
    License=GPL;Creative-Commons
"""]]
The License under which the application is distributed. 


##### Icon


[[!format txt """
    Icon=http://example.com/example_app_icon.svg
"""]]
Icon to display in the software center, menus, etc. The name of the file should be either an web address or a name according to the [[Icon Theme Specification|Specifications/icon-theme-spec]]. 


##### Web address for download


[[!format txt """
    DownloadURL=http://example.com/example.app
"""]]
The web address which allows to download the application again. 


##### Update information


[[!format txt """
    UpdateInfo=http://example.com/example.info
"""]]
An info file according to this spec. This file must content an DownloadURL field. It should provide a never version if available. This specification allows to put information about several versions in one info file. 


### info Example


[[!format txt """
    [Application]
    Name=Example application
    Version=1.0
    Type=X-ApplicationPackage
    Exec=example.bin
    ExecType=application/x-executable
    Maintainer=John Doe <john AT freedesktop DOT org>
    Application-Version=1.0
    Authors=Jane Doe <jane AT freedesktop DOT org>; John Doe <john AT freedesktop DOT org>
    Description=This example application is a great multiplayer game for the whole family. You can use your keyboard and your mouse. For more information see our website: www.greatgame.example.
    License=GPL;Creative-Commons
    Icon=http://example.com/example_app_icon.svg
    DownloadURL=http://example.com/example.app
    UpdateInfo=http://example.com/example.info
"""]]

### app directory

This directory contains the application files. This directory will be used to look for the exec file which is stated in the info file. 


### Installation

The user should be able to copy the application to applications:// to register the application. At all you don't need to install the application, just execute the app-file to use the application. The system will may share the application for multiple users. 


### Security considerations

Software according to this specification should run in a sandbox. The application is not allowed to read any personal information from the home directory. Therefore each [[ApplicationPackage|ApplicationPackage]] gets his own home directory with write access. A special file selector widget should allow applications to read and write to specific files chosen by the user. 


### Internationalization

The package server should be able to provide descriptions of packages in the user's language.