I vented about my problems with the App Updater Compenent in this post last night. That’s not very constructive. In the effort of helping Erik Porter compile a more detailed how-to on using this component I am going to list some of the issues I was having.
1) I only want the app to check for an update when it gets started up. Not to constantly poll for an update. And the app needs to dynamically change the URL of the webserver. That is a key part of the app in finding it’s webservices and works just fine. But because of this, I have to change the url of the AutoUpdateComponent before it fires up. I set the AutoStart property for the poller to false and in my form load I change the UpdateURL property of the component, then test to see if there are changes (if CheckforUpdates=true) and if there are, call the DownLoadUpdate function. I went around in circles with this for a long time because something wasn’t working and I couldn’t figure out where.
2) I finally just bagged the dynamic url and the explicit download. I pointed to the ip of the internal webserver and let the component just do it’s auto thing itself. It failed becase when it was doing the deep file download (finding references out of the main exe to download) it kept looking for MyApp.resources.dll. There is no such thing. Since I do use a resource file in the app, I work with System.Resources. I can’t figre out why it didn’t know that this was in the system name space. I went through my code and explicitly typed in System.Resources.whatever anyplace I used those classes. This was the problem that finally made me give up.
3) I got bit by a wierd problem. I have WebDav on on my remote server. I edited the UpdateVersion.xml file over and over. I could open the file up and see the correct data. But it kept copying the default of that file to my local drive. finally I went over to the server and opened the file up and it was the default text in there! That wasted a few hours.
4) I have some dll’s that are dynamically loaded via reflection into the application. They are not referenced anywhere. So there is no part of the component that will discover and download them. I will have to write something manual to make them get pulled in because these are the things that are most likely to cause updates – as we will be adding more and more of those dll’s into the application.
I’m sure I could work all of this stuff out, but I really needed to move on with my work.
We could really benefit from this. We have many computers on the network use this app but will have more and more people out in the field using it as well. The app knows how to find the webserver on the internal network or to find it over the internet. So if the users of the offline mode could transparently receive updates to the application as well as the new modules at the same time that they are downloading or posting their data entry, it would be golden. And if I could remove those “Update App” scripts from the internal users desktops that would be nice as well.
Sign up for my newsletter so you don't miss my conference & Pluralsight course announcements!