Dropbox Update For Mac

Dropbox Update For Mac 4,0/5 8149 votes

Keeping users on the latest version of the Dropbox desktop app is critical. 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.

Our auto-update system, as originally designed, was written as a feature of the desktop client. 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. This meant that the client had to be running in order to update itself. More importantly, it also meant that small bugs in other parts of the client could affect auto-update. Eliminating these potential failures was crucial to maintain continuity of Dropbox’s value to its users. So we decided it was time to move our auto-update mechanism out of the main app. Back in 2014, we accomplished this on Windows by taking and adapting it to our needs. Since Omaha is an out-of-process updater, if we shipped a completely broken client we could still update it.

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. But we were happy with the end result.

Last year, we decided we wanted to do the same for macOS. Usually we like to start projects like this by doing lots of research.

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. Other options we looked at had other difficulties. Some were in-process only, or supported only one app, or only supported (we support Dropbox on some pretty old versions of OS X) so we couldn’t use them. So we decided to write our own auto-update system. 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. (We also didn’t have to use XML for the API 😃.) So what did we want?

We must ensure that users only run the code that they should be running. We want to update our users as fast as possible. Simplicity. This covers both the design and the implementation.

Simple code with lots of unit tests. Separation of concerns. The details of how an app is updated should be separate from the method of getting the payload.

Error handling. Handle all the most common errors correctly, e.g. Network connectivity.

Dropbox

Log as much as possible to detect quality degradation. And what did we build?

We built an “app” called DropboxMacUpdate. Because we needed to support old systems (Mac OS 10.7+) we wrote it in ObjC rather than using Swift. Picking one of Apple’s languages let us leverage many of the OS features without too much trouble.

(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.) Upon installation, DropboxMacUpdate.app will register itself with launchd. This is a well known technique that will allow the app to periodically check for updates. Any Dropbox app can register with DropboxMacUpdate by giving it the path of where it’s installed. Every five hours, DropboxMacUpdate will check its registration database for apps, then check the paths of those apps for the installed version and send them to the server. The server will check if an update is needed and will reply with the version, the URL and the hash of the payload. DropboxMacUpdate then downloads the payload and uses it to update the app.

This all happens without the need for any user interaction. Payload Format At a minimum, the payload is a with an executable file called.dbxinstall at the root.

Those of you familiar with Google’s UpdateEngine may see some similarities here. The executable is in charge of doing all the work needed to install the new version of the app. In practice, the DMG will also include the.app that needs to be installed; however, this format allows us to (someday) create a DMG that can update the app using diffs, for example. Notice that DropboxMacUpdate doesn’t have to know the details of how to update the app. This means that if your payload won’t install for some reason, it’s not a problem; just have the server give it a different payload next time (one that actually installs), and you’ll be out of your predicament in no time. Security Shipping updates is no trivial matter.

Desktop

We have to ensure that there’s no way for a user to get a “bad” version of the client. So we employ multiple layers of security checks. By default, the connection to the Dropbox server uses TLS with certificate pinning. This way we know we’re talking to dropbox.com and only dropbox.com. The server replies with the sha256 hash of the payload. This gets verified once we download the payload.dbxinstall will verify that the.app is signed by Dropbox before copying it to its final location.

Additionally, on 10.12+ systems the DMG payload is verified as an in-depth security measure. (Sadly, DMG signature verification is not implemented in earlier versions of OS X.) But most importantly, being able to deliver secure, reliable, and rapid updates to our users is the biggest security improvement. Updating a running app Because DropboxMacUpdate can pretty much run at any time, it might try to update a running application. For the Dropbox client we wanted to be able to ask the app to quit so the update could be done as soon as possible.

So.dbxinstall will find the running app and ask it to exit, using a. The client receives the notification, ensures that the app isn’t showing UI, finishes the current sync operations, and exits cleanly.dbxinstall will then swap out the Dropbox.app atomically and restart it. If the client is busy showing UI then we’ll wait for some time before quitting to make sure the user experience is not jarring. And in the end Many of our beta users have been running DropboxMacUpdate for the last months and have benefited from an increased speed in how fast they receive the latest version. In fact, we can update about 3000 clients/sec at peak! We’re excited about shipping this to all our macOS users with version 21 of the desktop client. Happy updating!

If you recently upgraded to the latest version of macOS, and you have the Dropbox desktop app installed on your computer, you should. However, even if you update to the latest version of Dropbox you may still notice some unexpected behavior. Specifically:. Apple error messages or other dialogue boxes appearing when files are moved into Dropbox. Confusing sync icons appearing on the Dropbox folder, or files in the folder If Dropbox is in its default location you will see error messages when moving files from folders that are being synced by iCloud (like Desktop or Documents) and into Dropbox. If Dropbox has been moved to the Desktop or Documents folder, and these are being synced by iCloud, you may experience confusing sync icons on Dropbox. These messages and icons are due to the way Apple has implemented iCloud (their storage and backup solution).

Mac

This article gives additional details on how to best experience Dropbox on the latest version of macOS. What can I do if I’m seeing these icons and messages?. Updating to this version means you’ll have the latest Dropbox improvements, and ensures you’ll have the smoothest possible experience using Dropbox on the latest version of macOS. Hosting Dropbox in its default location can prevent file syncing conflicts between iCloud and Dropbox. Disable notifications when removing files from iCloud Drive:. Open Finder.

Open Finder Preferences. Click Advanced. Uncheck Show warning before removing from iCloud Drive.

Note: Disabling iCloud notifications will not remove the conflicting sync icons. When will my files sync to Dropbox? You may notice that the sync icons on your files shift back and forth between iCloud and Dropbox notifications. This can happen if:. You have iCloud enabled on your computer.

You have synced the Desktop or Documents folder to iCloud. You have moved your Dropbox folder to either the Desktop or Documents folder In this case the Dropbox sync icon (the green circle with a checkmark) won't appear until a file has completed syncing to both Dropbox and iCloud. Why am I seeing these messages or icons? Error messages will appear on the latest version of macOS when each of the following two criteria are true:.

You have iCloud enabled on your computer. You have synced the Desktop or Documents folder to iCloud Conflicting sync icons will appear when each of the following three criteria are true:.

You have iCloud enabled on your computer. You have synced the Desktop or Documents folder to iCloud. You have moved your Dropbox folder to either the Desktop or Documents folder Note: In the latest version of macOS, iCloud sync is enabled on these folders by default during installation. Is Dropbox still working if I’m seeing these messages or icons? Even if you’re seeing these icons or messages, your files are still being saved to Dropbox.

However, you may notice the file sync icons shift from Dropbox to iCloud icons and back again while they save. What are the error messages, and what do they mean? If you are syncing the Desktop or Documents folder to iCloud, you may see one of the following dialogue boxes when moving files to Dropbox.

Dropbox Smart Sync For Mac

These messages will appear if you try to move files out of the Desktop or Documents folder. By default, iCloud syncs your Desktop and Documents folders. When you move a file out of thee folders into your Dropbox folder, iCloud interprets moving a file from Desktop or Documents as an attempt to delete the file from iCloud. Can I use both Dropbox and iCloud? However, using both Dropbox and iCloud may lead to some of the issues outlined in this article. We do not currently support a configuration where both iCloud and Dropbox sync the same files. Potential issues with Dropbox and iCloud placeholder files iCloud will not sync or delete Dropbox files if Dropbox is in its default configuration. However, if all of the following are true for your configuration, then you could potentially lose data on Dropbox:.

You name your Dropbox folder something other than 'Dropbox' (for example 'Dropbox 1'), and. Your Dropbox folder is saved in a non-default location (the Desktop or Documents folder), and. iCloud syncing is on, and. iCloud Optimized Storage is enabled If all of these are true for your configuration then iCloud may remove local copies of files and replace them with placeholder files (.icloud). This happens if both disk space is low and Optimized Storage is enabled.

If Dropbox is syncing the same files, then Dropbox will sync the original file removal and the.iCloud placeholder file. In rare cases, moving Dropbox to its default location after Optimized Storage had already replaced real files with placeholder files can lead to data loss. Dropbox will sync these placeholder files instead of the actual files. This issue could lead to data loss if no action is taken. Follow these steps to verify all your files are safe:.

Type.iCloud into the search bar to see which—if any—of your files are affected. If you find.iCloud files, you'll need to. Once you've recovered files from iCloud, to guard against further data loss.

Additional cases with.iCloud placeholder links: In addition to the issues discussed above, there is also a potential issue with screenshots. In some rare cases, screenshots taken while Dropbox isn’t running can be replaced with.iCloud placeholders, with the placeholder file then synced to Dropbox., and to prevent this from happening again.

Using symlinks, iCloud, and the Dropbox desktop app Note: If you use symlinks, you may be at additional risk for unusual behavior or even data loss. Dropbox is working to address any issues that may arise from using Dropbox with certain versions of macOS (version 10.12+). Following the recommendations in this article is the best way to get normal behavior with Dropbox on macOS.

However, if you have symlinks in your Dropbox that point to the Documents folder or Desktop, you may experience conflicting sync icons or possible data loss even if you follow the recommendations in this article. We recommend removing symlinks from Dropbox to avoid any possible issues.

What if I’m asked to move my Dropbox folder? If your Dropbox configuration fits the scenario described in the previous section, we will ask you to move your Dropbox folder back to the default location. Selecting the Move option will automatically complete this action. Selecting Cancel will stop Dropbox file sync until you resume sync and move your Dropbox folder back to its default location. You can also manually move your Dropbox folder back to its default location:. Click the Dropbox icon in your. Click the gear icon.

Click Preferences. Open the Account tab. Click the dropdown beside Dropbox location. Select Other. Open the Applications list. Click the Applications dropdown, and select your hard drive.

Open the Users folder. Select your computer username (it will likely have a 'home' icon beside it). Click Select.

Confirm the move by clicking Move. How can I enable the Dropbox badge on macOS version 10.12+? To enable the Dropbox badge on macOS version 10.12+, you must.