Почему мы устанавливаем программное обеспечение через файлы `.dmg`?

28

Когда я хочу установить программное обеспечение, я обычно загружаю файл .dmg(Disk iMaGe). Когда я открываю его, этот .dmgфайл выглядит как то, что я бы назвал «виртуальным диском» (отсюда и его название, я полагаю) и отображается в Finderразделе devices. Он также указан в Disk Utilityразделе, Disk Imagesи кажется, что он может быть удален или размонтирован, как и любой другой диск.

  • Какова логика, для которой программное обеспечение должно быть установлено с таким «виртуальным диском»?
  • Почему это не простой бинарный файл или я не знаю что?
Remi.b
источник
12
Установка программного обеспечения всегда может привести к d м а г е.
десерт
1
Простой двоичный файл будет установщиком. С DMG вы просто копируете приложение без запуска установщика.
Торбьерн Равн Андерсен
10
Большинство приложений Mac выглядят как отдельные файлы, но на самом деле это «комплекты приложений», в основном папка со многими файлами внутри. Finder отображает его как единое целое, но вы можете щелкнуть по ним правой кнопкой мыши и выбрать «Открыть содержимое», чтобы просмотреть файлы внутри. Таким образом, «простой двоичный файл» не будет работать.
el.pescado
4
История: blog.barthe.ph/2011/04/05/dmg_history
странствующий странник
Последний абзац должен быть отдельным вопросом, поскольку он порождает отдельные ответы
user151019

Ответы:

34

У DMG есть несколько ключевых особенностей, которые делают их превосходящими обычные старые молнии

  • Это полноценная файловая система (то есть они могут хранить права доступа к файлам, иметь собственные фоны папок и т. Д.)
  • Они поддерживают «обязательные» EULA перед установкой, что хорошо для легальных вещей
  • Обеспечить более надежную среду исполнения. Если вам нужно выполнить абсолютный путь для установки (что не следует делать), вы можете подготовить DMG, отметить его как доступный только для чтения и использовать его для установки.

Действительно ключевая особенность в том, что они поддерживают полную файловую систему HFS +. Zip (обычно версии Linux иногда поддерживают разрешения) глуп и поддерживает только связывание файлов и папок и ничего больше. Нет метаданных, только файлы.

Сирены
источник
14
Дополнительные моменты: начиная с 10.12, файлы .dmg могут быть подписаны с целью кодирования для обеспечения целостности (файлы .zip могут содержать подписанный код, но сами по себе не могут быть подписаны таким образом, чтобы выдержать загрузку) Кроме того, опция «простой двоичный код» вообще не работает, потому что большинство программ для MacOS поставляется в виде пакетов - папок со сложной (скрытой) внутренней структурой - а не в виде простых файлов.
Гордон Дэвиссон
9
«Zip глуп и поддерживает только ...» - я не согласен с такой оценкой. То, что что-то простое, не означает, что это глупо. Простота является достоинством и редко является (часто невидимым) метаданными файла любого значения в распределенном установщике.
Дай
14
@Dai он имеет в виду глупый, как в тупой; программа не знает, что делает, но не бесполезна.
Тим
3
Я полагаю, что ZIP не слишком хорошее сравнение. Почему, например, не сжатый TAR tar.gz? Это хранит разрешения.
Руслан
2
@Dai, «редко - это (часто невидимые) метаданные файла любого значения в распределенном установщике» - верно для многих других платформ, но Apple имеет долгую историю хранения критического контента (т.е. значков!) В «ветвях ресурсов» ( в наши дни xattrs).
Чарльз Даффи
3

Программное обеспечение Mac может поставляться как .appпакет приложений (по существу, папка, содержащая все ресурсы программы) или как .pkgустановщик, который представляет собой программу, которая устанавливает приложения аналогично Windows.

В качестве простых двоичных файлов доступны только инструменты командной строки, которые затем будут скопированы в какое-либо место пользователя, PATHнапример /usr/local/bin.

Они могут быть упакованы в образ диска OS X / macOS ( .dmg) или в традиционный формат архива, такой как .zipили .tar.


Какова логика, для которой программное обеспечение должно быть установлено с таким «виртуальным диском»?

Это в значительной степени зависит от разработчика. А .dmgэто просто виртуальный жесткий диск, а не установщик. Выбор использования - .dmgэто упаковка, а не установка.

Если приложение представляет собой простой .appпакет, оно является автономным и может быть запущено двойным щелчком по нему. Это обычно копируется /Applicationsдля удобства.

В дополнение к шифрованию и EULA при открытии, преимущество .dmgнад типом архива заключается в брендинге. .dmgS могут быть предоставлены пользовательские значки, пользовательские фоновые изображения и расположение содержимого может быть исправлено. .dmgОбычно они также доступны только для чтения, поэтому содержимое останется в точности так, как задумал разработчик.

Они также заставляют пользователя выбирать, где ему нужно приложение; когда вы распаковываете архив, содержимое, как правило, будет извлечено туда, где был расположен архив. Напротив, .dmgs будет монтироваться в файловой системе, а затем .appпакет должен быть явно скопирован.


Почему это не простой бинарный файл или я не знаю что?

Приложение Mac - это больше, чем просто бинарный файл. В дополнение к двоичному (расположен в <appname>.app/Contents/MacOS/), .appвключает в себя ряд ресурсов в <appname>.app/Contents/Resources/. Эти ресурсы включают в себя значки, графику и файлы локализации, такие как en.lproj.

Уэс Толеман
источник
2

Есть ли другие способы использования файлов .dmg, кроме установки программного обеспечения?

Еще одна полезная функция о DMG (поскольку вы спрашивали о других целях) - это возможность создавать зашифрованное пространство хранения и хранить файлы в этом защищенном пространстве. Полезно, если вы хотите защитить некоторые файлы, но не шифровать весь основной жесткий диск.

См. Дисковая утилита для macOS Sierra: Создание образа диска с помощью Дисковой утилиты для получения дополнительной информации о создании зашифрованных файлов .dmg.

кругозор
источник
Шифрование, однако, уже выполнимо без необходимости .dmg. Разве Unix не шифрует?
Pacerier
@ Pacerier - ну точно - как и все в Linux / Unix, есть несколько способов сделать что-то.
Кен,