hog Posted June 18, 2003 Posted June 18, 2003 Inform users that a newer version is available? My theory is this, but was wondering does anyone know/use a better method. Proposed method: Users open the application on their PC. When it opens it checks it's version against the version number held within a hidden XML file on the server where all the install files are held. If the version number in the XML is newer the user is informed that a newer version is availble. 1. I presume there is an internal app version number that the app can query without the need for me to create one? 2. Still haven't done anything with XML so unsure as to how easy/hard this would be? 3. Is it possible to give the user a button that when they click it it closes the current application and installs the newer version? Thx :) Quote My website
*Gurus* divil Posted June 18, 2003 *Gurus* Posted June 18, 2003 1. System.Reflection.Assembly.GetExecutingAssembly().GetName().Version 2. Pretty easy, you can read an xml stream bit by bit using XmlTextReader or you can load it all at once and query specific nodes for the information you're after. Use the WebClient class to actually download the file. 3. Is the only hard part, a common method is to create a loader program which first checks if a never version has been downloaded (to a temporary file name), and if so deletes the original exe and replaces it with that file. The file is then run. Quote MVP, Visual Developer - .NET Now you see why evil will always triumph - because good is dumb. My free .NET Windows Forms Controls and Articles
hog Posted June 18, 2003 Author Posted June 18, 2003 Thn Divil. So regarding 3. are you saying that only the .exe file would require replacing so no setup.exe would need to be run? Quote My website
*Gurus* divil Posted June 18, 2003 *Gurus* Posted June 18, 2003 It depends what's changing I suppose. If you just have a new exe file with no new dependancies, then yeah, just replacing it will be fine. Quote MVP, Visual Developer - .NET Now you see why evil will always triumph - because good is dumb. My free .NET Windows Forms Controls and Articles
hog Posted June 18, 2003 Author Posted June 18, 2003 Thx Divil. I'm not getting this XML stuff completely at the moment...this is what I have so far: Private Function CheckVersion() As Boolean Dim docVersion As XmlDocument = New XmlDocument docVersion.Load(gstrVersionXML) Dim rdVersionReader As XmlNodeReader = New XmlNodeReader(docVersion) While rdVersionReader.Read If rdVersionReader.Name = "currentversion" Then MessageBox.Show(rdVersionReader.Value) End If End While End Function This is the XML file content <?xml version="1.0" encoding="utf-8" ?> - <mascsversion> <currentversion>1.0</currentversion> </mascsversion> Thing is when I run the code it displays two blank message boxes instead of 1 showing the value 1.0 Where am I going wrong?? Quote My website
archer_coal Posted June 18, 2003 Posted June 18, 2003 re XML I found a nice XML class you can add to your project by Stan Shultes of vbexpert.com It's pretty simple to use and it comes with instructions, resoning, and an INI converter. I've uploaded it [HERE] Read the Readme.txt and the listings.rtf and everything should be pretty easy from there. Quote
Leaders quwiltw Posted June 18, 2003 Leaders Posted June 18, 2003 hog, you might want to check out some of the articles here: http://www.windowsforms.net/Default.aspx?tabindex=3&tabid=40#Deployment Looks like there are several solutions that already do what you want. The "Updater Component" article looks very much like what you're describing. Quote --tim
iebidan Posted June 18, 2003 Posted June 18, 2003 Well actually your idea doesn't sound so bad, I did something similar for an app we're developing, but only for internal use, if you want to do something outside your network you can use webservices. 1. Create a webservice in your webserver that responds to all the requests made by the users, as simple as you can imagine, install in the server and is ready to be used 2. In your app, first detect the internet connection, if not present handle the error, second, everytime the user uses the app or every 1 hour or 2 (or whenever you think will be OK) query the webservice and check the version. 3. If the version is the same continue, if the version in your server is newer the app sends the user a message to download the new version and install it. Also you can give the user options to download it and install it later... If your app is made only for Windows XP, you can take advantage of BITS (Background Intelligent Transfer Service), using this you don't need to tell the user that a new version is available, you just download it , and when is ready for install tell the user and install it, like Windows Update. you can have more information about BITS in MSDN, search BITS and you'll get an example well documented on how to do it Quote Fat kids are harder to kidnap
hog Posted June 18, 2003 Author Posted June 18, 2003 Thx for the advice chaps, this is how I'm doing it for now: Private Function CheckVersion() As Boolean Dim xPath As XPathNavigator Try Dim xpathVersion As XPathDocument = New XPathDocument(gstrVersionXML) xPath = xpathVersion.CreateNavigator xPath.MoveToFirstChild() gstrUserVersion = Microsoft.VisualBasic.Left(System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString, 3) If gstrUserVersion = xPath.Value Then Return True Else gstrNewVersion = xPath.Value Return False End If Catch objException As Exception ShowError("Location: Class frmMain" & ControlChars.CrLf & ControlChars.CrLf & _ "Procedure: CheckVersion() " & ControlChars.CrLf & ControlChars.CrLf & "Error Text: " & _ objException.Message) Return True End Try End Function It's on a LAN so will suffice me thinks:) Quote My website
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.