Skip to content
Pavan edited this page Oct 9, 2017 · 6 revisions

The SrushtiSoft's AppUpdater is a .NET Framework component that you can use to detect, download, and apply client application updates deployed on software vendors website or any central online location. By using the AppUpdater, you can keep smart client applications up to date with little or no user intervention.

Specifically, the AppUpdater helps you in the following ways:

  • It helps you automatically pull downloading updates for .NET Framework applications.
  • Easy integration with your .NET application.
  • Simple and easy to understand component with basic functionality to help application developers to spend little time to learn about it and quickly integrate with their application.

Common Scenarios The SrushtiSoft's AppUpdater is designed to support the most common scenarios for self-updating applications:

  • It supports applications that need to be kept up to date with current executable versions.
  • Build custom pre and post update actions to run during updates.
  • It supports applications that use multiple plug-ins that users can download and activate on .NET applications.

Highlights of Version 2.0

  • Configuration driven.
  • Provide custom pre and post updates in Dotnet programming language.
  • Simple and Easy to understand and integrate with your existing .NET application.
  • Multi-threading operations for high responsive user interfaces.
  • Advertise your product online pages during update activities

How to prepare the updates XML file?

  1. Identify all dotnet assemblies and other update files for your application to ship as an update. Let us consider update file names as: MyApp.Presenter.dll MyApp.View.dll MyApp.Helpers.dll

  2. Host update files on your server and make sure they are accessible online. For example, if your website URL is http://www.myapp.com and assume you have hosted your application update files in the location, www.myapp.com/myapp/1.0/. That way valid location of each file will be http://www.myapp.com/myapp/1.0/MyApp.Presenter.dll http://www.myapp.com/myapp/1.0/MyApp.View.dll http://www.myapp.com/myapp/1.0/MyAppHelpers.dll

  3. Now we have to prepare an update xml file which will refer to above published update files. Below is an example for the first update file i.e,MyApp.Presenter.dll.

<Files> <UpdateFile SourceURI=” http://www.myapp.com/myapp/1.0/” DestinationFolder=” “ FileName=”MyApp.Presenter.dll” FileRenameTo=” “ MoreInfoURL=” “ ShortDescription=” “/> <Files>

SourceURI – is the location where update files are present. +Note: It has to end with “/”+ like in above example, for the entry http://www.myapp.com/myapp/1.0, AppUpdater will throw an error. So the correct URI will be http://www.myapp.com/myapp/1.0/ (I will rectify this in future releases)

DestinationFolder –It is the location where the update file needs to be deployed. If you leave it blank, by default, the file will be deployed to the folder where AppUpdater executor is running.
Note: Always deploy AppUpdater in the location where your desktop application executable is installed.

FileName – As you might have guessed it by now, this will be your update assembly file name.

Rest of the settings are optional. However it is recommended not to delete them from configuration file instead you should have them assigned to blank as shown above in the example.

FileRenameTo –If you are hosting your update files on some other free or partnering website, it may not allow you to host DLL or exe file which can easily be considered as threats. In such scenario you can consider renaming your update files so that they can be hosted. For example rename MyApp.Presenter.dll to MyApp.Presenter.lld. and have configuration file setting as shown below, so that AppUpdater will download your lld file and rename it to dll during update deployment on the client machine.

<Files> <UpdateFile SourceURI=” http://www.myapp.com/myapp/1.0/” DestinationFolder=” “ FileName=”MyApp.Presenter.lld” FileRenameTo=”MyApp.Presenter.dll” MoreInfoURL=” “ ShortDescription=” “ /> <Files>

MoreInfoURL – Optional, if not used assign blank as attribute value as shown in the example. This can be your product or any advertising related web link which will be shown by AppUpdater UI during download process is in progress.

ShortDescription – Optional, if not used assign blank as attribute value as shown in the example. This can be quick information text which will be shown on the update window when download process is in progress.

So, finally your updates XML file would look like this,

<?xml version="1.0" encoding="utf-8"?>

<Files xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<PreUpdate AssemblyPath=" " FullyQualifiedName=" "/> <PostUpdate AssemblyPath=" " FullyQualifiedName=" "/>

<UpdateFile SourceURI=”http://www.myapp.com/myapp/1.0/" DestinationFolder="" FileName="MyApp.Presenter.lld" RenameFileTo="MyApp.Presenter.dll" MoreInfoURL="http://www.myapp.com/" ShortDescription="Desktop updates" />

<UpdateFile SourceURI=" http://www.myapp.com/myapp/1.0/" DestinationFolder="" FileName=" MyApp.View.dll" RenameFileTo=" " MoreInfoURL=" " ShortDescription="UI updates" />

<UpdateFile SourceURI=" http://www.myapp.com/myapp/1.0/" DestinationFolder="" FileName=" MyApp.Helpers.dll" RenameFileTo="" MoreInfoURL=" " ShortDescription="Support file" />

</Files>

  1. Name the update xml file as MyAppUpdate1_0.xml and host it in the location say, http://www.myapp.com/myapp/1.0/

How to prepare Product configuration file

  1. Product configuration file will contain information about the updating product and the location of a updates XML file which will further guide AppUpdater to download and perform update operations. The product configuration file is having only one XML node (i.e, Product) and it looks like this.

<?xml version="1.0" encoding="utf-8"?> <Product xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" AppVersion="1.0.0" ProductURL="http://www.srushtisoft.com/documents/quickquest.html" UpdateVersion="1.0.0" UpdateFilesXMLPath="http://www.myapp.com/myapp/1.0/MyAppUpdate1_0.xml" />

  1. AppUpdater is only interested in UpdateVersion and UpdateFilesXMLPath.
  2. There will be two copies of Product configuration files. One on the client’s machine and another on the update server. The client machine product configuration file’s UpdateVersion value should be always lesser than the product configuration file’s UpdateVersion hosted on your application update server.
  3. The path for local and online product configuration files should be passed to the AppUpdaterPresenter class constructor (values can be hard coded or implement your own way to get this information in the background.)
  4. When AppUpdater is started, it will load both local and online product configuration files, compare UpdateVersion value, if they were found unequal, AppUpdater will read updates file from UpdateFilesXMLPath and start the update process.
Clone this wiki locally