Then you need to copy a file called Update.txt to the same location as your files.
The update.txt file contains info about the updates on your server.
In the example I have posted the update.txt looks like:
The columns are: Key, App Desc, Version, Filename, Mandatory, New App
So, if we take the 1st line of that file:
MDACS - This is the application/file key of the components
MDAC Setup v2.6 - This is a short desc about the remote components
2.6.3 - This is the version number of the remote file
MDAC_Setup.exe - This is the remote file to download
False - This means the download is NOT mandatory
False - This means that a previous version of this app must be installed to download this update.
When my app starts in frmUpdate I load the cuurent installed apps into the auto updator:
Code:
With mobjUpdate.Products
.Clear
.Add "MDACS", "MDAC Version v2.5", "2.5.1"
.Add "RESUME", "Wokawidgets Resume", "2.5"
.Add "IMAGE", "Splash Screen Image", "18"
.Add "OFFICE", "MS Office Components", "3.1.0054"
.Add "TICKICON", "Tick Icon", "5"
End With
These values can be in a txt file on the local machine, in the reg or whereever you like. I've just added them in directly.
Code:
mobjUpdate.RetrieveUpdates
This downloads the update file from the server, and populates the update properties.
You can then select what updates you require.
In my example I have an live update wizard AND the quick auto update...however you can do ALL the updating with an interactive UI:
Code:
mobjUpdate.RemotePath = "http://www.noteme.com/Wokawidget/"
With mobjUpdate.Products .Clear
.Add "MDACS", "MDAC Version v2.5", "2.5.1"
.Add "RESUME", "Wokawidgets Resume", "2.5"
.Add "IMAGE", "Splash Screen Image", "18"
.Add "OFFICE", "MS Office Components", "3.1.0054"
.Add "TICKICON", "Tick Icon", "5"
End With
mobjUpdate.DownloadUpdates
And then just trap the UpdatesDownload event:
Code:
Private SUb mobjUpdate_UpdatesDownload()
MsgBox "Updates Downloaded!"
End Sub
After this the InstallProductUpdates is fired:
Code:
Private Sub mobjLiveUpdate_InstallProductUpdates(ByVal Product As vbLiveUpdate.Product, Installed As Boolean)
End Sub
This is where you add code to copy files to a specific location, or launch setup applications etc. If the update passes then set Installed = True.
That's pretty much all the code is needed to download multi updates.
I have added a lot of fancy UI code into my app just to demo what can be done with the code.
If click Web Download then this just demos the vbDownload project, which can be used completely on it's own in other projects to download any files from the internet.
Any comments most welcome.
New version in Post #37!!!
Woka
PS Thanks to Klienma who stuck with me and put up with my annoying questions on how to get the URLDownload API to work with a progress bar. Cheers, this code would not be possible without your help
Last edited by Wokawidget; Oct 11th, 2005 at 11:41 AM.
Re: LiveUpdate. Downloads from web and updates multiple client files.
err...yea.
The app above requires the following to be registered on the PC.
olelib.tlb
olelib2.tlb
This are installed by office though, so if the PC has office I believe this arn't needed.
Then you need to register
vbDownload.dll
and
vbLiveUpdate.dll
I am currently rewritting vbDownload.dll as I found a slightly better method that runs asynchronously. Hopefully I will get this done tonight, but not promising anything.
Re: LiveUpdate. Downloads from web and updates multiple client files.
Yeah, worked fine on my PC
Well actually, I dont need the live update feature, I might need in the future the WebDownload one.
I have seen you post this somewhere else...
I see that this version requiers the download.dll file...
If I need the WebDownload, I'll search the forums and I'll find it
I'll currently use the URLDownloadToFile api...
If I have time, and I'm not bored, I might update to yours...
Re: LiveUpdate. Downloads from web and updates multiple client files.
I want to do a little more with the liveupdate. On my web site I sell subscriptions to updated drug formularies. Users subscribe at different rates to get access to more or less informaton. My .asp download pages on the web are protected by an MS-Access password file. Code on each page checks that users are registered and allows access based on subscription level. Is there a way to have the update script in my program check the password file on my web site before allowing the download process to proceed? Examples?
Re: LiveUpdate. Downloads from web and updates multiple client files.
Originally Posted by Wokawidget
err...yea.
The app above requires the following to be registered on the PC.
olelib.tlb
olelib2.tlb
This are installed by office though, so if the PC has office I believe this arn't needed.
Then you need to register
vbDownload.dll
and
vbLiveUpdate.dll
I am currently rewritting vbDownload.dll as I found a slightly better method that runs asynchronously. Hopefully I will get this done tonight, but not promising anything.
I take it the code worked on your PC?
Did you email me today?
Woka
How are you able to register the .DLL files when they arent even present in the download?
Re: LiveUpdate. Downloads from web and updates multiple client files.
Originally Posted by Wokawidget
Errr...the VB projects do exist. U need to compile the projects into DLLs.
Woka
Ok. I compiled the group project and found a few problems that you might not be aware of.
When you click on Live Update button, and use the Wizard.
When you get the msgbox saying "Remote Information Not Found." you then get a run-time error '91': Object variable or With block variable not set. and then you get run-time error '440': Automation error.
The run-time error '91' highlights:
VB Code:
Private Sub UpdateInstallStatus()
txtStatus.Text = lvwResults.SelectedItem.Tag
End Sub
in frmWizard.frm
Last edited by BrailleSchool; May 11th, 2005 at 02:08 PM.
Re: LiveUpdate. Downloads from web and updates multiple client files.
hi. i am travelling europe at the noment and am in a cafe using a silly french keyboard.
there is no vb oàn this machine either.
I will be bqck in just over a week where I will be able to hlp you oot:
Re: LiveUpdate. Downloads from web and updates multiple client files.
Hey Woka,
The 2 tlb files you refer to at the beginning, but im a little confused?!
I downloaded the link you provided (http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip) which contained a whole bunch of *.inc files, olelib.tlb, olelib.odl, a folder named "Implements" with some more *.inc files, olelib2.tlb, olelib2.odl.
Now, I assume the 2 tlb files you were referring to are olelib.tlb and olelib2.tlb, but would I copy these to my system directory and register them there, or copy them to my app directory and reg them there?
Re: LiveUpdate. Downloads from web and updates multiple client files.
Originally Posted by Wokawidget
Copy them to the system directory.
Instructions are on that web site...arn't they?
I think I may have a newer version that doesn't require the tlbs. I'll ses if I can dig it out.
WOka
If there is a newer version that doesnt require the TLB files then i would definately be interested in it for my new app.
Also, what I would be looking to do with your code is to update the complete program (exe) can your app do this? i am sure it can. Same for .chm files.
Last edited by BrailleSchool; Oct 6th, 2005 at 09:07 PM.
Re: LiveUpdate. Downloads from web and updates multiple client files.
I'll see if I can post it tonight, but can't promise anything as the computer is out of bounds when the girlfriend is round
The app can update anything. It can simpley download a txt file and copy it into a folder if you want, or it can download a setup.exe (this is what you would do)
Once you download teh setup.exe, you launch the exe, and at the same time you close down your app and the liveupdate window.
Re: LiveUpdate. Downloads from web and updates multiple client files.
Originally Posted by Wokawidget
I'll see if I can post it tonight, but can't promise anything as the computer is out of bounds when the girlfriend is round
hehehe! whipped i see! lol!
Originally Posted by Wokawidget
The app can update anything. It can simpley download a txt file and copy it into a folder if you want, or it can download a setup.exe (this is what you would do)
Once you download teh setup.exe, you launch the exe, and at the same time you close down your app and the liveupdate window.
Woka
Sounds like a plan. I hope to get to your level of expertise one day
Re: LiveUpdate. Downloads from web and updates multiple client files.
New Version
Uses winsock to download the files instead of the URLDownload API.
This gives you true async download.
The code is exactly the same as b4, apart from the vbDownloader project has been altered to use winsock instead of the API.
Re: LiveUpdate. Downloads from web and updates multiple client files.
Hey Woka,
I've been testing out the liveupdate and I have run into some problems:
1) Whenever I set the .SaveTo path to a subfolder of a drive, or any folder OTHER THAN the root path of a drive, I get a path not found error.
2) I have made a folder on my server (at {link removed}). This folder contains Updates.txt, with the necessary information in it, as well as 2 exe files that i would like to download in the liveupdate (which are referenced in the Updates.txt file. When I run the liveupdate, it seems to find the Updates.txt file properly, but doesnt seem to download anything, and it finishes with a successful message. No downloads though.
This is the code I changed in the liveupdate demo source you supplied with the zip file:
Form_load event:
VB Code:
Private Sub Form_Load()
Set mobjLiveUpdate = New LiveUpdate
mobjLiveUpdate.server = "www.acmdesigns.ca"
mobjLiveUpdate.RemotePath = "clients/sss_lu/"
mobjLiveUpdate.SaveTo = "C:\"
End Sub
AddProducts sub routine:
VB Code:
Private Sub AddProducts()
Dim x As Integer
Dim arrProducts() As String
x = 1
With mobjLiveUpdate.Products
.Clear
Do Until GetSetting("TrinityScheduler", "LiveUpdate", x) = ""
Re: LiveUpdate. Downloads from web and updates multiple client files.
I am not sure I follow you.
I can't do much from info of "an error".
Have you stepped through the code line by line to see exactly what it's doing.
As for the 1st error. That's extremely simple to fix. However, if you are unable to fix this, then I am 110% sure that this code is a little difficult for you to implements.
Since you didn't give me the err num, or desc, I am going to assume that the error is because I am not adding "\" to the path.
Re: LiveUpdate. Downloads from web and updates multiple client files.
I can get your LiveUpdate to work for one program at a time but if there are multiple programs in the list I can only get it to update the one at the top of Updates.txt
I put this in:
LC2DOC;LiveDocs v2.1.0;2.1.0;LC2DOC.exe;False;True
LC2;LiveClient2 v2.1.0;2.1.0;LC2.exe;False;True
LU;LiveUpdate v2.1.0;2.1.0;LU.exe;False;True
and it will always say they are upto date but if I add ; at the end of the lines like:
LC2DOC;LiveDocs v2.1.0;2.1.0;LC2DOC.exe;False;True;
LC2;LiveClient2 v2.1.0;2.1.0;LC2.exe;False;True;
LU;LiveUpdate v2.1.0;2.1.0;LU.exe;False;True;
what ever program I put first in the Updates.txt list is the only one that will check for updates.
Any help? This a bug or am I doing something wrong.
Re: LiveUpdate. Downloads from web and updates multiple client files.
OK... some reason it was not seeing the newline as vbNewLine.
I just did a little work around by putting ;; at the end of a line and then changing
strData() = Split(pstrData, vbNewLine, , vbTextCompare)
to
strData() = Split(pstrData, ";;", , vbTextCompare)
Thanks for the cool program
P.S. Perhaps it was the text editor I was using. I was using Pico right on the server (a simple linux text editor).
Re: LiveUpdate. Downloads from web and updates multiple client files.
Seems to work.. still putting some finishing touches...
Not sure what it is but I get a type mismatch sometimes... I delete a line in Updates.txt and then it may work... then I put it back in and it can still work.
I will just need to fine tune my Updates.txt file... maybe I should just use notepad... hehe
Re: LiveUpdate. Downloads from web and updates multiple client files.
Ok... few small issues I am having. It all works fine when ran as a group project but as soon as it gets compiled I have a few issues.
1. The last screen where it says Thank you for using LiveUpdate. The following Wokawidget products... up-to-date. The lvwData and txtStatus widgets are empty but should have the updated files and txtStatus should say "LiveUpdates successfully... this update.
2. It seems that the StartProductInstall and the UpdatesDownloaded events are not being raised either.
Been looking into this for a few hours, but haven't figured it out yet.
Re: LiveUpdate. Downloads from web and updates multiple client files.
Well I got it to work for me but not exactly how it was suppose to. Seems like the Raised Events in the dll's didn't want to get raised to the main exe when compiled so I just changed the .dll to do the installing part for me too.
Re: LiveUpdate. Downloads from web and updates multiple client files.
Also, there is a better version at post 37, that doesn't use 3rd party components.
The new version in post 37 uses winsock, and is much more "friendly" imo.
So, if you download the zip from post 37.
Then compile vbWinsock project.
Open vbDownload project and ref vbWinsock.dll instead of the vbp and then compile
Open vbLiveUpdate project, reference vbDownloade.dll. Compile.
Open client app. Ref vbLiveUpdate.dll. compile.
Run.