After moving to a Jenkins installation that runs as a service. I noticed it now had the option to download new versions of itself and upgrade. I tried that with 1.452 and was a bit confused that it restarted but still showed 1.452 as version number. But also gives me the option to downgrade to 1.452.
After a couple more tries I think I can conclude that what happens is that it downloads the new version just fine (as jenkins.war.tmp) and copies the current version fine as well (jenkins.war.bak). But it never actually gets around to replacing the current running version with the new one.
This appears to be the relevant part of the jenkins.err.log:
INFO: Starting the installation of jenkins.war on behalf of kpe
Mar 19, 2012 9:17:19 AM hudson.model.UpdateCenter$UpdateCenterConfiguration download
INFO: Downloading jenkins.war
Mar 19, 2012 9:17:19 AM hudson.model.UpdateCenter doSafeRestart
INFO: Scheduling Jenkins reboot
Mar 19, 2012 9:17:40 AM hudson.model.UpdateCenter$DownloadJob run
INFO: Installation successful: jenkins.war
But I am a bit confused on how this would ever actually work on Windows? Since files are generally locked up pretty tight. So replacing or overwriting a file that Java is actively using would be practically impossible. And instead it would require some sort of utility running before starting Jenkins to replace the war file with the newly downloaded one.