PDA

Click to See Complete Forum and Search --> : LiveUpdate. Downloads from web and updates multiple client files.


Wokawidget
Jan 8th, 2005, 02:15 PM
Ok, finally I have produced some code that I can post here.

This software allows developers to add "Live Update" features to their applications.

Features:

Multi app/file auto update at the same time
Auto update silently in background
Use wizard to control live update
Retrieves remote file info before downloading
Ability to add new, previously uninstalled, software components to server for download
Make updates mandatory
Allow users to select which updates they would like to download
Progress status of downloads
Notification of download problems.
Ability to see which updates failed/passed download.
Cancel update download
Authenticate username and password


One thing you need to do is to go to this web site:

http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip

and download the 2 tlb files and install them using the instructions provided.

These tlb files are used for the call back to allow the download to be shown in a progress bar, and to allow the user to cancel the download.

In the example attached the app is looking at NoteMe's server...cheers to NoteMe for letting him use his server :wave:

Here's what to do.

If you want to use your own files, on your own server, and not use NoteMes test server then do the following:

Copy the files you want to download to your web server. If you have IIS on your PC you can create a virtual directory and then use:

http://LocalHost/MyVirtualDir/

as the remote path.

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:

MDACS;MDAC Setup v2.6;2.6.3;MDAC_Setup.exe;False;False
RESUME;Wokas Resume;4.1;ResumeTEST.doc;False;True
OFFICE;MS Office Components;3.1.0056;Office.exe;True;False
ACC;Accounting Software;1.0.5;AccSetup.exe;False;True
TICKICON;Tick Icon;3;TickIcon.gif;false;False

Each column is split in VB using the ;

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:

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.


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:

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:

Private SUb mobjUpdate_UpdatesDownload()
MsgBox "Updates Downloaded!"
End Sub

After this the InstallProductUpdates is fired:

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 :wave:

mike2
Jan 14th, 2005, 12:57 PM
Very nice:thumb:

I have a question:
If I want to send my program to someone, will I have to send him the tlb files too?

Wokawidget
Jan 14th, 2005, 01:00 PM
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

mike2
Jan 14th, 2005, 01:14 PM
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 :afrog:
I'll currently use the URLDownloadToFile api...
If I have time, and I'm not bored, I might update to yours...:bigyello:

Wokawidget
Jan 14th, 2005, 01:52 PM
I use the URLDownload API function too.
I use the tlb files for a call back so that I can control a progress bar with it.

I am not happy with this function though as it's not asynchronous :(

The web download is the vbDownload.dll
If you don't want to use the dll just add the download class directly into your app.

Woka

tbyrne
Mar 12th, 2005, 07:04 AM
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?

Thanks
tbyrne

DarkX_Greece
Mar 12th, 2005, 07:15 PM
I like your sample! Helped me!

Wokawidget
Mar 12th, 2005, 07:40 PM
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?

Thanks
tbyrne
You could use the inet control, or winsock, to open an asp page which will then validate the password and username, you write the response to the page. Then when u receive the page, you check to see if the login was successfull.
I will try and dig out some code.

Woka

Wokawidget
Mar 12th, 2005, 07:41 PM
I like your sample! Helped me!
Cheers :)

WOka

tbyrne
Mar 14th, 2005, 07:38 PM
Thanks Woka
All the code/examples you can find is greatly ppreciated.

Tbyrne

aijii
Apr 5th, 2005, 07:03 PM
I have a question -

Lets say my application, called aijii.exe were to invoke a liveupdate, and one of the files to be updated was aijii.exe... how would I actually successfully copy this over itself whilst the program was still running ?

Is there another way to do this ?

Wokawidget
Apr 5th, 2005, 07:22 PM
This is a good question.
It's the same if you download an update for vbLiveUpdate.dll :D

You must use an installer like Inno Setup to install your app.
This creates an install package like most apps you download from the web have.
If the Setup package can't replace a file at runtime, because it's being used, then it tries to restart your system...like some setups do.
When the system restarts the old files are over written with the new.

There is a link to the Inno homepage in my sig.

Woka

aijii
Apr 5th, 2005, 07:54 PM
Our app is currently using installshield, I assume the same applies.....

So I guess we just have liveupdate or webdownload download the patch file and execute it from the application... OR we could just have a run.exe file that the user executes, this first checks for updates, then executes our main application......

hmmm..

Wokawidget
Apr 5th, 2005, 08:01 PM
Hahaha...Which method you gonna pick?

Yea, install shield will do it for ya.

I'd go for run.exe then you can add:

If App.PrevInstance Then
MsgBox "LiveUpdate is currently running."
Else
'code to do liveupdate stuff
frmMain.SHow
'etc
End If

Woka

aijii
Apr 5th, 2005, 08:28 PM
Not sure yet - I haven't quite played too much with your code yet... I still have a few question marks.....

The business rules here are that the user MUST upgrade, but having it reboot their system isn't really preferable as the software will be running on point of sales systems... I'm thinking the run.exe solution is the easiest....

just a quick question - how hard will it be to have the auto live update use the progress bar like in web download ? or have the webdownload check to see if updates are required ?

Wokawidget
Apr 6th, 2005, 02:48 AM
Errrr...When live updates runs in the back ground I just haven't given it a user interface. Sure it's 100% possible...just add a progress bar nad trap the evens of the liveupdate object...:confused:

Errr...it already does check to see what updates are required...:confused:

Woka

aijii
Apr 6th, 2005, 07:04 PM
Err .. sorry i worked this out myself anyway .. should have just deleted the post.. sorry i tend to get a bit lazy and post questions up before i can be bothered trying it out.

Anyway, works very well, cheers!

Just a question, in 'installproductupdates', how do I know what the actual filename of the file that corresponds to that update is ?

EDIT: rephrase- how does the application know what the filename is ... short of hardcoding it i mean..., also how does it handle authentication ?

BrailleSchool
May 11th, 2005, 12:24 PM
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?

Wokawidget
May 11th, 2005, 12:37 PM
Errr...the VB projects do exist. U need to compile the projects into DLLs.

Woka

BrailleSchool
May 11th, 2005, 12:55 PM
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:

Private Sub UpdateInstallStatus()
txtStatus.Text = lvwResults.SelectedItem.Tag
End Sub

in frmWizard.frm

bat711
May 26th, 2005, 12:28 PM
I had/have the same problem...

Wokawidget
May 26th, 2005, 02:19 PM
Soooooooo sorry for the late reply :(
Been working really hard and have neglected my projects...Boooo bad Woka *SLAP*


Private Sub UpdateInstallStatus()
If Not (lvwResults.SelectedItem Is Nothing) Then
txtStatus.Text = lvwResults.SelectedItem.Tag
End If
End Sub

That should do the trick :D

Woka

bat711
May 26th, 2005, 05:09 PM
Looks like it's working well...

:thumb:

Inuyasha1782
May 30th, 2005, 11:54 PM
Not to sound newbish or anything, but do you think you can explain this a little more. I have been looking for an auto-update for awhile now. As you can see I have finally found one, but I cant quite understand how to use it. What I mean is like some easier instructions on using it. It sounds good from the feedback, really need it :ehh:

DJHotIce
Jul 31st, 2005, 12:01 PM
What would be the best way to add this to my application.

Wokawidget
Aug 2nd, 2005, 05:51 AM
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:

woka

DJHotIce
Aug 6th, 2005, 01:33 PM
Thanks Much Woka! I love the app though! :thumb:

Wokawidget
Aug 24th, 2005, 04:02 AM
Sorry for the late replies :(

To add this to your app just compile the vbLiveUpdate dll, and then reference this into your app and then use it like I have in my demo app.

You app would then add products and control the functions in the dll.

Is that what you mean?

This project isn't easy. It really isn't for people who don't know VB :(

I can't really give huge chats on how it works etc, and how to get it running in everyones apps, as I would be doing this full time.

If you have any questions can you make them I little bit more specific as it's much easier for me to answer them then :D

Wooof

adamm83
Oct 6th, 2005, 06:56 PM
Hey Woka,

The 2 tlb files you refer to at the beginning, but im a little confused?! :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?

A little help please :(

Wokawidget
Oct 6th, 2005, 07:14 PM
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

adamm83
Oct 6th, 2005, 07:17 PM
A newer version of the live update?

BrailleSchool
Oct 6th, 2005, 09:02 PM
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.

Wokawidget
Oct 7th, 2005, 03:11 AM
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 :D

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

BrailleSchool
Oct 7th, 2005, 06:53 AM
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 :D
hehehe! whipped i see! lol!

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 ;)

adamm83
Oct 11th, 2005, 11:20 AM
Hey Woka,

:wave: Just wondering if you got around to digging up the files for liveupdate. Don't mean to rush you.

Thanks

Wokawidget
Oct 11th, 2005, 11:36 AM
Sorry. Just got back from Dublin, Ireland. Had mad weekend for my birthday. GF suprised me with tickets.

Anyways, the code is attached below
Woof

Wokawidget
Oct 11th, 2005, 11:39 AM
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.

Woka

adamm83
Oct 11th, 2005, 12:22 PM
Thanks woka!!! :thumb: and happy (belated) birthday!!

adamm83
Oct 11th, 2005, 12:25 PM
Sorry, one more question. Does this source require the 2 .tlb files?

edit:
and can the liveupdate download from an FTP server? :confused:

adamm83
Oct 11th, 2005, 03:08 PM
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 (http://link_removed) 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:
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:
Private Sub AddProducts()
Dim x As Integer
Dim arrProducts() As String
x = 1

With mobjLiveUpdate.Products
.Clear
Do Until GetSetting("TrinityScheduler", "LiveUpdate", x) = ""
'arrProducts = Nothing
arrProducts = Split(GetSetting("TrinityScheduler", "LiveUpdate", x), ";")
.Add arrProducts(0), arrProducts(1), arrProducts(2)
x = x + 1
Loop
End With

End Sub


The rest is the same as the demoUI code from the example vb project you made.

Any help would be appreciated! Thanks.

Wokawidget
Dec 5th, 2005, 03:24 AM
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.

Woka

Flattery
Mar 29th, 2006, 01:04 PM
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. :eek2: :confused:

Wokawidget
Mar 29th, 2006, 01:25 PM
Can you post the lines of code where you add your products to the Products object?

Woka

Flattery
Mar 29th, 2006, 01:38 PM
.Add "LC2", "LiveClient2 Version v1.0.0", "1.0.0"
.Add "LC2DOC", "LiveDocs v1.0.0", "1.0.0"
.Add "LU", "LiveUpdater Version v1.0.0", "1.0.0"

If I change the order in Updates.txt it will update what ever file is at the top.

Flattery
Mar 29th, 2006, 03:06 PM
even if I use the default program only changing the domain and then put your example Updates.txt into domain/TestFiles/Updates.txt

It still doesn't work right. Says everything is upto date...

Flattery
Mar 29th, 2006, 03:15 PM
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).

Wokawidget
Mar 29th, 2006, 03:35 PM
Yes that would explain both errors u explained above, and why adding ; at the end would fix it.
I just used notepad :D

I really should write this in .NET?

I think you're the 1st person to use it properly. I take it it works then?

Woka

Flattery
Mar 29th, 2006, 03:48 PM
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

Flattery
Mar 29th, 2006, 07:10 PM
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.

Flattery
Mar 29th, 2006, 08:25 PM
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.

works...

tony007
Apr 17th, 2006, 12:03 AM
Hi all. I am trying to use the first LiveUpdate.zip file projects and when ever i try compile and run them i get the following erros:


Error1:test and vbDownload project error:

compile error:

can not find project or library

ok help

points to :
Private mobjBinding As IBinding


-----------
Error2:vbLiveUpdate project error

compile error:

can not find project or library

ok help
points to :
WithEvents mobjDownload As Download

-----------------------------------
Error2:Demo UI project error

compile error:

can not find project or library

ok help
points to
Private WithEvents mobjDownload As Download

I be happy if any of u guys show me how to fix these errors and be abel to test the program.Thanks

Wokawidget
Apr 20th, 2006, 11:49 AM
Sry for my late reply. Been really snowed under with work.

You need to compile the seperate projects 1st. Then reference the dll from the client app instead of the vb project.

Woka

Wokawidget
Apr 20th, 2006, 11:53 AM
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.

Woka

tony007
Apr 20th, 2006, 02:44 PM
Sry for my late reply. Been really snowed under with work.

You need to compile the seperate projects 1st. Then reference the dll from the client app instead of the vb project.

Woka
Many thanks for u reply. could be more specific which one should i compile first. i tried all of them one by one and i got those errors!!

pic of the files in zip file
http://i5.photobucket.com/albums/y180/method007/file.jpg.

could u tell me which one u mean by client app so that i need to refrence the dll from ? do i need change what line to make it refrence to dll?Thanks

Wokawidget
Apr 20th, 2006, 05:42 PM
That is not the zip from post 37.

Download from Post 37, then f9ollow instructions above.
Post 37 uses a project called vbWinsock.

WOka

tony007
Apr 20th, 2006, 06:45 PM
That is not the zip from post 37.

Download from Post 37, then f9ollow instructions above.
Post 37 uses a project called vbWinsock.

WOka

Thanks now i downloaded the right one . Could u tell me how i can ref vbWinsock.dll instead of the vbp ? where should i look for it?Thanks

Wokawidget
Apr 21st, 2006, 03:24 AM
Go to the menu:

Project--->References

Then look for the dll in the list.

Woka

tony007
Apr 21st, 2006, 05:33 AM
Go to the menu:

Project--->References

Then look for the dll in the list.

Woka

Thank u for u reply. i tryed as pic bleow and browsed for the compile dll but when i try to compile or run it i keep getting this widow again and again !! and says compile error and can not find the project or library and points to

Private WithEvents mobjSocket As Socket

I even placed vbWinsck.dll inside the same folder as vbDownloader folder but no luck!!
http://i5.photobucket.com/albums/y180/method007/refrence.jpg

Wokawidget
Apr 21st, 2006, 05:46 AM
untick the vbWionsock.Vbp click ok
Go back to references and look for either vbWinsock or Wokawidgets - vbWinsock.
Can't remember what name it will be under.

If ytou have actually compiled vbWinsock project then this will be in the list.
If for what ever reason you cannot find it, then browse to the dll, and NOT the vbp.

Woka

tony007
Apr 21st, 2006, 06:32 AM
i manged to create vbLiveUpdate.dll where should i place it and furthermore which one u refere to as client app when u say :

Open client app. Ref vbLiveUpdate.dll. compile

which one of the files in the pic i need to refrence it to vbLiveUpdate.dll?Thanks


http://i5.photobucket.com/albums/y180/method007/client.jpg

Wokawidget
Apr 21st, 2006, 07:48 AM
the demoUI project is in the vbLiveUpdate folder.
But u should write your own UI for this.
The dlls acan be placed anywhere on the PC...as long as they are registered with the registry. This is doen automatically when u compile, or u can use RegSvr32 "path to dll" to manually register dlls.

I would suggest you find some resources onj the web about using dlls in apps, as you seem to be a little bit new to it, and this project si certainly quite complicated.

woka

dsfugabanjr
May 31st, 2006, 02:39 PM
Hi All,

This LiveUpdate application by Wokawidget, can I use it for a local network using shared folders? Say for example, I have a file name InfoReportXP.exe and is located in \\PC1\INFOREPORTXP, how can I take advantage of this LiveUpdate program without connecting to the internet since the file is located in a Local Area Network? Does this program allows checking the date of modification instead of checking the version of a file?

Please advise...

Thanks,
Doms

Wokawidget
May 31st, 2006, 02:51 PM
i am not sure. give \\PC1\ a try instead of the IP address.
I was thinking of modified date, but then I decided against this. U can code that in yourself, it's entirely up to you, but the code currently works off a version number.

Woka

adamm83
Jul 12th, 2006, 12:29 PM
ok hey woka,

I put the LiveUpdate aside for a little while and now I'm back on it.
I seem to be having the same problem as Flattery where it's not detecting the new line in the text file.

I am testing with your demoUI, the updates it comes with and the Updates.txt file supplied as well. When it downloads the Updates.txt to the C:\ drive and processes the data, it does not detect the line break properly in the SetUpdate function, so it cannot split the updates properly. I will try adding ;; at the end of each line like flattery did and use the following code in the function:

strData() = Split(pstrData, ";;", , vbTextCompare)

EDIT 1:
Ok that works, i put it all on 1 line and separated each update by a double semi-colon ( ;; ). The txt file doesn't look as tidy as originally, but it works!

EDIT 2:
Is there any way to show what version it's downloading/updating to, rather than just saying that it updated the product? So lets say the user has version 1 on their computer, and they check for the updates, and there is a version 2 available. Before the user clicks next to download the update, it would list the product being updated and the version that it's updating to. Is that possible?

Also, is there any way to run the live update silently, so like quickly check if an update is available everytime the user starts the program, and if there is an available update, it would run the LiveUpdater GUI then.

EDIT 3:
one more question. How do I add updates to install to mobjLiveUpdate_StartProductInstall? Would I do something like this?:

Private Sub mobjLiveUpdate_StartProductInstall(Product As vbLiveUpdate.Product, Success As Boolean)
Dim iExit As Long

Launch(mobjLiveUpdate.SaveTo & Product.Update.FileName)
Success = True
End Sub
Is that correct?

EDIT 4:
arrggg... ok I'm getting an annoying problem. When I open the VB group of projects that came with the zip file and run the demoUI, the liveUpdate works PERFECTLY.... BUT When I compile the DLLs and run the demoUI separately using the compiled DLLs as references, the liveUpdate works fine until the end. It finds the updates, downloads the updates, but when it gets to the last page where it shows which updates were downloaded, it doesn't show anything in the list. No errors. Why does it work fine when I run it in the vb group, but it doesn't work when I use the compiled DLLs as a reference.

The only changes I made were to the vbLiveUpdate project. I changes the line (see the code above ... strData() = ....) And that works fine in the vb group. Any ideas? Sorry to post so many questions.

Wokawidget
Jul 27th, 2006, 06:21 PM
1) Not sure why. Worked perfectly well with the text file and code I used. I used notepad to create the text file.

2)
a) Yes, in the UI just display the version number property. You will have to add a property to the update class to handle this and populate it from the text file.

b) Silent...errr....yes. Look at my demo as it has this in there.

3) Yes, or you could combine that with my multi threading code to run it aync. The link is in my sig and full source code and demo code is available to download.

4) No idea. Add MsgBox's to parts of the code and use them to trace when it gets up to.

Alas I do not have VB6 on my PC anymore and so cannot run this code :(
I'll get it put back on soon.

Woof

SmartySoft
Nov 24th, 2006, 08:48 PM
Thanks for the cool program Woka

i have a problem with my app
i want to liveupdate a database on the users PCs with last new rows i added to it
could your app help me

Wokawidget
Nov 25th, 2006, 10:13 AM
I supose yea.

What u can do is have an Update.txt file or something that either contained the raw data, or some SQL scripts to update the DB.

Then just use the liveupdate app to download this txt file....once downloaded then your app can do what ever it wants with the file/data in the txt file.

Woka

zeem
Nov 25th, 2006, 11:29 AM
goood work


:afrog:

SmartySoft
Dec 9th, 2006, 01:34 AM
thanks dear I will try

Alvanian
Dec 6th, 2007, 05:38 PM
I realize that this is an old thread although Ive been trying to use this script. Got it working and all and trying to modify it slightly to allow each file to specify its own filepath in the updates.txt This is what I came up with. I modified the OpenFile() sub in download.cls to this.

Private Sub OpenFile()
Dim temp As String
Dim parse() As String
If Dir(mstrLocalPath) = vbNullString Then
Err.Raise 76
End If
If Not (Dir(mstrLocalPath & GetFilename(mstrRemoteFile)) = vbNullString) Then
Kill mstrLocalPath & GetFilename(mstrRemoteFile)
End If
If InStr(GetFilename(mstrRemoteFile), "Updates.txt") > 0 Then
mstrLocalPath = "C:\Program Files\Sony\Station\Infantry\nodbot\"
mlngFreeFile = FreeFile
Open mstrLocalPath & GetFilename(mstrRemoteFile) For Binary Access Write Lock Write As #mlngFreeFile
Else
Open "C:\Program Files\Sony\Station\Infantry\nodbot\Updates.txt" For Input As #1
Do Until EOF(1)
Line Input #1, temp
parse = Split(temp, ";")
If InStr(GetFilename(mstrRemoteFile), parse(3)) > 0 Then
mstrLocalPath = parse(6)
End If
mlngFreeFile = FreeFile
Open mstrLocalPath & GetFilename(mstrRemoteFile) For Binary Access Write Lock Write As #mlngFreeFile
Loop
Close #1
Kill "C:\Program Files\Sony\Station\Infantry\nodbot\Updates.txt"
End If
End Sub


Anybody have any other ideas?