Gents, I hear what you're saying and sympathise. We're caught between a bit of a rock and a hard place on this one, as to write documentation that dealt with every permutation we'd end up with a massive document that nobody ever read, so we've tried to be concise, and have to make a few assumptions i.e. when we say backup your site and database, we could provide a step by step guide to using ftp and sql server backup, but that would add a lot of documentation that many would already know, and would not be applicable in some cases e.g. intranet users, users with no sql backup.
In short, an upgrade should be simple i.e. simply unzip the new folder over the existing folder (thereby replacing any updated files, and adding the new ones).There are a few key files that we try to protect, as they have user specific settings - these are the web.config file (it contains your database connections and the encryption and validation keys that protect and encrypt user passwords), and SiteUrls.config (which can contain custom url mappings), so we don't include them in the zip with those names to stop accidental overwriting. In the case of web.config, back it up safely first, and then you should rename release.config to web.config (this ensures all new application level settings are correct), and copy back your user specific settings (connectionstring details, machinevalidationkey and machineencryptionkey) and you're done. Now when you visit the site, as the application will have recycled (when the bin folder contents changed), Dotnetnuke will detect the upgraded version, and update the database scripts accordingly.
To answer some of the direct questions:
make sure you always backup your files/database before upgrading to a new version <Does this mean simply FTP my web site locally? If all goes wrong can I simply upload the FTP'd image of my site and it will be back to normal?
just backup as you would normally i.e ftp/file copy if it's an intranet. You'll have to use whatever database server backup you have, most hosts will allow you to create a backup and restore via their control panel. You will need both a copy of the folder and all subfolders, as well as a backup of the database if you choose to revert to an earlier version.
How is a site shut down cleanly so that no users are logged in before I do the backup? Is this relevant to the hosted files or only to the database? With regards database backup which are the critical files? Or all they all critical? As many sites are hosted on remote SQL servers it isn't possible to use SQL backup statements, instead data has to be copied. How is the site shut down cleanly in a consistent state so that all data can be copied? - perhaps a SQL specific question, but on that DNN could describe>
that's up to you, some control panels offer the ability to take a site offline, or if you're using asp.net 2.0 you can drop a file called app_offline.htm to take the site offline. Alternatively, you can use the AutoUpgrade=false functionality we have built in. You need to backup both the files and the database. In terms of the database, if you're using sql, you only have an mdf and ldf file, and when you backup, the ldf is truncated down, and the mdf is backed up to a single file. Most hosts offer backup utilities, if your's doesn't you may need to look at DTS to do a backup of data.
- unzip the code over top of your existing application <I read this as it states, simply unzip the files and FTP them to the host. Is it that simple? What should I be aware of with regards to active users on the site. Sometimes FTP is flaky and times out, is there any file which is the trigger file that should be uploaded last?>
it's as simple as that. I agree sometimes FTP is flaky, theres little we can do. Many people will ftp the files twice, just in case. There is no trigger file, but when the global.asax, web.config or any file in the bin folder changes that will cause an application recycle to happen.
- browse to localhost/DotNetNuke in your web browser <This is on a local machine, what about in a hosted environment?>
where you see localhost/dotnetnuke, you will use your site address e.g. www.mysite.com- the application will automatically execute the necessary database scripts <As above, how is this managed on a live hosted server?>
it's a built in function of dotnetnuke to detect the version, and see if any scripts have to be run, this happens automatically (note: the scripts are in Providers\DataProviders\SqlDataProvider folder)
As for the 'object reference...' error, this commonly happens when a file is missing, please check you ftp'ed up all content.
BTW, there is also an installation
video at the dotnetnuke.com site that may be worth watching
Cathal