General Updater Tasks: * Elevation for Linux [done] * Set file permissions for Unix [done] * Elevation for Mac [done] * Basic functionality for Mac [done] * Unit test working under Mac [done] * Set file permissions for Windows [skipped for now] * Basic functionality for Windows [done] * Elevation for Windows [done] * Win32 UI for Windows [done] * Cocoa UI for Mac [done] * Gtk or Qt UI for Linux [done - GTK UI] * Unit test working under Windows [done] * Start new application once installation is finished [done] * Use message box for errors [done] * Newly installed binary needs to be launched un-elevated [done] * See if it is possible to overwrite application files that are in use on Windows [done - it is possible] * Fix package dir cleanup failing on Win32 due to executable being in use [done] * Test installing update if Microsoft Word with Mendeley plugin is active * Write log file entries to an actual log file [done] * Test updater on an old Windows system without Visual Studio installed and statically link C++ runtime libraries if necessary Mendeley-specific Updater Tasks: * Use the Mendeley icon for the window on Windows [done] * Use the Mendeley icon for the binary on Windows [done] * Use the Mendeley icon for the window on Mac (N/A? - No icon in window decorations on Mac) * Use the Mendeley icon for the window on Linux * Advise the user to download Mendeley Desktop afresh from http://www.mendeley.com/download-mendeley-desktop in the event of an updater problem * Exclude Uninstall.exe from updates on Windows - see comments in utilities/autoupdate-setup/main.cpp in the desktop source tree. * Updater binary needs to be signed under Windows Mendeley Desktop <= 1.0 auto-update system compatibility: * Support for MD <= 1.0 updater command-line syntax [done] * Backwards compatible structure for XML file [done] Auto-update preparation tools: * Tool to create .zip packages for a release and upload them to S3 [done] * Tool to generate backwards-compatible structure for XML file [done] * Tool to generate new structure for XML file [done] Nice To Have ============ Update size: * Support for applying binary patches (eg. with bspatch/bsdiff) Telemetry: * Call a project-specific URL to report successful/failed update installation and starting of new app after update Source: * Ensure no Mendeley branding in standalone project and publish code Reliability: * Create a lock to prevent Mendeley being started whilst updates are in progress and to prevent multiple updates being run at once. * Consider using file system transactions on Windows to make update installation atomic