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
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).
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()
AutoUpdate.RemotePath = "http://www.url.com/directory/"
AutoUpdate.UpdateFileName = "MyUpdate.dat"
AutoUpdate.ErrorMessage = "Something funny is going on trying to auto update."
If AutoUpdate.UpdateFiles() Then Exit 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!