Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 10 of 17 total
Thread OT: Check for new updates feature
Mon, Mar 9 2009 7:06 PMPermanent Link

Jon Lloyd Duerdoth
Can anyone share how the "Check for new update" feature is
implemented on many applications?

JonD
Mon, Mar 9 2009 9:09 PMPermanent Link

David
TMS Software, which I adore, has one
http://www.tmssoftware.com/site/wupdate.asp but I don't use it.  I'll
eventually migrate to it.

Currently, I use appcontrols
http://www.appcontrols.com/manuals/appcontrols/index.html?tacautoupgrader.ht
m


On 3/9/09 7:06 PM, in article
ABA296FD-9167-42BF-96F9-FFFABFC2F4AB@news.elevatesoft.com, "Jon Lloyd
Duerdoth" <jld@welshdragoncomputing.ca> wrote:

> Can anyone share how the "Check for new update" feature is
> implemented on many applications?
>
> JonD

Mon, Mar 9 2009 9:53 PMPermanent Link

Tony Bryer
In article <ABA296FD-9167-42BF-96F9-FFFABFC2F4AB@news.elevatesoft.com>,
Jon Lloyd Duerdoth wrote:
> Can anyone share how the "Check for new update" feature is
> implemented on many applications?

The way we do it is that to use either of our apps the user has to enter
their name and activation key. The key is coded with the expiry date of
the user's cover (like Tim we offer annual subscriptions after the first
year).

When the user checks for updates, an encrypted control file is retrieved
from our website. This contains a list of downloadable versions held on
our website with their corresponding eligibility dates, and the most
recent version (as determined by the key) is offered to the user for them
to download. Users whose cover has expired can always download the
version most recent at the time their cover expired: they don't see more
recent versions.

--
Tony Bryer, Greentram Software Pty Ltd, Melbourne, Australia
'Software to build on'  http://www.greentram.com



Mon, Mar 9 2009 10:26 PMPermanent Link

"Jeff Cook"
David wrote:

>
> Currently, I use appcontrols
> http://www.appcontrols.com/manuals/appcontrols/index.html?tacautoupgra
> der.ht m
>
>
Grrrrrrrrrrrrr!

Good luck getting any support for appcontrols!

I bought this:-

The CaptionButton component (software) is Copyright (C) 1998-2006, by
Utilmind Solutions(R) (Utilmind). All rights reserved.
The authors - Utilmind Solutions(R) and Aleksey Kuznetsov (founder of
UtilMind), exclusively own all copyrights to the Advanced Application
Controls (AppControls) and all other products distributed by Utilmind
Solutions(R).

.... had problems with it and tried their support plenty of times and
never even got a response - they were quick enough to take the money
off my credit card though Frown

--
Jeff Cook
Aspect Systems Ltd
www.aspect.co.nz
+
Joan and Jeff Cook
The Cooks Oasis
www.cookislandsoasis.com
Mon, Mar 9 2009 11:38 PMPermanent Link

David
That weird.

The support I've gotten from them has been phenomenal.  As a matter of fact,
they even wrote a component, the dcFileTail, for me.

I started using their controls with their FileStorage component, which I
still use everywhere.  I ended up purchasing both their appcontrols and
diskcontrols sets.

Of course, I haven't requested support since 2001 and it looks like they
last updated their software in April of 2007.

When did you purchase the CaptionButton component?  If you don't mind me
asking.


On 3/9/09 10:26 PM, in article
31CC0558-CF23-475D-9D1A-1C9601516E79@news.elevatesoft.com, "Jeff Cook"
<jeffc@aspect.co.nz> wrote:

> David wrote:
>
>>
>> Currently, I use appcontrols
>> http://www.appcontrols.com/manuals/appcontrols/index.html?tacautoupgra
>> der.ht m
>>
>>
> Grrrrrrrrrrrrr!
>
> Good luck getting any support for appcontrols!
>
> I bought this:-
>
> The CaptionButton component (software) is Copyright (C) 1998-2006, by
> Utilmind Solutions(R) (Utilmind). All rights reserved.
> The authors - Utilmind Solutions(R) and Aleksey Kuznetsov (founder of
> UtilMind), exclusively own all copyrights to the Advanced Application
> Controls (AppControls) and all other products distributed by Utilmind
> Solutions(R).
>
> ... had problems with it and tried their support plenty of times and
>
> never even got a response - they were quick enough to take the money
> off my credit card though Frown

Tue, Mar 10 2009 3:04 AMPermanent Link

"Jeff Cook"
Kia Orana David

> > The CaptionButton component (software) is Copyright (C) 1998-2006,
> > by Utilmind Solutions(R) (Utilmind). All rights reserved.
> > The authors - Utilmind Solutions(R) and Aleksey Kuznetsov (founder
> > of UtilMind), exclusively own all copyrights to the Advanced
> > Application Controls (AppControls) and all other products
> > distributed by Utilmind Solutions(R).

I got it through the website http://www.utilmind.com/ who seem to claim
ownership of appcontrols.

Kia Manuia

Jeff

--
Jeff Cook
Aspect Systems Ltd
www.aspect.co.nz
+
Joan and Jeff Cook
The Cooks Oasis
www.cookislandsoasis.com
Tue, Mar 10 2009 3:34 AMPermanent Link

"Malcolm"
Jon

I rolled my own.  My main apps already have HTTP clients so it was
almost 'free'.

I have a button on my About box which launches a read of a version
file on my webserver.

The version file is a 4-line, text file:
   Version number
   Version string
   Release date
   Description

One app also accesses my site for data downloads under user control
and during that process it checks the version number.  If there is a
new release of which the user has not previously been advised, it
displays the version file lines 2..4 plus a note about how to obtain
the update.

Malcolm
Tue, Mar 10 2009 3:35 AMPermanent Link

Chris Holland

SEC Solutions Ltd.

Avatar

Team Elevate Team Elevate

Hi Jon,

We actually run a DBISAM server here that runs our in house customer
database and also contains a table called "ProgramUpdates".

When I release a new version I add it to the ProgramUpdates file storing
the .exe and ProgramChanges.doc in blob fields along with the version
number and the minimum version number that is needed to upgrade straight
to this version.

When my program starts it connects to the server (on a seperate thread)
using a customer number and password that is entered into our customer
database) and tests to see if a newer version is available and if their
support is active.

If there is a newer version it asks if they want to download it, and if
they do it updates their current version number on the customer
database. This keeps my database up to date automatically.

My .exe is 2.5MB on its own, and 10MB with all of the Dll's.
By having a minimum version that they can upgrade from I do not need to
release the DLL's every time but only when they change.

Chris Holland


Jon Lloyd Duerdoth wrote:
> Can anyone share how the "Check for new update" feature is
> implemented on many applications?
>
> JonD
Tue, Mar 10 2009 4:54 AMPermanent Link

Uli Becker
Jon,

> Can anyone share how the "Check for new update" feature is
> implemented on many applications?

I do it like this:

1. With every release I create an ini-file which contains the new
version-number and the download-path of the packed exe-file.
2. I upload this ini-file to a common folder "webupdates" on my homepage.
3. I upload the packed exe-file to a folder
..../downloads/appname/appname.cab on my homepage.
4. In each of my applications there is a form called WebupdateForm that
contains the name of the ini-file and the local path where the
update-file shall be copied to. The Form is create once, then inherited;
just these 2 paramaters are changed.
5. When the user clicks on "Update" the ini-file is downloaded to the
local update-path. Current version of the application and the version
stored in the ini-file are compared.
6. If the version is newer, my applications downloads the cab-file to
the local update-folder.
7. After that the user is asked to restart the application.
8. When starting the application I am using a custom made component that
simply compares the app's version with the version in the ini-file of
the local Update-Path.
9. If this version is newer the component extracts the cab-file and
copies it to the application-folder, renaming it to MyApp.com.
10 In this case MyApp.com is started and MyApp.exe is terminated.
11. Now, after the application has been started another self-made
component copies MyApp.com to MyApp.exe.

Done.

The big advantage is that applications are able to update themselves
within a LAN when you put the local UpdatePath to a folder of your
server that every application can see. Thus you only need to update the
application on one workstation. The other workstations update themselves
when restarting.

Maybe that sounds a bit complicated but once you have coded the 2
components and written a small application that creates the ini-files
and uploads all files to the right placed it works great.
Just a few mouse-clicks to release an update.

Actually I wrote a "versioncontrol"-application that controls all my
applications, setups, history-lists and so on. From this application I
am "sending" everything with one mouse-click.

Hope that helps.

Uli
Tue, Mar 10 2009 7:40 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Jon,

<<  Can anyone share how the "Check for new update" feature is  implemented
on many applications? >>

Well, in ElevateDB you can use the stores functionality and a script to do
it (not tested, so double-check):

SCRIPT (IN LastUpdate TIMESTAMP)
BEGIN
  DECLARE ConfigCursor CURSOR FOR ConfigStmt;
  DECLARE UpdateCursor CURSOR FOR UpdateStmt;
  DECLARE UpdateFile VARCHAR DEFAULT '';

  -- Create necessary stores, if not present

  USE Configuration;

  PREPARE ConfigStmt FROM 'SELECT * FROM Stores WHERE Name = ?';

  OPEN ConfigCursor USING 'AppUpdatesRemote';

  IF ROWCOUNT(ConfigCursor) = 0 THEN

     SET STATUS MESSAGE TO 'Creating AppUpdatesRemote store';

     EXECUTE IMMEDIATE 'CREATE STORE "AppUpdatesRemote" AS REMOTE
                       ADDRESS ''127.0.0.1'' PORT 12010
                       USER "Administrator"
                       PASSWORD ''EDBDefault''
                       STORE "AppUpdates"';

  END IF;

  CLOSE ConfigCursor;

  OPEN ConfigCursor USING 'AppUpdatesLocal';

  IF ROWCOUNT(ConfigCursor) = 0 THEN

     SET STATUS MESSAGE TO 'Creating AppUpdatesLocal store';

     EXECUTE IMMEDIATE 'CREATE STORE "AppUpdatesLocal" AS LOCAL
                       PATH ''c:\myapp\updates''';

  END IF;

  CLOSE ConfigCursor;

  -- Get a list of all the executables in the AppUpdates store and copy
  -- them to the local AppUpdates store

  SET STATUS MESSAGE TO 'Checking server for updates';

  EXECUTE IMMEDIATE 'SET FILES STORE TO "AppUpdatesRemote"';

  PREPARE UpdateStmt FROM 'SELECT * FROM Files
                           WHERE CreatedOn > :LastUpdate
                           ORDER BY CreatedOn DESC RANGE 1 TO 1';
  OPEN UpdateCursor USING LastUpdate;

  IF ROWCOUNT(UpdateCursor) > 0 THEN

     FETCH FIRST FROM UpdateCursor (Name) INTO UpdateFile;

     -- Copy new update to the local store

     SET STATUS MESSAGE TO 'Downloading ' + UpdateFile;

     BEGIN
       EXECUTE IMMEDIATE 'COPY FILE "' + UpdateFile + '" IN STORE
"AppUpdatesRemote" TO "' +
                          UpdateFile + '" IN STORE "AppUpdatesLocal"';
     EXCEPTION
        SET STATUS MESSAGE TO 'Error downloading ' + UpdateFile + '(' +
ERRORMSG() + ')';
        LEAVE;
     END;

  ELSE

     SET STATUS MESSAGE TO 'No new updates found';

  END IF;

END

--
Tim Young
Elevate Software
www.elevatesoft.com

Page 1 of 2Next Page »
Jump to Page:  1 2
Image