cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
NealC804
Level 8

After Next Use Update Downloaded...Copy File to...

Instead of UpdateInstance.Execute on the completed download, I'd like to simply take the downloaded update and "place" it somewhere, such as my application folder\updates. I can then check to see if a download is in the "basket" for updating, or I can also use this system for background downloading of supporting files that don't need to be updated, but simply overwritten of existing out of date files. Is it possible to capture the downloaded file and copy/move it to a location then mark it as "done" so it doesn't appear in an update?
0 Kudos
(7) Replies
KellyF
Level 9

On a high level...

You'd catch the DownloadComplete as you do currently and rather than invoking the Execute() method of the agent, you would run your own filesystem manipulation script. However, you must somehow tell the server that you've already downloaded this file and to not show it in the downloads again. For this, you would create your update with a registry or file condition. That way, the update would be shown in the event a registry entry or file doesn't exist ( so you won't keep prompting your users ).

The trick is, now that you've created your own little basket and the condition on your update, that update will never show in the available list... so you'll have to have your own code in place to launch the install ( or file copy ) if you don't do so initially following download.

KellyF
0 Kudos
NealC804
Level 8

Thanks KellyF. However, where do I copy FROM? What is the path to the downloaded files by the update system? Any sample code (VB) would also be great!

Thanks!
0 Kudos
NealC804
Level 8

I am still patiently awaiting the answer as to where from I would copy the completed download file ISUS downloaded for my app....
0 Kudos
KellyF
Level 9

With all the work going toward the 4.0 product, I didn't have a copy of 3.x on my box. That said, I didn't think you'd want me to respond with the API I'd use on my Linux box to set the download location.

Upon first blush checking our docs, I didn't see anything that would let you programmatically find the download directory. I did see code below which may be something to you (note the "TargetDir" query item).

I'll try to get a Windows 3.x agent set up sometime today, once I'm able to close out 2 tasks which absolutely must be completed.

KellyF




Set UpdateAgent = New Agent
pszProductCode = "{C4091E43-4FC0-11D5-8C6C-00104B9747FA}"

If UpdateAgent.IsConnectedEx(pszProductCode) Then
Set UpdateCollection = UpdateAgent.EnumUpdates(pszProductCode)
Set UpdateInstance = UpdateCollection.Item(1)
MsgBox "Title: " & UpdateInstance.QueryValue(Title) & vbNewLine _
& "URL: " & UpdateInstance.QueryValue(DownloadUrl) & vbNewLine _
& "Product Code: " & UpdateInstance.QueryValue(ProductCode) & vbNewLine _
& "Display Version: " & UpdateInstance.QueryValue(DisplayVersion) & vbNewLine _
& "Id: " & UpdateInstance.QueryValue(Id) & vbNewLine _
& "Product Name: " & UpdateInstance.QueryValue(ProductName) & vbNewLine _
& "Download Size: " & UpdateInstance.QueryValue(DownloadSize) & vbNewLine _
& "CommandLine: " & UpdateInstance.QueryValue(CommandLine) & vbNewLine _
& "TargetDir: " & UpdateInstance.QueryValue(TargetDir) & vbNewLine _
& "Details: " & UpdateInstance.QueryValue(Details) & vbNewLine _
& "Description: " & UpdateInstance.QueryValue(Description) & vbNewLine _
& "Category: " & UpdateInstance.QueryValue(Category)
End If
0 Kudos
NealC804
Level 8

Thanks KellyF! I was reviewing the properties and your docs top to bottom. Is there a place for feature requests for v4? Three top ones in my book:

1) Native .NET component for the agent
2) Much better UI for the end-user to "hide" and not "cancel" messages and distinguish better between software updates and info messages
3) Built in e-mail notification of updates. For example, I may distro a web application that resides on the server, I want it to check for updates then e-mail the admin that an update is available. Your update system is more tailored for Windows apps, not Web apps

I'm sure there's more...but just to spout out a few...! I also hope you all revisit your tiers of subscriptions as it makes no sense I would pay X for a 5,000 user base when I can get the 50,000 users with IS out of the box, although a starter edition. With .NET, it's not hard to build our own update systems so you may see the market dwindle as time goes on and we move more and more to .NET. I know I only have ISUS now for my VB6 apps and all my .NET apps are using my own system, and with ClickOnce coming...even more so...

My $.02! 🙂
0 Kudos
DarthYoda
Level 2

I have a similar requirement and have used the QueryValue property of the UpdateInstance to retrieve the "LocalFileName":

sDownloadedFile = UpdateInstance.QueryValue(LocalFileName)

This provides me the path and filename of the udpate. I then use FSO to move this file to my application's Update folder. Our client checks this folder for updates and allows the user to conditionally update their data.

This is all done in a VB app, where the UpdateInstance is declared uptop as:

Public WithEvents UpdateInstance As Update

The value for sDownloadedFile (also Public) is assigned in the UpdateInstance_OnDownloadComplete event. I trigger a function called MoveFile to move this file to my Update folder.

Hope that helps!
0 Kudos
NealC804
Level 8

Great, thanks! I'm going to work with this and see what I can come up with...
0 Kudos