Re: Update mechanism for standalone app/ Delta Updates

Jan Viehweger <[email protected]> Wed, 22 Feb 2017 23:23:06 +0100
Newsgroups gmane.comp.file-systems.zero-install.devel
Message-ID <[email protected]>
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]>
> *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]
> 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