Re: Update mechanism for standalone app/ Delta Updates
Jan Viehweger <[email protected]> Fri, 24 Feb 2017 12:12:53 +0100
| Newsgroups | gmane.comp.file-systems.zero-install.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Bastian,
i think i got it. So my should have an GetResourceFromEnvService wich
does that:
1. get the environment variable MYAPP_VIDEOS
2. convert the value of MYAPP_VIDEOS into an array by splitting in on
seperator ":", so for instance
"\path\to\implentationV3:\path\to\implentationV2:\path\to\implentationV1"
gets into ["\path\to\implentationV3", "\path\to\implentationV2",
"\path\to\implentationV1"]
3. walk these directories (ordered by version, latest is at 0) and
return the first occurence of the requested resource.
...right?
Best regards,
Jan
Am 23.02.17 um 18:45 schrieb Bastian Eicher:
>
> Hi Jan,
>
> in this case the environment variable MYAPP_VIDEOS would be set to a
> list of multiple directories separated by : on Linux and by ; on
> Windows, similar to the PATH variable.
>
> The <overlay> binding was intended to support applications that do not
> use environment variables and expect their dependencies to be located
> in fixed locations. Zero Install would use a combination of chroot und
> a union file system to make that specific application “see” its
> dependency in the specified location in the filesystem without
> actually placing it there. However, this was never implemented, since
> it is rather complex and especially difficult to support on Windows.
>
> Regards
>
> Bastian
>
> *From:*Jan Viehweger [mailto:[email protected]]
> *Sent:* Mittwoch, 22. Februar 2017 23:23
> *To:* [email protected]
> *Subject:* Re: [Zero-install-devel] Update mechanism for standalone
> app/ Delta Updates
>
> Hi Bastian,
>
> if i would use environment variable as you suggested what would happen
> if each implementation requires it previous version and maps it to the
> same env e.g., in this case "MYAPP_VIDEOS"? Could we merge / overlay
> the filestructure by this?
>
> I studied the xsd of ZI. I stumbled over a promising child tag
> <overlay src="" mount-point="" /> which i can't find in the feed
> specification. What's the use of it?
>
> Best regards,
>
> Jan
>
>
>
> Am 22.02.17 um 09:35 schrieb Bastian Eicher:
>
> Hi Jan,
>
> you are right, applications built on cross-platform environments
> like Webkit or Java are great candidates for Zero Install. Perhaps
> you can help spread the word. :)
>
> The easiest way to get smaller updates with Zero Install right now
> is to split your applications into multiple smaller components
> that can be updated independently. However, this would require
> your application to find the different “parts” of itself using
> environment variables. For example your main feed might reference
> a MyApp-Videos.xml feed like this:
>
> <requires interface=".../MyApp-Videos.xml">
>
> <environment name="MYAPP_VIDEOS" insert="."/>
>
> </requires>
>
> Your app would then need to look in $MYAPP_VIDEOS instead of
> ./app/media/videos. I have no experience with Node Webkit so I do
> not know whether this would be easy to accomplish.
>
> Zero Install also has the concept of “recipes” that allow
> implementations to combine multiple archives or other steps like
> renames or removals. For example:
>
> <implementation version="1" id="sha256=abc">
>
> <archive href=".../myapp-v1.zip"/>
>
> </implementation>
>
> <implementation version="2" id="sha256=xyz">
>
> <recipe>
>
> <archive href=".../myapp-v1.zip"/>
>
> <archive href=".../myapp-v2-delta.zip"/>
>
> </recipe>
>
> </implementation>
>
> However, this would only save you from having to upload large
> updates. When downloading v2 Zero Install would still need to
> re-download v1 as well because it does not know that the existing
> sha256=abc implementation corresponds to the myapp-v1.zip archive
> recipe step.
>
> @Thomas: Perhaps we could introduce a new recipe step to handle
> this, for example:
>
> <recipe>
>
> <implementation id="sha256=abc"/>
>
> <archive href=".../myapp-v2-delta.zip"/>
>
> </recipe>
>
> What do you think?
>
> Regards
>
> Bastian
>
> *From:*Jan Viehweger [mailto:[email protected]]
> *Sent:* Montag, 20. Februar 2017 11:52
> *To:* The Zero Install system
> <[email protected]>
> <mailto:[email protected]>
> *Subject:* [Zero-install-devel] Update mechanism for standalone
> app/ Delta Updates
>
> Hello list,
>
> i'm developing a cross plattform standalone app which need's an
> (auto/self-) update mechanism. The app is written in HTML5 &
> node.js and runs on Node Webkit (http://nwjs.io). The problem is:
> Node Webkit does not provide an update feature.
>
> So i met zero install ;) . The concept behind blow my mind away
> and i'm wondering why it's still quite unknown (in my scope)?
>
> I'm evaluating if ZI can solve my update problem 100%. So let me
> explain in detail.
>
> One major requirement of the update routine is, that updates shout
> be as small as possible. For that purpose other tools use so
> called delta updates. I've already read delta updates are a
> upcomming feature for ZI so i asked myself if i could use a
> workaround:
>
> The app itself consists of a small amount of javascript but a
> large (and growing) number of mediafiles (images and videos).
> Updates will most of the time consist of changed or new
> mediafiles. so creating patches (delta updtes) for images or
> videos (where almost every pixel changes) make no sense at all.
>
> So my idea is the following pragmatic idea:
>
> * The deployed app will be versioned in a LFS
> (https://git-lfs.github.com/) enabled GIT repo.
> * Each change to the repo will be flaged as a new Version.
> * The Diff between the last version and the current will be
> exported as a zip containing only the modified and new files
> * Transfered to ZI the idea is, that each version represents an
> seperate feed/interface which depends on the previous versions
> which by itself is an feed/interface too
> * By this a tree of dependencies from one to the higher version
> will be resoved.
>
> The big question now is, how to merge the files (each extracted
> archive) together in one place and override older files with newer
> ones?
>
> For making it more descriptive, the following filestructure makes
> the whole standalone app
>
> * nwjs (DIR)
>
> o nwjs.exe
> o ...
>
> * app (DIR)
>
> o js (DIR)
>
> + main.js
> + ...
>
> o templates
>
> + view1.html
> + view2.html
>
> o media (DIR)
>
> + videos (DIR)
>
> # movie1.mp4
> # movie2.mp4
> # ...
>
> + images
>
> # image1.jpg
> # image2.jpg
> # ...
>
> The "nwjs" folder represents the Node Webkit runtime which itself
> won't be touched. Normaly you just download it.
>
> The "app" folder contains the app to be run in Node Webkit. The
> app will be started by calling the nwjs.exe withe the "app"
> directory as the argument.
>
> The app interface/feed will be run by the Node Webkit interface.
>
> --------
>
> Any suggestions are welcome
>
> Best regards
> Jan
>
>
>
>
> ------------------------------------------------------------------------------
>
> Check out the vibrant tech community on one of the world's most
>
> engaging tech sites, SlashDot.org!http://sdm.link/slashdot
>
>
>
>
> _______________________________________________
>
> Zero-install-devel mailing list
>
> [email protected]
> <mailto:[email protected]>
>
> https://lists.sourceforge.net/lists/listinfo/zero-install-devel
>
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
>
>
> _______________________________________________
> Zero-install-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/zero-install-devel
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Zero-install-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/zero-install-devel