You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
string=self.get_file(self.get_desktop_filename()).replace("X-GNOME-FullName", "X-AppImage-Original-GNOME-FullName").replace("Name[", "X-AppImage-Original-Name[") # Don't use localized names, since we want the filename as the name
**Step 2: Upload the AppImage and the AppImage.zsync to an URL that matches the URL specified in the update information**
134
134
135
-
You would have to copy both `Etcher-linux-x64.AppImage.zsync` and `Etcher-linux-x64.AppImage.zsync` to `https://resin-production-downloads.s3.amazonaws.com/etcher/latest/` for this to work.
135
+
You would have to copy both `Etcher-linux-x64.AppImage` and `Etcher-linux-x64.AppImage.zsync` to `https://resin-production-downloads.s3.amazonaws.com/etcher/latest/` for this to work.
136
136
137
-
When you have a new version, simply put the updated `Etcher-linux-x64.AppImage.zsync` and `Etcher-linux-x64.AppImage.zsync` at the *same* location.
137
+
When you have a new version, simply put the updated `Etcher-linux-x64.AppImage` and `Etcher-linux-x64.AppImage.zsync` at the *same* location.
138
138
139
139
At this point, AppImageUpdate should work. AppImageUpdate is really just an example GUI around the (work-in-progress but useable) [appimageupdate](https://github.com/probonopd/AppImageKit/blob/master/AppImageUpdate.AppDir/usr/bin/appimageupdate) bash script. You could put `appimageupdate` (and its dependency [zsync_curl](https://github.com/probonopd/zsync-curl)) inside `usr/bin` of the AppImage, and call `appimageupdate` from within your app and even have a little GUI around it; or reimplement it in the language of your app.
This document describes the AppImage format and AppImageKit. It is intended to describe the philosophy behind the AppImage format and the concrete implementation. This document is not a formal specification, since the AppImage format is not frozen yet but in the process of being specified more formally. Contributors are encouraged to comment on this document and propose formal format descriptions.
15
+
This document describes the AppImage format and AppImageKit. It is intended to describe the philosophy behind the AppImage format and the concrete implementation. This document is not a formal specification, since the AppImage format is not frozen yet but in the process of being specified more formally at https://github.com/AppImage/AppImageSpec. Contributors are encouraged to comment.
16
16
17
17
Significant upstream projects have started providing AppImages of releases and/or nightly/continuous builds, see this [list of upstream-provided AppImages](https://github.com/probonopd/AppImageKit/wiki/AppImages#upstream-appimages).
18
18
@@ -37,7 +37,7 @@ With the introduction of Mac OS X, arguably the first UNIX-based operating syste
37
37
38
38
Open Source operating systems, such as the most prominent Linux distributions, mostly use package managers for everything. While this is perceived superior to Windows and the Mac by many Linux enthusiasts, it also creates a number of disadvantages:
39
39
40
-
1.__Centralization__ Some organization decides what is "in" a distribution and what is not. By definition, software "in" a distribution is easier to install and manage that software that is not.
40
+
1.__Centralization__ Some organization decides what is "in" a distribution and what is not. By definition, software "in" a distribution is easier to install and manage than software that is not.
41
41
2.__Duplication of effort__ In traditional systems, each application is compiled specifically for each target operating system. This means that one piece of software has to be compiled many, many times on many, many systems using much, much power and time
42
42
3.__Need to be online__ Most package managers are created with connected computers in the mind, making it really cumbersome to "just fetch an app" on an online system, and copy it over to another system that is not connected to the Internet.
43
43
@@ -65,7 +65,7 @@ The AppImage format has been created with specific objectives in mind.
65
65
66
66
1.__Be Simple__. AppImage is intended to be a very simple format that is easy to understand, create, and manage.
67
67
2.__Maintain binary compatibility__. AppImage is a format for binary software distribution. Software packaged as AppImage is intended to be as binary-compatible as possible with as many systems as possible. The need for (re-)compilation of software should be greatly reduced.
68
-
3.__Be distribution-agostic__. An AppImage should run on all base operating systems (distributions) that it was created for (and later versions). For example, you could target Ubuntu 9.10, openSUSE 11.2, and Fedora 13 (and later versions) at the same time, without having to create and maintain separate packages for each target system.
68
+
3.__Be distribution-agnostic__. An AppImage should run on all base operating systems (distributions) that it was created for (and later versions). For example, you could target Ubuntu 9.10, openSUSE 11.2, and Fedora 13 (and later versions) at the same time, without having to create and maintain separate packages for each target system.
69
69
4.__Remove the need for installation__. AppImages contain the app in a format that allows it to run directly from the archive, without having to be installed first. This is comparable to a Live CD. Before Live CDs, operating systems had to be installed first before they could be used.
70
70
5.__Keep apps compressed all the time__. Since the application remains packaged all the time, it is never uncompressed on the hard disk. The computer uncompresses the application on-the-fly while accessing it. Since decompression is faster than reading from hard disk on most systems, this has a speed advantage in addition to saving space. Also, the time needed for installation is entirely removed.
71
71
6.__Allow to put apps anywhere__. AppImages are "relocatable", thus allowing the user to store and execute them from any location (including CD-ROMs, DVDs, removable disks, USB sticks).
@@ -196,6 +196,32 @@ AppImages can be updated using [AppImageUpdate](https://github.com/probonopd/App
196
196
197
197
For the full story, read [this](https://github.com/probonopd/AppImageKit/blob/master/AppImageUpdate.AppDir/README.md).
198
198
199
+
## Sandboxing
200
+
201
+
[Firejail](https://github.com/netblue30/firejail/) is a low-overhead sandbox that provides native support for the AppImage format. Written in C with virtually no dependencies, Firejail runs on any Linux computer with a 3.x kernel version or newer.
202
+
203
+
To run an AppImage inside a Firejail sandbox, run it like this:
These are the main features of AppImage/Firejail combination ([source](https://firejail.wordpress.com/documentation-2/appimage-support/)):
216
+
* State of the art software packaging and sandboxing technology
217
+
* The only requirement to run the sandboxed application is a Linux kernel version 3 or newer – there are no dependencies, no 200MB runtimes to download and install
218
+
* Network and X11 sandboxing available today!
219
+
* Graphical user interface and auditing capabilities
220
+
* Low runtime overhead – we do not increase the attack surface of the software environment by running daemons in the background
221
+
* It can be used in parallel with other security frameworks such as Grsecurity, AppArmor, SELinux
222
+
223
+
It is also possible to use the [Bubblewrap](https://github.com/probonopd/AppImageKit/blob/master/sandbox/README.md) sandbox to run AppImages.
224
+
199
225
## Support
200
226
201
227
I support open source projects that wish to distribute their software as an AppImage. For closed source applications, I offer AppImage packaging and testing as a service.
Volunteers wanted for the following topics. Feel free to send a PR that adds your name to list item(s).
4
+
5
+
## Downloading appimages from some kind of software catalog websites and app centers
6
+
7
+
* Define formal AppImage spec (probonopd)
8
+
* Work on tool that lets one extract metadata like application name, author, license, etc. from an AppImage hosted somewhere without having to download it (think "Google for AppImages")
9
+
* Get AppImage downloads into KDE Discover
10
+
* Write GNOME Software plugin for AppImage
11
+
12
+
## Running appimage and browsing its content via file roller/ark or any other archive tool
13
+
14
+
* Follow up with upstream projects and/or send PRs
15
+
* file-roller
16
+
* ark (DONE)
17
+
18
+
## Upgrading appimage via right click
19
+
20
+
* Make zsync_curl use subsequent range requests rather than requesting multiple ranges at once; otherwise Akamai is broken
21
+
* Make AppImageUpdate not need the curl binary but expand zsync_curl to include the required curl functionality
22
+
* Possibly replace the AppImageUpdate bash script by C code, e.g., in zsync_curl
23
+
* Qt GUI in addition to the Vala/GTK 3 one
24
+
25
+
## Desktop integration
26
+
27
+
* Resurrect appimaged (probonopd; contact me if you want to take this over)
28
+
* Sandbox using firejail (see the sandbox GUI integration experiments in this repository)
29
+
* Test/use GNOME portals
30
+
31
+
## IDE/build tool integration
32
+
* Someone familiar with Qt (= not me, probono) should have a deep look at http://code.qt.io/cgit/qt/qttools.git/tree/src/macdeployqt/ and see if the same can be done to generate an AppImage
0 commit comments