Small Basic: AutoUpdater Code Snippet

Small Basic: AutoUpdater Code Snippet



Introduction


I created this snippet, because I really missed an option like this in SmallBasic.

I never saw something like this in another SmallBasic program before.

This snippet will check if a newer version of your program is available for download.
And if there is a new version, it will download and install it.

What do you need?


You need...
  1.  SmallBasic
  2.  the snippet
  3. a textfile
  4. a file uploader
  5. the LitDev extension (alternative)

The file uploader


This snippet will not work with every file uploader.
The best way is to create an own website. There are many free providers like hpage and Oyla.
If you find a file uploader for which it works, please leave a comment with a link.

It is very important that you can re-upload the file. So the link does not change, but you can change the text inside the file.
Otherwise the snippet will not work!

Step 1


First you need to create a new textfile.
After you did this, open the new file.

In the first line, you write the version number of the program you would like to update. Only numbers are allowed!
In the second line you write the count of all following lines.
In the third line you start to write the download links for the files you want to download. One line for each link.
Please note that the Updater downloads the files like the checkfile. That is why it doesn't work with every file uploader, too.
After that you write the directory you want to copy the file to. New folders will be created automatically. You need to write two back slashes instead of one!
There are two ways to write the directory:
  • Write the whole path
  • Write PD at the start of the line. This will tell the Updater to copy the file to the programs directory. Than leave one space and write a path (which starts with two back slashes)
Let's make an example:
1.1.1
2.4
5.C:\\AutoUpdater - Test\\Test2.txt
6.
PD \\AutoUpdater - Test\\Test1.txt

Please note that some special characters like ä, ö, ü and ß are not supported for the complete path!

Now upload the file to your file uploader and copy the link.

Step 2


Now we want to integrate the Updater in your program.
There are two ways to do this.
Please note that I used the textwindow in my snippet. But this is not necessary.

The first way


Simply copy and paste the snippet in your program. But don't paste it in a subroutine!
Now you can start the updater whenever you want. Simply write:

UpdaterStart()

The negative point of this way is, that you can't update the program.exe file.

Now we need to edit the snippet a bit.
Go to the subroutine UpdaterStart.
It should look like this:
Sub UpdaterStart
AutoUpdaterVersion = "1.0"
ProgramVersion = 1.0 'This is the version of the program you want to update.
CheckLink = "http://sbautoupdater.npage.de/get_file.php?id=24521039&vnr=428469" 'The downloadlink for the checkfile (which contains all needed information)  IMPORATANT: Never change the link of the checkfile. Otherwise the program won't work!!!
CheckFileDestination = Program.Directory + "\\Note Program.txt" 'The place where the checkfile gets copied to.
Programm()
EndSub

AutoupdaterVersion show's the version of the Updater. So, you know which version you used.
ProgramVersion show's the version of your program. Edit it to the correct version. Only numbers are allowed!
CheckLink is the link of the textfile you uploaded sooner. Change it to the new link.
CheckFileDestination is the directory where the checkfile will be downloaded to.

Save and start your program.
Your new updater should start now.

The second way


For this way you need to download and install the LitDev extension for SmallBasic.

Copy the snippet in a new program. Now we need to edit it a bit.
Go to the subroutine UpdaterStart.
It should look like this:
Sub UpdaterStart
AutoUpdaterVersion = "1.0"
ProgramVersion = 1.0 'This is the version of the program you want to update.
CheckLink = "http://sbautoupdater.npage.de/get_file.php?id=24521039&vnr=428469" 'The downloadlink for the checkfile (which contains all needed information)  IMPORATANT: Never change the link of the checkfile. Otherwise the program won't work!!!
CheckFileDestination = Program.Directory + "\\Note Program.txt" 'The place where the checkfile gets copied to.
Programm()
EndSub

AutoupdaterVersion show's the version of the Updater. So, you know which version you used.
ProgramVersion show's the version of your program. Edit it to the correct version. Only numbers are allowed!
CheckLink is the link of the textfile you uploaded sooner. Change it to the new link.
CheckFileDestination is the directory where the checkfile will be downloaded to.

After this, go to the subroutine UpdateDone.
It should look like this:
Sub UpdateDone
  For o = 1 To 5
    UpdateDoneSpace[o] = Text.GetCharacter(10)
    TextWindow.WriteLine(UpdateDoneSpace[o])
  EndFor
  TextWindow.WriteLine("The update is done!")
  TextWindow.Write("Your new version is ")
  TextWindow.ForegroundColor = "Red"
  TextWindow.Write(File.ReadLine(CheckFileDestination, 1))
  TextWindow.ForegroundColor = "Gray"
  TextWindow.WriteLine(".")
  For o = 1 To 11
    UpdateDoneSpace[o] = Text.GetCharacter(10)
    TextWindow.WriteLine(UpdateDoneSpace[o])
  EndFor
  File.DeleteFile(CheckFileDestination)
  'File.WriteLine(Program.Directory + "\\YourNewTextfile.txt", 1, "1")  'This line is only needed if you want to use the AutoUpdater as a separate program.
  Program.Delay(5000) 'Only for the user. It is not necessary.
  Program.End()
EndSub

Next create a new textfile in your programs directory. Write a 0 in the first line. Save it.
Delete the ' in front of File.WriteLine. Edit the part YourNewTextfile.txt to the textfile you created.

Now save the program. After this, start the new program and end it after it started.
Copy the following files to your programs directory:
  • TheNewProgramsName.exe
  • SmallBasicLibrary.dll
  • LitDev.dll
Now open your program. Go to the line where you want to start the Updater.
I suggest to do this at the start of the program.
Copy this to your program to start the updater:
Sub StartUpdater
  If File.ReadLine(Program.Directory + "\\YourNewTextfile.txt", 1) = 0 Then
    LDProcess.Start(Program.Directory + "\\TheNewProgramsName.exe", "")
    Program.End()
  ElseIf File.ReadLine(Program.Directory + "\\YourNewTextfile.txt", 1) = 1 Then
    TheStartSubroutineOfYourProgram()
  EndIf
EndSub
 
Sub TheStartSubroutineOfYourProgram
  File.WriteLine(Program.Directory + "\\YourNewTextfile.txt", 1, "0")
  'Your programs code
EndSub

Save and start your program.
Your new updater should start now.

Notes

 
This snippet is still a work in progress. There may be bugs and missing options!
I am planning to update the snippet and to create different versions of the Updater.
That's why you should visit this TNWiki article from time to time.

I hope that this snippet is useful for you.
Please leave a comment and some feedback.
 
Sort by: Published Date | Most Recent | Most Useful
Comments
Page 1 of 1 (6 items)