Live data from Hacker News

Making macOS Apps Uninstallable

notes.alinpanaitiu.com

171–180 of 208 posts

Re: Making macOS Apps Uninstallable

#171
post #33

Earlier quoted context omitted.

This is just unbelievable. The billion $$ company cant just automate the uninstall procedure for their users? How hard would it be to auto delete the contents of ~/Library? Or have some periodic auto clean? one can always dream, no? I wonder how many users that have uninstalled VMware still have 30 gigs of unused VMs lying around on their disk.

No. The user data, preferences etc under ~/Library/ belong to you - whether it's 3 kB of preference toggles or 3 decades of email. It would be "unbelievable" if a multibillion company decided to be helpful and erase your data just because you deleted the binary that created them (actually, it wouldn't, but let's not digress into how those companies are stripping away our agency by mobile-ossifying everything). The wh…

At least provide a user friendly way to manage it. For instance, offer the option to either delete, backup, or leave in place when uninstalling. For things left in place, have a GUI to view and manage them.

Re: Making macOS Apps Uninstallable

#172
post #155
post #33

Earlier quoted context omitted.

No. The user data, preferences etc under ~/Library/ belong to you - whether it's 3 kB of preference toggles or 3 decades of email. It would be "unbelievable" if a multibillion company decided to be helpful and erase your data just because you deleted the binary that created them (actually, it wouldn't, but let's not digress into how those companies are stripping away our agency by mobile-ossifying everything). The wh…

> Also, "uninstallable" means "cannot be installed" Nope. In writing, it's technically ambiguous -- it could mean both "can't be installed" or "can't be uninstalled" but to me it means "can't be uninstalled". In spoken language, it depends how you stress the first syllable and both could be used, I guess. That's why if you want to denote the installability of something, you should use the nonambiguous installable-non…

You could use “uninstall-able”.

This makes it clear (or at least clearer) that “able” is the modifying suffix to the root concept “uninstall”.

Re: Making macOS Apps Uninstallable

#173
post #164

Earlier quoted context omitted.

In my experience there are both a users config files and an applications support files strewn all over the place with abandon. Maybe I wasn't clear, I'm suggesting distinguishing out-of-bundle application files by making them symlinks: > Why are an applications files physically moved elsewhere in the first place?

Application support files are still new files that get created from scratch, not moved from the application bundle. It’s possible there’s misunderstanding in what we both consider application files. Anything that exists in the AppName.app bundle never gets modified, deleted or moved. And it’s not possible to create any new file in that bundle, not even symlinks, without invalidating the signature.

Thanks for explaining. That makes sense.

For any files that need to be modified, my suggestion would not work at all. But I'm sure there's cases developers could symlink unmodifiable files.

I know I've seen anything and everything in the users Library folder. (Application launch splash screens for example.)

Re: Making macOS Apps Uninstallable

#174
post #94
post #80

Earlier quoted context omitted.

If the app isn't signed (that's the so-called "developer tax", because it costs you USD100/year), then its: 1. Drag into Applications, try to open it, get warning. 2. Open System Preferences > Security & Privacy > General, click on lock, enter admin password, allow the app to be opened. So it's not as easy as it used to be.

"right" click the app and select "Open" creates the same exception without the need to open settings. There's also an equivalent terminal command for the exception I can't remember. If either of those aren't satisfying, you can always drop the check entirely which I can't personally recommend.

This not how things work anymore.

The user gets a warning initially saying that the download is "damaged".

Re: Making macOS Apps Uninstallable

#175

Earlier quoted context omitted.

This is just unbelievable. The billion $$ company cant just automate the uninstall procedure for their users? How hard would it be to auto delete the contents of ~/Library? Or have some periodic auto clean? one can always dream, no? I wonder how many users that have uninstalled VMware still have 30 gigs of unused VMs lying around on their disk.

They can't do that because they would get sued for anti competitive practices by the creators of the third party app AppCleaner.

I don’t know if this is a joke, but it sounds like you need to look up “Sherlocked” https://www.howtogeek.com/297651/what-does-it-mean-when-a-co....

Re: Making macOS Apps Uninstallable

#176

Earlier quoted context omitted.

> The whole Mac idea was that there's no "uninstall process" with opaque windoze registries etc; what the Finder shows you is simple enough for an average user to understand. Like dragging an "Application" or a CD-ROM into the Trash to get rid of it. Of course they ruined all that with ~/Library/{Preferences,Application Whatever,Kitchen Sink}/. The Windows registry is a simple key-value store, just like the macOS def…

I think on macOS programs are able to store data "inside" themselves, because .app files are just folders. They usually shouldn't put stuff in Library.

Not dynamic data. Everything in an .app should be checksummed/signed & verified

Re: Making macOS Apps Uninstallable

#177
post #108
post #74

Earlier quoted context omitted.

Especially ~/AppData (and ~/Library) is problematic because the person uninstalling the app might not be the person who was previously using the app. Reaching into another account‘s home directory to remove stuff feels very intrusive. Which would mean that any uninstall trying to also clean out library data is going to be incomplete. I think the consistent behavior of always keeping it is a win

I'd love if they'd clean up registry keys, or if windows did. But broadly I agree with you.

The user-specific parts of the registry are powered by files in the user‘s profile and ACLs do not normally allow other users to have access, so the same issue applies there too

Re: Making macOS Apps Uninstallable

#178
post #3

Earlier quoted context omitted.

I never had macOS remove those files automatically when dragging the app to the trash. I still have files left from 4 MacBooks ago (for apps I haven’t installed in a long time) because I’m always migrating the home folder. I guess they’re just expected to be left behind in case you change your mind and want to reinstall the app later. That way you’ll still continue where you left with the same settings. They’re inert…

> I guess they’re just expected to be left behind in case you change your mind and want to reinstall the app later. That way you’ll still continue where you left with the same settings. And if apps are well behaved, only writing tiny config files in ~/Library/Preferences/ and the like, it’s not really a problem. The amount of space taken up in that situation was tiny even when OS X 10.0 was brand new and 10GB was a c…

The main problem is caches. macOS can actually clear caches when you run low on disk space or uninstall the app, but, only for sandboxed apps.

Re: Making macOS Apps Uninstallable

#179
post #177
post #108

Earlier quoted context omitted.

I'd love if they'd clean up registry keys, or if windows did. But broadly I agree with you.

The user-specific parts of the registry are powered by files in the user‘s profile and ACLs do not normally allow other users to have access, so the same issue applies there too

lots of them leave crud in HKLM/System and HKLM/Software, as well as I think HKey_Curent_Config

I dont mind the per user settings crud, I do mind the system wide crud, because it can make reinstating the app to resolve an issue fraught, and I have to go manually find whatever opaque keys were set and remove them.

Re: Making macOS Apps Uninstallable

#180
post #92

Earlier quoted context omitted.

[flagged]

The Windows apologists are non the wiser :). Windows still has no full uninstaller that can clean the registry droppings many apps leave and other files, requiring to use specialized apps for that. And sometimes it would also fail to uninstall the binary. And Windows bizarely needs to retain the huge installers, so that part is strictly worse vs Mac

In fairness to Microsoft, that's only true for apps that don't use the official packaging format. Official packaging format? Yep, if you distribute your app as an MSIX file then you get:

• Integrated automatic uninstall (which is fast).

• Automatic online updates.

• Apps have their registry and AppData writes redirected to a private location, which Windows can then clean up. It's a bit like the macOS app sandbox but the app isn't actually sandboxed, it's much lighter than that and there only for clean uninstalls.

• No need to retain downloaded packages or installers.

• If you use the .appinstaller feature, only the parts of the package that the user doesn't already have are downloaded so apps that use big runtimes (electron, jvm, flutter etc) can turn into small downloads if the user already has such an app.

• Don't need admin rights to install.

• Integration with Windows network admin tools. MSIX is declarative so Windows can do things like make apps appear without them being actually installed.

• There's a tool that monitors other installers and converts them into MSIX files.

So Windows has solutions for a lot of these problems. Unfortunately developers don't know about it and that's partly because Windows has a lot of bugs, especially in Windows 10 (which hasn't been receiving bug backports for a long time now). The best way to get these features is to use Conveyor which is a tool that abstracts you from the packaging tech and automatically works around the bugs (Disclosure: I wrote Conveyor). It also extends it with other useful features like checking for and automatically applying updates every time the app is run (if you want that):

https://hydraulic.software/

Post reply on HN