Auto Update

This feature should allow update BlogEngine.NET version 3.0 and up with a click of the button. Versions prior to 3.0 must be updated manually. To be clear, one would need manually update to 3.0 and after that will be able to get updates automatically.

Requirements

Because update will replace most of the files with new versions, application must have write permission on entire blog directory.

Conventions

  1. Folders "App_Data" and "Custom" will NOT be touched by update process. These folders should be used for storing user data and custom code.
  2. Only known application files inside the "bin" folder and in the blog root will be replaced with new versions. If you have custom DLLs in the "bin" or custom page in the blog root, they will be safe.
  3. All known application folders, like "Account", "Admin" etc. will be dropped and replaced with new versions.

These rules are intentionally simple and easy to understand and follow. Basically they encourage people do not mix custom and application files so that upgrade mostly comes down to blowing away old and moving in new application. There are few exceptions (web.config etc) but main logic is very straightforward.

Steps

When update is available, message will be displayed on the dashboard.

Clicking "upgrade" button will redirect to upgrade page that looks like this.

As process runs, should see confirmation on every step.

Folder structure changes

To simplify update and make it safe and stable, some folders were moved from previous locations.

 User controls Custom/Controls

User controls, can be used in regular(.aspx) themes

App_Code/Extensions  Custom/Extensions  Custom extensions 
 Media Custom/Media  HTML5 media player files 
Themes   Custom/Themes Custom themes 
Widgets  Custom/Widgets  Custom widgets 

Database providers

When updating blog that uses database provider, update process will determine what provider is used by examining web.config and will pull new provider specific web.config from setup folder. It will also keep existing connection string in place, so no need to manually update it. However, if you have other modifications to web.config they won't be preserved and need to be updated manually.

Rollback

If update process unexpectedly fails, due to locked files, system shutdown etc. or new version does not work for you, manual recovery will be needed. Auto rollback will be added later, but manual rollback is easy and can be done in few steps.

  1. Delete all files and folders except "setup", "App_Data" and "Custom".
  2. Old blog files saved to /setup/upgrade/backup/old - move them back to blog root.

Manual update

Manual update can be performed equally easy.

  1. Download latest version
  2. Delete all except "App_Data" and "Custom".
  3. Copy new version, except "App_Data"  and "Custom".
  4. If using database, copy web.config for corresponding provider in "setup" folder and update connection string.