Click here to Skip to main content
Click here to Skip to main content

HiUpdate tools - Automatic application updates

, 19 Sep 2013 CPOL
Rate this:
Please Sign up or sign in to vote.
HiUpdateTools is a easy tools to use publish new version of your application
Introduction 

Every programmer and software creator solves one question which is how to distribute new versions of his own application. There are several ways how this can be performed, such as ClickOne from Microsoft that is integrated directly into Visual Studio or you can write similar tool by yourselves. I briefly summarize the advantages and disadvantages of ClickOne. The tool is very simple and debugged and fully integrated into Visual Studio. Unfortunately ClickOne simplicity is also its weakness. The system is not designed for larger projects, and that is for several reasons: nobody can control where the application is installed, update from ftp server cannot be performed, and publishing is not the fastest one.

Therefore, some of the programmers write their own updater. Of course, if they do not want to pay for some paid tool such as (wyBuild, AppLife Update Engine). This led me to the idea to write such update tools that takes the best of ClickOne (Integration into Visual Studio, Differential updates, etc.) and at the same time a programmer will have everything under his control. And that is how tool, which I called HiUpdateTools, has been created.

The main features of HiUpdateTools plug-in into Visual Studio

  • Integration into Visual Studio (directly from VS you can administrate and publish new versions)
  • Publishing of different types of projects WinForms, WPF, WebApplication (in preparation)
  • Publishing in several ways (ftp, file)
  • Each file is zipped before sending (less data is transmitted)
  • The files are stored separately into the destination location so that only new files can be downloaded
  • Checking the existing version on a server
  • For each published version it is possible to attach information about changes
  • Automatic Build in Release mode and version change in AsemblyInfo.cs
  • Possibility to choose which projects will be built and which versions will be updated   

The main features of HiUpdateTools.Client - client side 

  • Downloading from multiple sources (ftp, file, http, https)
  • Client for WinForm, WPF 
  • Easy integration into applications
  • Possibility to turn on automatic updates (without confirmation)
  • Differential update (only changed files are downloaded)
  • The application runs through your exe file (there is no UpdateAndRunAplication.exe)
  • Checking multiple launches of your application
  • Storing the encrypted password in the client configuration file 

Using in Visual Studio 

How to publish your application 

After installing VSX pug-in into Visual Studio, the new button which is used for calling up a dialog for setting and publication of your application, will appear in the context menu above your project.

Here you set the Application name, the Application type, the Version. You can also set the location of the server where the application should be published. 

In the Client config tab you can prepare and export the XML configuration for your application. 

Once everything is set up, you can get your application published for the first time by clicking Deploy button. In the destination location there should be something like this:

In ServerConfig.Xml file there is stored information about the version, files that are included in the current version. In the individual sub-folders there are stored zipped files for each version. 

Integration into your application 

Add into your application HiUpdateTools.Client.Win.exe and ClientConfig.Xml references and then a static property in the Program.cs class.

public static string[] Args { get; set; }  

Then fill this property in a Main method.

[STAThread]
static void Main(string[] args)
{
    Args = args;
    Application.Run(new MainForm());
}

Once this is done, just capture MainForm Load event and add the following code there.

if (!Program.Args.Contains("/noupdate"))
{
 using (UpdateChecker checker = new UpdateChecker("ClientConfig.xml",
   typeof(Program).Assembly.GetName().Version))
  {
       if (checker.Check())
          {
          checker.RunUpdate();
          Application.Exit();
          return;
          }
   }
}

Then, when you run the application and a new version of your application will be found on the server, your application will be terminated and the HiUpdateTools.Client.Win.exe application and update operation will then be launched (in the case of setting the AutoUpdate) or you will wait for launching by clicking Update button.

For more information about the project, see hiupdatetools.codeplex.com.

History    

  • 1.0.0.9
  • Fixed bug when deploy app to ftp server 
  • 1.0.0.8 
  • Added support for Visual Studio 2010 (new VSX file) 
  • The upgrade process has been moved to block TryCatch 
  • Added Error Form to display the error and send the report an error 
  • 1.0.0.6
    •  Fix remove partially unzipped files
    •  Fix exception throw in Win client app 
  • 1.0.0.5
    •  Generate ClientConfig.xml and adding to the project
    •  Set ClientConfig.xml option "CopyToOutputDirectory"= Copy if newer
    •  Fix client path not ending the backslash 
  • 1.0.0.4
    • Add Client assembly to VSX package
    • On first use, the tool is added to the reference to the client assembly
    •  Fix client application
      • Multi-instance application
      •  Run single instance of update application 
  • 1.0.0.3 First release version on 30 June, 2013
    • Add support WPF client
    • Move  publish action into separate thread  
    • Change coding of config file on the UTF-8

    License

    This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

    Share

    About the Author

    Josef Andrys
    Software Developer
    Czech Republic Czech Republic
    No Biography provided

    Comments and Discussions

     
    QuestionVS 2010 Ultimate version problem Pinmembergoldorakiller21-Nov-13 3:28 
    QuestionVS 2013 support Pinmemberkhoirom31-Oct-13 16:53 
    GeneralMy vote of 5 Pinmemberyimlu21-Sep-13 18:42 
    GeneralMy vote of 5 Pinmemberfredatcodeproject21-Sep-13 12:22 
    GeneralDeploy button doesn't work PinmemberOliver Klotz17-Sep-13 21:15 
    GeneralRe: Deploy button doesn't work Pinmembergoldorakiller20-Nov-13 13:00 
    Questionerror when extract zip file Pinmemberkhoirom31-Jul-13 22:53 
    QuestionVS2010 support Pinmemberwapwork30-Jul-13 0:32 
    AnswerRe: VS2010 support PinmemberJosef Andrys30-Jul-13 22:04 
    GeneralRe: VS2010 support Pinmemberwapwork30-Jul-13 23:14 
    GeneralRe: VS2010 support Pinmembersmalltide31-Jul-13 0:39 
    GeneralRe: VS2010 support PinmemberJosef Andrys31-Jul-13 1:35 
    GeneralRe: VS2010 support Pinmembersmalltide31-Jul-13 4:40 
    GeneralRe: VS2010 support PinmemberHeinz.Schmidt25-Sep-13 22:00 
    GeneralRe: VS2010 support PinmemberJosef Andrys26-Sep-13 0:18 
    GeneralRe: VS2010 support PinmemberHeinz.Schmidt26-Sep-13 1:24 
    GeneralRe: VS2010 support PinmemberJosef Andrys26-Sep-13 2:27 
    GeneralRe: VS2010 support PinmemberHeinz.Schmidt26-Sep-13 2:36 
    GeneralRe: VS2010 support PinmemberJosef Andrys26-Sep-13 3:03 
    GeneralRe: VS2010 support PinmemberHeinz.Schmidt26-Sep-13 3:14 
    GeneralRe: VS2010 support PinmemberHeinz.Schmidt27-Sep-13 0:00 
    GeneralRe: VS2010 support PinmemberJosef Andrys27-Sep-13 0:37 
    QuestionHiUpdateTools.Client.Win has stop working Pinmemberkhoirom29-Jul-13 22:03 
    AnswerRe: HiUpdateTools.Client.Win has stop working PinmemberJosef Andrys29-Jul-13 22:40 
    GeneralRe: HiUpdateTools.Client.Win has stop working Pinmemberkhoirom29-Jul-13 23:25 
    QuestionDeploy on a http server Pinmemberkhoirom28-Jul-13 23:35 
    AnswerRe: Deploy on a http server PinmemberJosef Andrys29-Jul-13 0:09 
    QuestionInstall app for the first time PingroupPicman122-Jul-13 8:34 
    AnswerRe: Install app for the first time PinmemberJosef Andrys22-Jul-13 20:51 
    Questionmy vote 5 Pinmemberkhoirom18-Jul-13 23:04 
    QuestionError when click Deploy button Pinmemberkhoirom18-Jul-13 21:50 
    AnswerRe: Error when click Deploy button PinmemberJosef Andrys18-Jul-13 22:29 
    GeneralRe: Error when click Deploy button Pinmemberkhoirom18-Jul-13 22:36 
    GeneralRe: Error when click Deploy button PinmemberJosef Andrys18-Jul-13 23:02 
    GeneralRe: Error when click Deploy button Pinmemberkhoirom18-Jul-13 23:03 
    Questionawsome PinmemberProgrammer Pavel18-Jul-13 0:33 
    QuestionMy vote of 5 PinprofessionalAndrea Feduzzi17-Jul-13 5:13 
    GeneralMy vote of 5 Pinmemberpita201216-Jul-13 8:34 
    GeneralMy vote of 5 PinmemberBjoern Boettcher1-Jul-13 22:09 
    GeneralMy vote of 5 PinmemberSouthmountain1-Jul-13 5:46 

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

    | Advertise | Privacy | Mobile
    Web02 | 2.8.141015.1 | Last Updated 20 Sep 2013
    Article Copyright 2013 by Josef Andrys
    Everything else Copyright © CodeProject, 1999-2014
    Terms of Service
    Layout: fixed | fluid