Conversation
|
AM AppImage demo build/tests. output.mp4Of course, regression tests are fully passing for the built AppImage file. |
|
Simulated updates: output.mp4 |
OK
It is a bit tricky, people would be able to launch AM or AppMan separately
This is a Terminal program, so this should be able to launch a terminal. In X11 and Wayland.
What could encourage others to create AppImages is the fact that people would find and update them easily, and AM is already giving this. No centralized solution was provided before with this ability for all domains.
AM-utils are for x86_64 and aarch64 only, and are not 100% working as expected. They are still experimental and without a strong update process that would create them quickly. The best solution would be to build the AppImage on a distribution (Arch Linux for example) using a better runtime (like sharun) and for all architectures (including i686, and armv7l of which the first app has been added only yesterday and for which I have no knowledge and no hardware/VM from which I can do tests and for which I'm not sure that all dependencies are available). The classic script approach is the only one that could guarantee the compatibility with one file. This is true portability.
...it would be enough to add a checksum file in the AM repository and made the comparison. A function that could check this and the modules would be enough.
This is not the problem. The problem is to guarantee quick bug fixes if needed. Things that can be done with a modular scripts system like this one.
It is not acceptable, because people would see that the app is only available for few architectures. Also if of niche, all matters. And one script aims to be inclusive.
Workflows may fails, and often github fails if a runner is not available at very start. The in-repository script is always available, and for all architectures.
Installing each single module separately is faster and secure, expecially if we add checksum for them all.
Let see.
I already answered above. About the zsync file, no matters if this format or a .txt file, it is enough to have SHA code that could be compared. And I think that this is the way to go. |
I used
Yes. I was thinking of end-users (tech-savie ones) who tend to validate the checksums manually every now and then. Also, third party tools like AM-GUI will also be able to do it.
Currently all module+APP-MANAGER can be modified by any app with user permissions, so it is slightly less secure.
I was thinking we only need release once every new version and keep it that way for stability. |
AppImage double-click behavior (from desktop):
AppImage shell execution behavior (inside a terminal):
For more info, see the AppRun of the AppImage. After installation the AppImage is moved away to the selected install location. |
The development branch of AM includes the CLI itself, which cannot be updated inside a read-only AppImage (appman -s updates the AppImage instead of the script). Enabling devmode would therefore leave a half-broken state (release CLI + dev branch modules/database), so it is disabled when running as an AppImage, like in ivan-hc#2695.
|
I didn't mean to open the PR yet, but I did to improve AppImage deployment that @vishnu350 started: There are some stuff that I need to know and notes:
|
I would prefer to have it via push, or at least in a continuous tag (versions in "releases" are for announcing more details about new features... I must write them myself). The AppImage should already have all bugfixes of the script. This every time that APP-MANAGER and .am scripts in /modules have changes.
A terminal that says "run -h..." etcetera? Its an idea. Anyway, we don't know if it will act as AM or AppMan: it is completely different.
OK, do not add it... or at least use it if the command exists on the host.
To bundle appimageupdatetool (like the other dependencies) would be the best practice. |
|
Hi @fiftydinar, thanks man for helping out! I think your sharun+uruntime and yml/hooks are nice. Right now I'm using @ivan-hc portable2appimage because the resulting size is so small (1.14 MB). It even works on really old machines, no problems.
Our target user group: End-users that will never, ever install AM scripts via command line. Basically 99% of the world's population. They just want to double click something after visiting https://portable-linux-apps.github.io, and even that is scary to them. So, these guys don't care for latest builds or portability. They wont have a github account to complain about anything. We just have to provide a stable release for them that "just works".
When double clicked — if AM/Appman not installed, it opens a terminal and triggers install scripts, else it opens a terminal and brings up AM/Appman -h. Here is my AppRun (embedded inside portable2appimage): |
It will work as AM if The code changes to existing scripts are very minimal (APP-MANAGER, INSTALL, AM-INSTALLER), only 30+ lines changes to make this work. |
- Added AppImage awareness to APP-MANAGER. - Added AppImmage awareness to the install scripts. - Added appimage dir containing AppRun, Appimage build scripts and .desktop file.
|
@fiftydinar, @ivan-hc, please take a look at my changes:
From a security and functional standpoint, this build is working very well. It passes all regression tests on Debian Jessie. |
Why AppImage for AM?
INSTALLandAM-INSTALLERscript is embedded directly into the AppImage. Upon execution, it automatically prompts to install itself as either AM or Appman.◆ am | 10.5 ✓ | static-binary | 1.14 MiBAppImage Limitations
Implementation Overview (Methodology)
APP-MANAGER-*.AppImage:./appimage/make-appimage.sh x86_64 10.5.desktop,modules/,INSTALL,AM-INSTALLER, and icons into$APPDIR.APP-MANAGERscript changes:$IS_APPIMAGEflag to detect AppImage runtime.$APPDIR/share/modules(internal to AppImage)._sync_moduleswhen$IS_APPIMAGEexists.$IS_APPIMAGEexists.$APPIMAGEexists, moveAPP-MANAGER-*.AppImageto install location (/opt/amor/home/...).TODOs
APP-MANAGER-*.AppImageon version bumps._sync_amclito fetch and install the latest prebuilt AppImage to$CLI_PATH.mv old-am-appimage $AMCACHE/$CLI/appimage.bak && mv new-am-appimage $CLI_PATH. This preserves the old inode (/tmp/.mount**) until exit, allowing safe updates.For those interested in testing, here is the release.