Nuke & Pave is Rigorous and Predictable
If you’ve been listening to me for any length of time, you know I’m a huge proponent of doing a nuke and pave of my Mac (AKA clean install) around once a year. You can just search podfeet.com for “nuke and pave” to read all of the articles I’ve written on the subject over the years. I definitely believe in doing a nuke and pave when I get a new computer. When I say nuke and pave or clean install, I mean installing every single app one by one and configuring every little bit by hand. The only thing I bring over from a backup is my data – no settings at all.
I’m a bit unusual in how much I tailor my Mac, so this is a very lengthy process. I won’t go into all the details because I’ve described how I do it as recently as last October. The downside of this process is that it takes me about five days on and off to get everything working properly.
But the upside is that everything is predictable. Because I’ve documented my apps and settings before I start the process, I know how much work I have to do. I break it down into the mission-critical apps and settings, important apps and settings, and then the ones that I use but aren’t that critical and can wait for a bit.
It’s daunting to be sure but I find the rigor of the process pleasing. But I strayed from my tried-and-true process this week.
After fighting with Apple for 12.7 months about the massive battery drain on my M1 Max MacBook Pro, I broke down and bought a new M3 Max MacBook Pro. I realized that if I used Migration Assistant to move all of my apps and settings, it would give me a unique opportunity to prove to Apple once and for all that it was not my apps and settings causing the problem. This was my first time using Migration Assistant in ages.
Migration Assistant is Not Rigorous nor Predictable
I’ve been shocked to find that Migration Assistant is anything but rigorous and predictable! Everyone always talks about Migration Assistant as though, “It just works!” That sure hasn’t been my experience. Let’s walk through some of the “fun” I’ve had.
We’ll start with apps from the Mac App Store. Those, if anything, should have come across seamlessly but several did not.
Mac App Store Apps
MarsEdit
I use MarsEdit to write all of my blog posts so it’s high on the mission-critical list. When I launched MarsEdit for the first time after the migration, it asked for my license key. That didn’t make any sense, as I’d bought it from the Mac App Store.
I tried to just download it again from the Mac App Store but I got a different error – it simply said, “unable to download app”. So that was swell.
I contacted Daniel Jalkut, developer of MarsEdit, and he explained that he stores all of the settings in separate files and they don’t get deleted when you delete the app. Luckily Hazel wasn’t working yet, so its app sweep of the trash didn’t delete those files when I deleted MarsEdit.
I don’t know if something healed in the Mac App Store but after Daniel’s email I was able to download fresh from the Mac App Store. MarsEdit is one of the most well-behaved apps I use and if even MarsEdit from the Mac App Store doesn’t gracefully transfer with Migration Assistant, then I’m doomed.
Telegram
Telegram is my messaging app of choice, and while it worked, I had no avatars for any of my contacts. One of the joys of Telegram is that you can create these little avatars for groups too, which means it’s easy to see at a glance who you’re talking to. Searching a long list of names was a terrible experience.
I uninstalled and reinstalled Telegram from the Mac App Store several times and finally gave up. After about 4 days my avatars came back! I have no idea what caused the problems but I’m sure glad that the picture of a glass of wine is there for my Wine Wednesday chat group in Telegram again.
Mactracker
Mactracker, the awesome app to learn everything about every Mac, iPhone, iPad, or accessory Apple has ever made, decided it didn’t want to function after Migration Assistant. It popped up a dire warning with a yellow triangle with an exclamation point inside and said, “‘Mactracker.app’ is damaged and can’t be opened. You should move it to the trash.” I sure didn’t want to throw away Mactracker, but I had no choice, so I selected Move to Trash.
The next popup was even worse. Now instead of a warning I had a scary red stop sign with an exclamation point and the new warning said, “‘Mactracker.app’ could not be moved to the trash.” This is Apple’s Mac App Store, Apple’s downloader, presumably Apple’s warnings, and of course Apple’s Migration Assistant.
I dragged Mactracker into the trash and the operating system asked me to authenticate and that worked. Only then could I download again from the Mac App Store, and it worked as designed.
Moom
When I tried to launch the delightful window manager Moom from the Mac App Store, I got the same dire warning that it was damaged and then the red stop sign telling me it couldn’t throw it in the trash. I didn’t even try to fight it and dragged it to the trash manually, authenticated, redownloaded, and Moom was back working again. But why, Apple? Why do I have to do this?
AutoMounter
I use an app called AutoMounter to mount my Synology volumes automatically. This lets Hazel clean up my audio files for the podcast by moving them to the Synology without my intervention. But AutoMounter comes from the Mac App Store so of course, things did not go well.
It was slightly different from Mactracker and Moom’s warnings. The popup said it was damaged and couldn’t be opened but didn’t bother to offer to send it to the trash for me. On a lark, I didn’t delete AutoMounter. I went to the Mac App Store, searched for AutoMounter, and simply clicked the Open button and it worked! No uninstall, authenticate, or reinstall required. I have no idea why this worked. I had tried this method with MarsEdit and it didn’t work so I can’t even find a pattern here.
I don’t understand why all of these apps were damaged but it’s obvious the blame is entirely on Apple.
That’s it for the Mac App Store fails that I’ve experienced so far. But the Mac App Store apps aren’t the only ones giving me fits.
Non-Mac App Store Apps
Let’s move on to whine about apps that aren’t from the Mac App Store.
Backblaze Still Isn’t Fixed
Probably the worst of my apps to have trouble making the great migration of 2024 was Backblaze. This is a terrific offsite backup service. It’s not on my mission-critical list because I have local backups and most of my data also lives in a syncing solution – iCloud Drive, Dropbox, or Google Drive. I obviously want it to work but I tend to wait a bit to start backups when switching machines until I’m sure everything else has migrated properly.
Before the migration, I had my M1 MacBook Pro and my M2 MacBook Air backed up to Backblaze. I launched Backblaze on the new M3 MacBook Pro with the intention of inheriting the license and backup from the M1 MacBook Pro. But when I brought up Backblaze, it was a hot mess. I’m not even sure how to describe what a hot mess it was, but I’ll try. The opening window had the Backblaze logo in the center, but every word on the screen was error dialogs. The center said, “ERR_MainDialog_TopBanner_InitialBackupPaused”. There were three buttons lableled “ERR_MAINDIALOG_BUTTON” followed by something I couldn’t read. There were unformatted error messages on the right. There were links to errors. Like I said, it was a hot mess.
Obviously a reinstall of Backblaze was required. I probably should have followed the uninstall instructions on the Backblaze website, but they’re quite arduous. They have an uninstaller but they say to run it and to dive deep into all kinds of Library preference files and delete things. I took the easy path and reinstalled and it worked just dandy.
I sent a copy of the awful screen I saw after the migration to the Backblaze folks just as an FYI to explain that their software doesn’t graciously migrate. I explained that I’d gotten past it by reinstalling so this was just to warn them. I successfully adopted a backup on the new M3 MacBook Pro.
A few days later I started using my M2 MacBook Air, and a window popped up telling me that Backblaze was no longer working on this Mac because the license had been taken by another Mac. That’s when I realized that Backblaze never asked me which backup to adopt. It didn’t take the one from the M1 MacBook Pro, it took the one from the M2 MacBook Air.
The folks at Backblaze worked with me to get this sorted out, but it took about 8 emails back and forth and much discussion before we were able to get Backblaze to ask me which backup to adopt. It also involved deleting several now “dead” backups through the Backblaze web interface. I never had to do anything like this before when I got a new Mac and did a pave from scratch.
Dropbox
Dropbox was as big of a mess as Backblaze, and I’m not sure I have it sorted yet. The first symptom was pretty normal by now. macOS told me simply that the application “Dropbox.app” can’t be opened with an OK button. Not as alarming but it still wasn’t working.
I downloaded and installed a fresh version of Dropbox from the website. Before I can explain what happened, I have to refresh everyone’s memory on how cloud storage providers work with modern macOS.
Last year around this time, Adam Engst of TidBITS fame was on Chit Chat Across the Pond Lite to talk about Apple’s changes to how cloud storage services are implemented in macOS. Apple dropped kernel extensions for security reasons and created a new File Provider Extension.
From a user perspective, we saw the cloud service apps move from top-level citizens to showing in the left sidebar together under Locations. All of your files for cloud storage services are now in ~/Library/CloudStorage. That’s an interesting location since your Library is a hidden directory by default. This was one of those “Resistance is futile” situations where you pretty much had to go along with the change.
I had long since allowed Dropbox to adopt the File Provider Extension before migrating to the new Mac. I checked Dropbox a few days after the migration and noticed that none of my Dropbox files had migrated over to the new Mac, and they hadn’t downloaded from the Dropbox servers either. That’s when I realized that Dropbox was not using the new File Provider Extension! From the menu bar app, I had to go through the dance again to let Dropbox make the transition. That seemed very odd.
I then had to keep tickling the Dropbox files to get them to download to the new Mac. Nothing came down on its own. Finally, things seemed to be downloaded.
Last Friday, Bart and I recorded Chit Chat Across the Pond. When we record the show, we both do what’s called a double-ender recording. That means I record my voice locally and his voice from Zoom, and he does the same thing on his end. When we’re done, he moves his recording to a shared Dropbox folder. Then I pull both double-enders into my recording software Hindenburg. I delete my Zoom recording of him, and his Zoom recording of me, leaving two good directly recorded voices. This is a way of ensuring that if either of us has a problem recording we have at least one copy of both of our voices.
After Bart said he’d successfully uploaded his file to Dropbox, I told him it never came down. We occasionally have hiccups on one end or the other with this transfer process so I suggested he check again. All indications on his end were that it should be on Dropbox ready for me to see but it wasn’t there.
I wondered what could be wrong, other than a bandwidth problem on my end. I opened Find Any File (my favorite way to do deep searches on my Mac) and discovered that I now have two copies of Dropbox in ~/Library/CloudStorage. One is called Dropbox and it has the pretty logo, and the other is called Dropbox (4-23-24 7/08 PM) with a generic folder icon! This isn’t an alias (I had a couple of those too), it’s a complete duplicate of all of my files – 122GB worth!
I still have to clean that mess up, but our Bart Allison Share folder in Dropbox that I had in my left sidebar was pointing to the wrong Dropbox which is why I could never see Bart’s file. How terrifying is that?
Hazel
I rely on the app Hazel from Noodlesoft to do a lot of work on my Mac. I’ve already mentioned how it does an app sweep of the trash for me to get all the weird little files off my system, and I use it to move local files to my Synology when they get stale.
This is a fantastic application with great support from the developer Paul Kim, but for some reason on just this new Mac having used Migration Assistant, my rules are all fractured. I’m getting errors when I open the app, errors when I try to save a rule, and I’ve got runaway circular jobs going on. Paul’s helping me figure it out but Migration Assistant was definitely not kind to Hazel.
Apple’s Developer Tools
Would you believe that even Apple’s developer tools don’t work after Migration Assistant? In order to test web apps on iOS during development, like with the work we’re doing on XKPasswd, I use the Xcode Simulator. This lets you bring up a fake iPhone or iPad on your Mac and see how it looks and acts at different sizes and orientations. When I tried to run it for the first time on the new Mac after Migration Assistant’s help, it gave me a popup that told me I needed to install additional required components. It wasn’t hard to fix, but why on earth did only part of Xcode come across with Migration Assistant?
Security
While the problems I’ve discussed were huge and took a lot of my time, I was more tolerant but still surprised that basically none of my security settings transferred over. Every app that wants to use the camera or the microphone or even record the screen like screenshot apps had to be reapproved. Every app that wanted full disk access had to be reapproved. Every app that uses accessibility had to be reapproved.
Rogue Amoeba has a new way of getting permission to hijack audio, but not all of their apps use the new Audio Routing Kit (ARK) method just yet. That means to use their older Audio Capture Engine (ACE), you have to boot into Safe mode and lower the security settings. I’m not surprised I had to do that one by hand rather than Migration Assistant doing it for me, but it was still annoying to do.
Lots of apps lost their “launch at login” status, which didn’t make sense to me. I wonder If that’s security-related as well?
Moving Licenses
Finally, I was annoyed at the software I had to move manually because of the way they are licensed. That’s not Migration Assistant’s fault but since I’m on a roll airing of the grievances, I’m going to whine a little bit.
- Parallels Toolbox is licensed per machine, but at least it lets me pull a license from another machine. I don’t have to log into the old one and let it go.
- Setapp is licensed per machine too and is pretty expensive. I had to release the license on the old Mac first.
- ScreenFlow has a Mac App Store version but it’s cost prohibitive. A license of Version 10 on the Mac App Store is $170, whereas an upgrade of my standalone license was only $59. So again I have to release the license on the old Mac to retrieve it on the new one.
Bottom Line
The bottom line is that I’m not convinced that Migration Assistant has any advantages over a nuke and pave. For me, it’s been a lot of work cleaning things up and getting them working properly, and it’s been no fun at all. The unpredictability of the problems was not what I was hoping for. I don’t understand why everyone else talks about it like it “just works”.
This just in – Homebrew is broken
After I thought I’d discovered every failure of Migration Assistant, I went to install something using Homebrew, the command-line package manager. I got an error telling me that ownership and permission for the location of Homebrew files was not writable, and that I should change the permissions back to my user account. Luckily it told me the command:
sudo chown -R allison /opt/homebrew
This means to use super user to change ownership recursively to the user Allison for the directory /opt/homebrew
. It also suggested I make sure that my user has write permissions to that same directory.
chmod u+w /opt/homebrew
It only took a few seconds to fix, but it’s one more paper cut because of using Migration Assistant this time.