I thought Linux app distribution was weird until I met Mac OS:

The standard way to distribute apps from websites (i.e. not the official store, not homebrew) is to package the app in a disk image (DMG, as it can hold the needed file permissions) then users download it, mount it like a CD from the 90s, then drag it to the applications folder (which, I guess, is how app installing worked since the 90s, but there isn't any hint in the UI explaining that to a first time user). If you open the app from the virtual drive (aka, without installing) it will work in a sandboxed state (seems useful IMHO).

That's weird. Mac OS users say it's simple. It isn't simple. That's fucked up. That's not intuitive at all. Apple surely doesn't care because they have their store.

#ux #linux #macos #technology

@qgustavor

MacOS Leopard (10.5) and newer has a built-in installer program that can install an app from a package file, same as Windows.

The disk image approach exists for historical reasons. In the days before macOS 10, you'd typically install an app by drag-and-dropping it from a CD to wherever you want to install it. MacOS 9 added a disk image system so you could do the same with apps downloaded from the Internet, and this was kept in 10.

Why anyone is using disk images now, I don't know.

@qgustavor

My employer used to distribute apps on disk images as well, but we were forced to switch to installer packages because that's now the only way to show a license agreement before installation.

It used to be that a disk image could show a license agreement when you try to mount it, and I went to a great deal of trouble to figure out how to make it do that https://github.com/argv-minus-one/dmg-license , but Apple removed that functionality a while back. https://github.com/argv-minus-one/dmg-license/issues/11

GitHub - argv-minus-one/dmg-license: Generate license agreements for macOS .dmg files

Generate license agreements for macOS .dmg files. Contribute to argv-minus-one/dmg-license development by creating an account on GitHub.

GitHub