(In comparison, the client is written in Python, and when we need to do some OS-specific thing we have to write lots of bridge code.) Picking one of Apple’s languages let us leverage many of the OS features without too much trouble. Because we needed to support old systems (Mac OS 10.7+) we wrote it in ObjC rather than using Swift. We built an “app” called DropboxMacUpdate. (We also didn’t have to use XML for the API □.) This gave us a lot of flexibility in the feature set, and rather than bolting stuff on after the fact, as we did with Omaha, we could build the exact system we needed. So we decided to write our own auto-update system. Some were in-process only, or supported only one app, or only supported Sierra (we support Dropbox on some pretty old versions of OS X) so we couldn’t use them. Other options we looked at had other difficulties. Why reinvent the wheel if you don’t have to? Google did have an open source project called UpdateEngine which was essentially “Omaha for Mac,” but the last code drop was back in 2008 and it wouldn’t compile cleanly with modern XCode, so we decided not to use it. Usually we like to start projects like this by doing lots of research. Last year, we decided we wanted to do the same for macOS. This project took a while to finish since Omaha is also an installer/meta-installer and we had to rework several of our installation flows to make it all work well. Since Omaha is an out-of-process updater, if we shipped a completely broken client we could still update it. So we decided it was time to move our auto-update mechanism out of the main app.īack in 2014, we accomplished this on Windows by taking Google’s Omaha project and adapting it to our needs. Eliminating these potential failures was crucial to maintain continuity of Dropbox’s value to its users. More importantly, it also meant that small bugs in other parts of the client could affect auto-update. This meant that the client had to be running in order to update itself. Basically, as part of regular file syncing, the server can send down an entry in the metadata that says, “Please update to version X with checksum Y.” The client would then download the file, verify the checksum, open the payload, replace the files on disk, restart the app and boom! It would be running version X. Our auto-update system, as originally designed, was written as a feature of the desktop client. It allows our developers to rapidly innovate, showcase new features to our users, maintain compatibility with server endpoints, and mitigate risk of incompatibilities that may creep in with platform/OS changes. Keeping users on the latest version of the Dropbox desktop app is critical.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |