External functions
Trevor DeVore
lists at mangomultimedia.com
Mon Feb 4 12:23:20 EST 2008
On Feb 4, 2008, at 11:38 AM, Eric Chatonet wrote:
> In complex projects that are known as needing future upgrades, I
> prefer to have libraries, externals, pieces of the GUI, etc. in
> specific folders.
> Then, any component can be easily updated from the web when needed.
> My two cents ;-)
Eric, your mention of updating an app over the web and organizing
individual pieces into their own separate folders brings to mind some
issues I've been thinking about recently in regards to auto updating.
So in the interest of sharing some additional thoughts on the subject
of auto updating, here they are.
When I originally implemented auto updating in one of my applications
I would create updates that only updated specific stacks in the
installation. I thought it was really cool that Revolution could
update any stack on the fly and then just reload without restarting
the application. That application has been around for a number of
years now and has received numerous updates.
What I found was that this approach ended up being more complex then I
would have liked as I had to determine which stacks had been changed
since the last version and then only include them in the update I
pushed out.
I decided I wanted an auto update architecture that required as little
thinking as possible come publish time. Add some release notes, click
a button and upload the files. I didn't want to have to keep a log
each time a script changed anywhere in a stack so that I would
remember to update it when I pushed out the next version. I also
wanted to have an exact snapshot of every file in the installation for
each release so that I could be look at the exact same code that was
running on the end-user machine if they report a problem with version
1.2.3.
So when I revised my auto update architecture I designed it so I could
push out:
a) new program files (stacks, externals, supporting docs, etc.) or
b) just the executable files (to push out engine bug fixes) or
c) both a and b.
This was much simpler to deal with on my end and it made me feel good
inside that I wasn't making the user download the ~2MB engine each
time if they didn't need to. Since I was no longer updating the
application at the stack level I wasn't as concerned with splitting up
stacks into different files on disk.
I've now been using this update architecture for a little over a year
now. Over that year I've seen a number of users write in thinking that
they weren't running the latest update because the File Info dialog
for the executable said 1.x instead of 1.x.x (The about box does
report the proper version though).
So now I'm of the mind to always update the entire application
whenever I push out a new public release for a consumer application. I
can still provide the benefit of the app updating itself and
relaunching with no intervention and there is less room for confusion
as to what version they are running since the File Info dialog for the
executable reports the proper version. I figure a couple of extra
seconds (or minutes depending on connection speed) to download
everything is worth it in the end.
Regards,
--
Trevor DeVore
Blue Mango Learning Systems
www.bluemangolearning.com - www.screensteps.com
More information about the use-livecode
mailing list