Click here to Skip to main content
11,635,098 members (68,657 online)
Click here to Skip to main content

Application Auto Update Revisited

, 19 Nov 2006 CPOL 157.2K 4.9K 182
Rate this:
Please Sign up or sign in to vote.
An article on updating Windows applications through the web.

Introduction

Since my first iteration of the AutoUpdate, I noticed that I don't really need the ability to change the AutoUpdate program itself, so I don't need it. The second thing is that most of the time I don't need to update all the files.

What has changed

The AutoUpdate program (AutoUpdate.exe) is no longer required. Now, everything that is needed is in the DLL (AutoUpdate.dll). No need to touch the CommandLine anymore since everything is at the same place. The AutoUpdate doesn't need to be a class, now it is just a module, so, no need to create an AutoUpdate variable.

No need to change the AutoUpdate code. The remote path, the update file name, and the error message are now properties and the last two have default values.

The update file has a new layout, as shown:

<File Name>;<Version>   [' comments    ]
<File Name>[;<Version>] [' comments    ]

<File Name>[;?]         [' comments    ]
<File Name>[;delete]    [' comments    ]
...

And this is what it means:

  • Blank lines and comments are ignored.
  • The first line should be the current program/version.
  • From the second line to the end, the second parameter is optional.
  • If the second parameter is not specified, the file is updated.
  • If the version is specified, the update checks the version.
  • If the second parameter is an interrogation mark (?), the update checks if the file already exists, and "doesn't" upgrade if it exists.
  • If the second parameter is "delete", the system tries to delete the file.
  • "'" (chr(39)) starts a line comment (like VB).

The UpdateFiles function returns True if the AutoUpdate did the update or there was an error during the update, or False if nothing was done.

The auto update web folder

Some things never change. The auto update web folder should have a folder for each system you want to upgrade. The root folder is the one that you will refer on the RemotePath variable. Each sub folder should be named as the assembly name (normally, the program name without the extension). Inside the program folder, you save the files that you want to update and the file Update.txt (or the name that you defined in the UpdateFileName property) with the layout explained above.

Using the code

You can add the module to your project, or you can add a reference to the DLL. After that, you just need to call the UpdateFiles function. You also can change the default properties before the call.

Public Sub Main()
    ' You can set some parameters thru properties
    ' The remote path can be set thru the RemotePath property or 
    ' thru the RemotePath parameter in the function call
    ' UpdateFileName and ErrorMessages have default value so it's optional
    AutoUpdate.RemotePath = "http://www.url.com/directory/"

    ' the final location to the files will be RemotePath + AssembyName + "/" + FileName
    ' ex: http://www.url.com/directory/AutoUpdateTest/MyUpdate.dat

    AutoUpdate.UpdateFileName = "MyUpdate.dat"
    AutoUpdate.ErrorMessage = "Something funny is going on trying to auto update."

    ' test if an update is needed and quit the program if so.
    If AutoUpdate.UpdateFiles() Then Exit Sub

    ' here goes your regular code in the main sub
    Application.Run(New Form1)
End Sub

What else can be done

In the server side, you can build a service that automatically generates the update file, but this is up to you!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Eduardo Oliveira
Software Developer (Senior)
Canada Canada
Eduardo Oliveira graduated in Computer Systems Analysis in Rio de Janeiro - Brazil in 1990.
He has been working as Programmer Analyst since.
In 2001 immigrated to Canada and today lives in Calgary and works with .NET and SQL server, developing desktop and web applications.

You may also be interested in...

Comments and Discussions

 
Questionautoupdate service Pin
crosemffet3-Sep-14 14:04
membercrosemffet3-Sep-14 14:04 
Questionthanks for sharing Pin
Southmountain15-Jun-12 12:53
memberSouthmountain15-Jun-12 12:53 
Generalupdated infoParam = "?" with a CompareFiles function Pin
creativesoul26-Feb-10 4:39
membercreativesoul26-Feb-10 4:39 
QuestionAnyone having issues using this with VISTA platform Pin
Kebrite8-Feb-10 8:00
memberKebrite8-Feb-10 8:00 
GeneralEnvironment.Exit(0) Pin
timjf26-Dec-09 14:16
membertimjf26-Dec-09 14:16 
GeneralRe: Environment.Exit(0) Pin
keno2oo111-Sep-12 20:32
memberkeno2oo111-Sep-12 20:32 
GeneralRe: Environment.Exit(0) Pin
keno2oo115-Sep-12 5:18
memberkeno2oo115-Sep-12 5:18 
GeneralI am lost on how to use this PLEASE HELP! Pin
Gaby Bitar17-Dec-09 2:46
memberGaby Bitar17-Dec-09 2:46 
GeneralAutoUpdate with Download Form and Progress Pin
ammar7913-Dec-09 5:23
memberammar7913-Dec-09 5:23 
GeneralRe: AutoUpdate with Download Form and Progress [modified] Pin
KyferEz8-Nov-10 10:50
memberKyferEz8-Nov-10 10:50 
GeneralThe process cannot access the file because it is being used by another process Pin
Ngonidzashe Munyikwa24-Jul-09 2:32
memberNgonidzashe Munyikwa24-Jul-09 2:32 
GeneralRe: The process cannot access the file because it is being used by another process Pin
Ngonidzashe Munyikwa25-Jul-09 20:26
memberNgonidzashe Munyikwa25-Jul-09 20:26 
GeneralRe: The process cannot access the file because it is being used by another process Pin
Eduardo Oliveira26-Jul-09 12:27
memberEduardo Oliveira26-Jul-09 12:27 
GeneralC# If AutoUpdate.UpdateFiles() Then Exit Sub Pin
Loots19-Mar-09 2:52
memberLoots19-Mar-09 2:52 
GeneralRe: C# If AutoUpdate.UpdateFiles() Then Exit Sub Pin
AuspexPT31-Mar-09 23:22
memberAuspexPT31-Mar-09 23:22 
QuestionIs there a C# version? Pin
Visual Tracker22-Jan-09 3:35
memberVisual Tracker22-Jan-09 3:35 
General[Message Deleted] Pin
Sebastian Diaz2-Oct-08 9:16
memberSebastian Diaz2-Oct-08 9:16 
GeneralRe: Consulta Pin
zitun7-Oct-08 5:11
memberzitun7-Oct-08 5:11 
GeneralVB error with this code (VS2008) Pin
n3mesis12526-Sep-08 6:46
membern3mesis12526-Sep-08 6:46 
QuestionRe: VB error with this code (VS2008) Pin
n3mesis12526-Sep-08 6:49
membern3mesis12526-Sep-08 6:49 
GeneralVB.NET saving and retrieving word file into sql database Pin
naresh15072-Sep-08 22:56
membernaresh15072-Sep-08 22:56 
GeneralVB.NET saving and retrieving word file into sql database Pin
naresh15072-Sep-08 22:55
membernaresh15072-Sep-08 22:55 
QuestionHow does the module handling DLL references of the software? Pin
S. Kolic4-May-08 2:22
memberS. Kolic4-May-08 2:22 
Questiondoes in work if your app has been initially installed via an MSI? Pin
ewart14-Mar-08 17:31
memberewart14-Mar-08 17:31 
QuestionWhy not update the AutoUpdate program ? Pin
cliftonarms28-Feb-08 12:08
membercliftonarms28-Feb-08 12:08 
GeneralC# v.2.1.1 (with some improvements and an example of use) [modified] Pin
Tiago Freitas Leal7-Feb-08 14:32
memberTiago Freitas Leal7-Feb-08 14:32 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
mayaolong1-Mar-08 17:46
membermayaolong1-Mar-08 17:46 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
kingna20-Nov-08 22:11
memberkingna20-Nov-08 22:11 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
kingna21-Nov-08 20:59
memberkingna21-Nov-08 20:59 
QuestionRe: C# v.2.1.1 (with some improvements and an example of use) Pin
gwenny3-Jun-09 19:36
membergwenny3-Jun-09 19:36 
AnswerRe: C# v.2.1.1 (with some improvements and an example of use) Pin
Tiago Freitas Leal5-Jun-09 12:43
memberTiago Freitas Leal5-Jun-09 12:43 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
c95se5m14-Aug-09 8:21
memberc95se5m14-Aug-09 8:21 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
Member 603819611-Nov-09 18:14
memberMember 603819611-Nov-09 18:14 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
Tiago Freitas Leal12-Nov-09 10:16
memberTiago Freitas Leal12-Nov-09 10:16 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
tdata16-Nov-09 0:24
membertdata16-Nov-09 0:24 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
omzig26-Mar-10 9:59
memberomzig26-Mar-10 9:59 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
KyferEz9-Nov-10 11:56
memberKyferEz9-Nov-10 11:56 
GeneralRe: C# v.2.1.1 (with some improvements and an example of use) Pin
KyferEz8-Nov-10 18:35
memberKyferEz8-Nov-10 18:35 
QuestionRe: Need urgent reply (C# v.2.1.1 (with some improvements and an example of use)) Pin
pranpara26-Nov-10 2:38
memberpranpara26-Nov-10 2:38 
GeneralDownload not accessible :( [modified] Pin
twisterPB656-Dec-07 18:59
membertwisterPB656-Dec-07 18:59 
GeneralRe: Download not accessible :( [modified] Pin
twisterPB659-Dec-07 21:09
membertwisterPB659-Dec-07 21:09 
GeneralGreat Code Pin
Aust Paul24-Nov-07 23:18
memberAust Paul24-Nov-07 23:18 
Question404 Error Pin
Mike Fed12-Oct-07 10:19
memberMike Fed12-Oct-07 10:19 
AnswerRe: 404 Error Pin
Member 454583129-Aug-08 14:21
memberMember 454583129-Aug-08 14:21 
GeneralUpdating a BHO Pin
jorgito_rubio18-Sep-07 7:51
memberjorgito_rubio18-Sep-07 7:51 
GeneralRe: Updating a BHO Pin
dta43168-Feb-10 17:39
memberdta43168-Feb-10 17:39 
QuestionPlease Help Pin
jerrywade12-Jul-07 6:55
memberjerrywade12-Jul-07 6:55 
QuestionVersion comparison Pin
NiteShdw5-Jun-07 6:30
memberNiteShdw5-Jun-07 6:30 
GeneralExcellent code! v1.1 change attached Pin
wunderkinder29-Mar-07 12:35
memberwunderkinder29-Mar-07 12:35 
Generalsample for update.txt Pin
shein2-Feb-07 16:31
membershein2-Feb-07 16:31 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.150728.1 | Last Updated 19 Nov 2006
Article Copyright 2006 by Eduardo Oliveira
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid