getlantern / flashlight-build

Repeatable builds for Lantern, using docker.
14 stars 5 forks source link

[feature] install updates automatically #187

Open myleshorton opened 9 years ago

myleshorton commented 9 years ago

Issue by skivvies Monday Nov 21, 2011 at 14:25 GMT Originally opened as https://github.com/getlantern/lantern-java/issues/21


evergreen style (e.g. à la Google Chrome).

Auto-updates using jardiff or something similar to auto-patch deployed jar files.

Sub-tasks:

myleshorton commented 9 years ago

Comment by skivvies Tuesday Apr 16, 2013 at 22:13 GMT


Just noticed install4j has some auto-update functionality (search http://www.ej-technologies.com/products/install4j/features.html for "auto-update") but haven't explored yet. Maybe that could help.

myleshorton commented 9 years ago

Comment by skivvies Thursday Jun 27, 2013 at 22:37 GMT


Just accepted a prompt in JetBrains WebStorm IDE to auto update in place, and after it downloaded the update and closed the currently-running app, a slick little app called "com.intellij.updater" was automatically run which installed the update and launched the new version. Did a little rummaging, and look what I found: https://github.com/JetBrains/intellij-community/tree/master/updater/src/com/intellij/updater

Can we use any of their stuff?

myleshorton commented 9 years ago

Comment by leahxschmidt Friday Jun 28, 2013 at 03:14 GMT


I think it will be just as quick to write our own, because we need to do a few things that it doesn't.

On Thu, Jun 27, 2013 at 6:37 PM, skivvies notifications@github.com wrote:

Just accepted a prompt in JetBrains WebStorm IDE to auto update in place, and after it downloaded the update and closed the currently-running app, a slick little app called "com.intellij.updater" was automatically run which installed the update and launched the new version. Did a little rummaging, and look what I found: https://github.com/JetBrains/intellij-community/tree/master/updater/src/com/intellij/updater

Can we use any of their stuff?

— Reply to this email directly or view it on GitHubhttps://github.com/getlantern/lantern/issues/21#issuecomment-20159834 .

myleshorton commented 9 years ago

Comment by skivvies Monday Aug 26, 2013 at 19:11 GMT


If (say) a critical security update to the user's current jre is available, do we have a way of triggering an update to that from our auto-updater too?

myleshorton commented 9 years ago

Comment by myleshorton Monday Aug 26, 2013 at 21:56 GMT


No

myleshorton commented 9 years ago

Comment by skivvies Monday Aug 26, 2013 at 22:26 GMT


Maybe #466 could cover that then.

myleshorton commented 9 years ago

Comment by myleshorton Monday Aug 26, 2013 at 22:49 GMT


That's a pretty different feature and probably one we won't be able to handle better than Oracle. We could send a global message with a link or something like that though.

On Monday, August 26, 2013, skivvies wrote:

Maybe #466 https://github.com/getlantern/lantern/issues/466 could cover that then.

— Reply to this email directly or view it on GitHubhttps://github.com/getlantern/lantern/issues/21#issuecomment-23300221 .

Adam pgp A998 2B6E EF1C 373E 723F A813 045D A255 901A FD89

myleshorton commented 9 years ago

Comment by skivvies Monday Aug 26, 2013 at 23:00 GMT


+1 on letting Oracle or the system update checker handle this. If we decide we need it we could have clients display messages conditionally based on what version of {Lantern (#845), Java, ...} they're running, but can cross that bridge later.

myleshorton commented 9 years ago

Comment by myleshorton Tuesday Aug 27, 2013 at 22:46 GMT


This certainly isn't close to ready for tomorrow's release -- pushing.

myleshorton commented 9 years ago

Comment by cholmes Tuesday Sep 03, 2013 at 14:40 GMT


Assigning back to you @myleshorton for re-assignment. Maybe ox could do it?

myleshorton commented 9 years ago

Comment by oxtoacart Monday Feb 24, 2014 at 14:02 GMT


@myleshorton Given how frequently we are having to update the client to fix bugs and stay ahead of the censors, I wonder if maybe we should go ahead and do this for 1.3?

myleshorton commented 9 years ago

Comment by skivvies Monday Feb 24, 2014 at 17:19 GMT


+1 ain't enough

myleshorton commented 9 years ago

Comment by myleshorton Tuesday Feb 25, 2014 at 02:29 GMT


Yeah I agree this is super important. The only thing is I think doing it well is a pretty significant task, i.e. with binary differencing. We could do a simple implementation to start, though, and iterate from there.

On Mon, Feb 24, 2014 at 9:19 AM, skivvies notifications@github.com wrote:

+1 ain't enough

Reply to this email directly or view it on GitHubhttps://github.com/getlantern/lantern/issues/21#issuecomment-35910459 .

myleshorton commented 9 years ago

Comment by oxtoacart Tuesday Feb 25, 2014 at 15:36 GMT


Glad everyone's on board!

@myleshorton - can you talk a little more about "doing it well", in particular why we would need binary differencing rather than just comparing version numbers?

Incidentally, it occurs to me that for this to be valuable, the notification of new versions should come through the unblocked S3 channel.

Cheers, Ox


"I love people who harness themselves, an ox to a heavy cart, who pull like water buffalo, with massive patience, who strain in the mud and the muck to move things forward, who do what has to be done, again and again."

On Mon, Feb 24, 2014 at 8:29 PM, myleshorton notifications@github.comwrote:

Yeah I agree this is super important. The only thing is I think doing it well is a pretty significant task, i.e. with binary differencing. We could do a simple implementation to start, though, and iterate from there.

On Mon, Feb 24, 2014 at 9:19 AM, skivvies notifications@github.com wrote:

+1 ain't enough

Reply to this email directly or view it on GitHub< https://github.com/getlantern/lantern/issues/21#issuecomment-35910459>

.

Reply to this email directly or view it on GitHubhttps://github.com/getlantern/lantern/issues/21#issuecomment-35968461 .

myleshorton commented 9 years ago

Comment by skivvies Tuesday Feb 25, 2014 at 15:58 GMT


@myleshorton means that when an update is available, rather than downloading an entire installer and doing a full install, it just downloads a binary diff over the current version and applies that. Looks like this is how IntelliJ does it:

https://github.com/JetBrains/intellij-community/blob/master/updater/src/com/intellij/updater/DiffCalculator.java

myleshorton commented 9 years ago

Comment by oxtoacart Tuesday Feb 25, 2014 at 16:00 GMT


Ahh, gotcha! Yeah, that definitely sounds like a "phase 2" thing :)

Cheers, Ox


"I love people who harness themselves, an ox to a heavy cart, who pull like water buffalo, with massive patience, who strain in the mud and the muck to move things forward, who do what has to be done, again and again."

On Tue, Feb 25, 2014 at 9:58 AM, skivvies notifications@github.com wrote:

@myleshorton https://github.com/myleshorton means that when an update is available, rather than downloading an entire installer and doing a full install, it just downloads a binary diff over the current version and applies that. Looks like this is how IntelliJ does it:

https://github.com/JetBrains/intellij-community/blob/master/updater/src/com/intellij/updater/DiffCalculator.java

Reply to this email directly or view it on GitHubhttps://github.com/getlantern/lantern/issues/21#issuecomment-36022791 .

myleshorton commented 9 years ago

Comment by oxtoacart Tuesday Feb 25, 2014 at 16:05 GMT


What do we want as the user experience for this? One easy to implement option would be to just have a non-dismissable modal that prompts the user to download the latest lantern by clicking a button. This would download the install wrapper, from which the user would then install Lantern as normal. Once Lantern is up-to-date, the modal would go away.

Other options? ...

Cheers, Ox


"I love people who harness themselves, an ox to a heavy cart, who pull like water buffalo, with massive patience, who strain in the mud and the muck to move things forward, who do what has to be done, again and again."

On Tue, Feb 25, 2014 at 10:00 AM, Ox Cart ox@getlantern.org wrote:

Ahh, gotcha! Yeah, that definitely sounds like a "phase 2" thing :)

Cheers, Ox


"I love people who harness themselves, an ox to a heavy cart, who pull like water buffalo, with massive patience, who strain in the mud and the muck to move things forward, who do what has to be done, again and again."

  • Marge Piercy

On Tue, Feb 25, 2014 at 9:58 AM, skivvies notifications@github.comwrote:

@myleshorton https://github.com/myleshorton means that when an update is available, rather than downloading an entire installer and doing a full install, it just downloads a binary diff over the current version and applies that. Looks like this is how IntelliJ does it:

https://github.com/JetBrains/intellij-community/blob/master/updater/src/com/intellij/updater/DiffCalculator.java

Reply to this email directly or view it on GitHubhttps://github.com/getlantern/lantern/issues/21#issuecomment-36022791 .