Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Auto update .NET applications [duplicate]

We are in a process of developing a really complex system consisting of several WCF services, ASP.NET MVC applications, administration tools (Windows Forms apps)... Some of those, will have instances running on several servers. We are looking for a good auto update solution for such a system. Most likely, we would need a separate auto update application (service) that will do the job, or some centralized admin application that will know about versions of all installed instances and do the update remotely. Is there any good product/library, made for this purpose, that you know about or had experience with?

like image 955
Aleksandar Vucetic Avatar asked May 04 '09 10:05

Aleksandar Vucetic


People also ask

Does .NET auto update?

NET 5.0 and . NET 6.0 are currently offered to server operating systems via Windows Server Update Services (WSUS) and Microsoft Update Catalog but not the Automatic Updates (AU) channel. You can now get your server operating system automatically updated by opting in for this behavior.

How do I automatically update apps in Windows?

Microsoft Store on Windows can automatically install app updates. Select the Start screen, then select Microsoft Store. In Microsoft Store at the upper right, select the account menu (the three dots) and then select Settings. Under App updates, set Update apps automatically to On.


2 Answers

Personally I'm using a very simple methodology for any kind of auto-update:

  • Have an installer
  • Check the new version (simple WebClient and compare numbers with your current AssemblyVersion)
  • If the version is higher download the latest installer (should be over SSL for security reasons)
  • Run the downloaded installer and close the application. (in this stage you need to have admin privileges if your installer requires you to be an admin)

The installer should take care of the rest. This way you'll always have the latest version and an installer with a latest version.

like image 148
dr. evil Avatar answered Sep 21 '22 04:09

dr. evil


Let me start by saying I'm the founder of the company that has a complete updating solution which includes:

  • An open source updater, wyUpdate, written in C# [BSD license]
  • The open source AutomaticUpdater control that you can just add to your .NET app's form [LGPL license]
  • wyBuild is used to build patches and manage your versions

wyUpdate handles all of the Vista/Windows 7 UAC problems and all the file permission problems that inevitably pop up when you're trying to update complex software.

We also offer free licenses to wyBuild for open source projects, but if you're just looking to build your own updater you can cannibalize our source code freely.

That being said, if you want to build your own updater here are some tips:

Building your own updater

A good place to start is the wyUpdate and AutomaticUpdater source code I mentioned above. You can cannibalize it and use it for your own purposes. Some of the algorithms it contains:

  • Full Windows Vista / Windows 7 UAC support
  • Ability for limited users to check and then update if they have credentials
  • Support for wonky corporate inernet. (If you've ever worked with a corporation this is a real problem).
  • Quick extracting, patching, and installing of files.
  • Registry support.
  • Roll back files & registry on error or cancellation by the user
  • Self-update (no files left behind)

We also have the file specifications here.

Automatic updating

Since being automatic is a requirement let me tell you how we do it with our AutomaticUpdater control.

We use named pipes to communicate between the standalone updater (wyUpdate) and the Automatic Updater control sitting on your program's form. wyUpdate reports progress to the Automatic Updater, and the Automatic Updater can tell wyUpdate to cancel progress, to start downloading, start extracting, etc.

This keeps the updater separate from your application.

In fact, the exact named pipes C# code we use is included in an article I wrote a little while back: Multi-process C# app like Google Chrome.

like image 27
Wyatt O'Day Avatar answered Sep 23 '22 04:09

Wyatt O'Day