This project has moved and is read-only. For the latest updates, please go here.

Adding auto update functionality to any .net application is simple. Just follow below steps and you are ready to go.

Step – 1

Add reference of AutoUpdater.NET in your project.


Step – 2

Now following dialog appears click on browse tab and and browse for downloaded AutoUpdater.NET.dll file and click OK.


Step – 3

Now add following lines in your application’s main form.cs file.

using System;
using System.Globalization;
using System.Windows.Forms;
using AutoUpdaterDotNET;

namespace AutoUpdaterTest
    public partial class FormMain : Form
        public FormMain()

        private void FormMain_Load(object sender, EventArgs e)
            //Uncomment below line to see Russian version
            //AutoUpdater.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU");

            //If you want to open download page when user click on download button uncomment below line.
            //AutoUpdater.OpenDownloadPage = true;

            //Don't want user to select remind later time in AutoUpdater notification window then uncomment 3 lines below so default remind later time will be set to 2 days.

            //AutoUpdater.LetUserSelectRemindLater = false;
            //AutoUpdater.RemindLaterTimeSpan = RemindLaterFormat.Days;
            //AutoUpdater.RemindLaterAt = 2;


Step – 4

Prepare you AppCast XML file as follows.

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


Here version represents version of your application, url represents download URL and changelog represents change log webpage URL that appears in AutoUpdater.NET dialog when new update is available.

If you encounter any issues contact me at

Last edited Aug 28, 2016 at 6:18 AM by ravi15, version 12


gengencera Dec 6, 2016 at 3:19 AM 
Hi. I just want to ask if it is possible to apply this on an C# MVC project. If I call the AutoUpdater.Start, it returns this error:

An asynchronous operation cannot be started at this time. Asynchronous operations may only be started within an asynchronous handler or module or during certain events in the Page lifecycle. If this exception occurred while executing a Page, ensure that the Page is marked <%@ Page Async="true" %>. This exception may also indicate an attempt to call an "async void" method, which is generally unsupported within ASP.NET request processing. Instead, the asynchronous method should return a Task, and the caller should wait it.

alexkua Nov 3, 2016 at 12:40 PM 
Hi. I would like to know one thing. Is it possible to use AutoUpdater.NET for update windows nt services itself?

kstanleyk Sep 8, 2016 at 2:26 PM 
How do you update an application together with its dependencies? i.e. the class libraries that the application depends on?

carlosfer02 Jan 2, 2016 at 5:33 PM 
I downloaded the AutoUpdater from NuGet, i am trying to set it to spanish with this:

AutoUpdater.CurrentCulture = new System.Globalization.CultureInfo("es-MX");

But is not working... How can i set it to spanish?

carlosfer02 Jan 2, 2016 at 7:10 AM 
How can i change the language to spanish?

jdc20181 Oct 13, 2015 at 12:52 AM 
I get this error "namespace statements can only occur at file or namespace level" when i use the code! Please help!

jdc20181 Oct 12, 2015 at 10:29 PM 
lol, didn't see that GiUPY99

jdc20181 Oct 12, 2015 at 10:28 PM 
does this work in vb?

ravalon Jul 16, 2015 at 8:15 AM 
Hello...good project... i would ask if library check for enabled internet connection or we have to check manually...and how it work for kill the main process to install new versione...i don't understand....thanks!

guilhermewalter May 12, 2015 at 2:56 PM 
When you click to update it do not do anything, the xml this with the download link to download it does not, what can be?

ravi15 May 8, 2015 at 1:16 PM 
I recommend using an installer if you want to update multiple programs.

ravi15 May 8, 2015 at 1:15 PM 
It compares installed version with version you specified in XML.

frabo May 6, 2015 at 2:39 PM 
What version does this compare against?

a4023 Apr 15, 2015 at 4:58 AM 
To ask how to update multiple programs with online ??

stoneym Jan 6, 2015 at 9:43 PM 
No need for your If conditional. That's the whole reason for the CheckForUpdateEvent. The Updater does it's info gathering, fires the event which you can consume from your code, and it passes back an UpdateInfoEventArgs object that has all the flags you need to do any work you'd like to do. I assume the idea was that simply downloading whatever needed downloading wasn't going to get the job done. So the event is where you do any actual update work that needs to happen. I suggest dropping this in a bootstrapper whose only purpose is to process any update work you need to happen. Database scripts, registry changes, third party library updates, etc. along with your own app's binaries and supporting files.

JFD17 Oct 13, 2014 at 9:46 PM 
very nice!!

pitoloko Aug 22, 2014 at 1:14 PM 
3. Fix the spanish translation: this way

labelInformation.Text = Descargando actualización...
'$this.Text' is ok but it's lower-case, it should be title-case.

$this.Text = Recordar más tarde para actualizar
radioButtonYes.Text = Sí , por favor, recordar más tarde:
labelDescription.Text = Usted debería descargar las actualizaciones ahora. Esto sólo tomará unos minutos dependiendo de su conexión a internet y asegurará que posea la última versión de la aplicación.

buttonRemindLater.Text = Recordar más tarde
buttonSkip.Text = Ignorar esta versión
buttonUpdate.Text is ok but it's lower-case, it should be title-case.
labelDescription.Text = {0} {1} está disponible ahora. Usted tiene la versión {2} instalada. ¿Quiere descargarla ahora?


4. Just a thing that I consider a design issue, I think that will be better to change the title of the "DownloadUpdateDialog" and "UpdateForm" forms, from "Software update" to "Application Update".

then if you do that, remember to fix the spanish resources:

DownloadUpdateDialog and UpdateForm:
$this.Text = Actualización de la aplicación.

pitoloko Aug 22, 2014 at 12:44 PM 
I hate those people that asks for VB translations when they can visit one of the thousands .NET online translators.

To the author:

Very nice project but I suggest you to add these things:

1. An if conditional to determine whether an update exists, this way you will give some custom user interaction and not only your predefined interaction:

If AutoUpdater.IsUpdateAvaliable(AutoUpdater.AppCastURL)
' I want to do some things instead download the update...
End if

2. Change all those public shared vars to shared properties to follow coding conventions (it looks better in intellisense and reafirms the meaning of those members), and hide the delegate visibility.

Thanks for read.

niks121 Jul 9, 2014 at 10:59 AM 
Hello SIR,
This is so nice project
pls give me this project to version
send me on email

manasseh25 Mar 25, 2014 at 12:07 PM 
Good work. We shall expand it.

Edgar_Cantu Dec 21, 2013 at 1:28 AM 
When I call the AutoUpdater.Start("") dont do nothing, its something wrong, Im using thks

GiUPY99 Aug 27, 2013 at 10:34 AM 
I found a little bug: in the "Remember me later" doesn't appeeeeeear the app's name, but it appear AutoUpdaterTest. I'll download sources and edit them.

GiUPY99 Aug 22, 2013 at 11:42 AM 
very nice!! hre's the translation for VB.NET users:

Imports System
Imports System.Globalization
Imports System.Windows.Forms
Imports AutoUpdaterDotNET

to check for updates (VB.NET), call this method:


5uperdan Jul 15, 2013 at 11:13 AM 
This badly needs expanding before people can really evaluate the project