2013-05-16 8 views
11

Я работаю с CMake 2.8.10.2 на Mac OS X 10.7.5.Невозможно настроить фоновое изображение для установки DMG с помощью CMake

Я настроил CMake для создания простого приложения с Xcode, которое создает пустое окно. Затем я попытался настроить CMake построить установку DMG программы, задающей фоновое изображение с помощью:

набора (CPACK_DMG_BACKGROUND_IMAGE/путь/к/изображениям)

и пользовательское .DS_Store установить размер окна и расположение значков с помощью :

набор (CPACK_DMG_DS_STORE/путь/к/файлу DS_Store)

Xcode будет успешно построить приложение и создать образ диска. Когда я монтирую изображение, он подходит к правильному размеру и размещению значков, однако фон всегда устанавливается на белый вместо указанного фонового изображения.

Что необходимо для правильного отображения фона на изображении диска?

ответ

10

К сожалению, никто не ответил на этот вопрос. Это был разочаровывающий опыт, однако, похоже, что я, наконец, решил его, поэтому я размещаю описание здесь, чтобы спасти кого-то еще от горя, если им когда-либо придется иметь дело с этим.

Для того, чтобы фон работал с установочным изображением, в основном должны произойти две вещи; фоновый файл должен существовать в установочном образе, а файл .DS_Store в корне образа должен быть настроен для использования этого фона.

Файл .DS_Store можно настроить, установив установочный образ в состоянии для записи, а затем выбрав . Просмотрите варианты просмотра в меню Viewer's View. Оттуда кто-то выберет параметр «Изображение» для фона и перетащит фоновый файл в местозаполнитель в панели . Просмотрите варианты.

При работе с CPack трюк заключается в возможности перетаскивания изображения. Когда кто-то задает фон для установки, строит и монтирует изображение, он не будет выглядеть, как будто есть какой-либо фон для перетаскивания на панель View View Options. Если кто-то идет в терминал, и делает

ls -a 

на корню смонтированной установки, что команда будет список, среди прочего, файл с именем background.png. Этот файл не отображается в Finder.

Причина, по которой этот файл отображается в терминале, а не в Finder, состоит в том, что он имеет расширенные атрибуты, которые скрывают его для Finder. Поскольку файл скрыт от Finder, невозможно перетащить файл в панель View View Options. Doing

ls [email protected] 

покажет, какие расширенные атрибуты применяются к файлу. Должен быть только один вызов com.apple.FinderInfo. Удаление этого атрибута должно сделать файл видимым в Finder. Атрибут может быть удален с помощью этой команды из терминала

xattr -d com.apple.FinderInfo background.png 

После удаления атрибута фона файл по-прежнему не будет отображаться в Finder сразу. Кому-то придется выгружать и монтировать установочный образ.Как только это произошло, фоновый файл должен появиться в Finder, и кто-то может перетащить его на панель View View Options, что приведет к отображению фонового изображения в окне Finder для установочного образа. После этого кто-то может скопировать файл .DS_Store из корня установочного образа и применить его к атрибуту CPACK_DMG_DS_STORE, а фоновое изображение должно появляться всякий раз, когда создается установочный образ.

+2

См. Http://crazyedy.com/tech/?p=535, как сделать изображение доступным для записи. –

+1

Самый простой способ сделать записываемое изображение - использовать 'set (CPACK_DMG_FORMAT« UDRW »)' в первый раз, а затем вернуться к «UDBZ» – raptor

+2

@LarsBilke. Чтобы сделать изображение доступным для записи, запустите это в терминале: 'hdiutil convert nameoffile.dmg -format UDRW -o nameoffile_writable.dmg' – congusbongus

3

Ответ @TronThomas очень помог мне. Чтобы не вытеснить его ответ, вот дополнительная информация о процессе, который я только что проработал. Для справки, это с MacOS Sierra и CMake 3.6.2.

  1. Установить фоновое изображение с set(CPACK_DMG_BACKGROUND_IMAGE /path/to/image)
  2. Создайте файл DMG, используя CPack генератор DragNDrop
  3. смонтировать образ в режиме чтения/записи с использованием теневого файла hdiutil attach mypackage.dmg -shadow junk.dmg
  4. На данный момент, мы не» t видеть фоновое изображение, но оно существует в папке .background в файле DMG. Наша стратегия будет заключаться в том, чтобы использовать Finder, чтобы сделать окно точно, как мы хотим, а затем скопируем файл .DS_Store.
  5. В меню Finder, нажмите View->Show View Options
  6. Под Background:, нажмите кнопку Picture радио. Затем щелкните изображение над текстом Drag Image Here. Обратите внимание, что текущий вид должен быть as Icons, иначе этого диалога там не будет.
  7. В диалоговом окне файла вернитесь к установленному DMG-изображению. Затем нажмите cmd-shift-. Это должно показать скрытые папки. Затем перейдите в папку .background и выберите фоновое изображение.
  8. Если все работает правильно, фоновое изображение должно теперь быть видимым.
  9. Отрегулируйте размер окон и просмотрите или скройте панели инструментов по желанию в меню View. Точные настройки будут реплицированы установщиком.
  10. Скопируйте скрытый файл .DS_Store в корневой каталог тома в другое место. Уловку cmd-shift-. можно использовать для просмотра файла или просто использовать терминал в этот момент, чтобы скопировать все. Обратите внимание: мы можем изменить имя этого файла на DS_Store, чтобы он не скрывался, когда мы его сохраняем.
  11. Извлеките файл DMG из Finder. Удалите junk.dmg или оставшиеся теневые файлы.
  12. Назад в CMakeLists.txt, задайте переменную set(CPACK_DMG_DS_STORE /path/to/DS_Store) Это файл, который мы только что создали и отошел от тома.
  13. Перестройте файл DMG с CPack. Все должно быть как прежде.

В качестве предупреждения содержится много информации, которая хранится в файле .DS_Store, таком как расположение файлов, имена пользователей и т. П. На данный момент я не знаю, как управлять этой информацией, поэтому будьте осторожны при распространении финального файла DMG. Если вам интересно, что там, используйте шестнадцатеричный редактор, например xxd.

В качестве краткого комментария этот процесс очень тупой. Тем не менее, я не думаю, что это ошибка Kitware. Хотя, они могли документировать процесс лучше.Из того, что я могу сказать, формат файла .DS_Store недостаточно хорошо документирован или раскрыт, поэтому мы в основном вынуждены использовать Finder, чтобы сделать его для нас. Это проблема MacOS, которая, вероятно, должна быть исправлена.

 Смежные вопросы

  • Нет связанных вопросов^_^