Как создать пакет.app для Mac OS с приложением Chef Omnibus в программе установки DMG
У меня очень ограниченные знания Mac OS, и у меня есть пара вопросов, связанных с установщиками DMG.
У нас есть приложение, которое работает на Windows, Mac и Ubuntu. Мы создаем наши установщики для всех трех ОС с Chef Omnibus.
Наш установщик DMG немного базовый, но работает нормально, т.е. наше приложение установлено так, как должно. Тем не менее, у наших пользователей нет простого способа запустить приложение - им нужно пойти и поискать папку установки, найти сам файл запуска.sh и запустить его.
Из того, что я до сих пор собирал, пакет Mac OS.app может помочь нам в этом. Однако я не нашел никакой информации о том, как создать пакет в процессе создания установщика Omnibus. Я вижу, что пакет - это набор папок и файлов, которые имеют определенную структуру:
- файл info.plist
- исполняемый файл - это может быть наш упомянутый выше файл bash
- папка Ресурсы
- ... и другие файлы
Я обнаружил, что самый простой способ создать пакет - это использовать редактор xCode, но это не вариант для нас. Мы создаем установщики в процессе CI автоматически, и мы предпочитаем сохранять его таким, он очень эффективный и надежный. Лучше всего было бы как-то расширить процесс Omnibus, чтобы мы также получили этот пакетный файл. Однако на данный момент я даже не уверен, возможно ли это.
Я действительно застрял, поэтому я благодарен за любые указатели.
Вот наш файл distribution.xml для справки, если он имеет отношение к этой проблеме. Он используется Omnibus для команды productbuild. Я искал варианты для расширения этого, но нет ничего, связанного с пакетами:
<?xml version="1.0" standalone="no"?>
<installer-gui-script minSpecVersion="1">
<title><%= friendly_name %></title>
<background file="background.png" alignment="bottomleft" mime-
type="image/png"/>
<welcome file="welcome.html" mime-type="text/html"/>
<license file="license.html" mime-type="text/html"/>
<!-- Generated by productbuild - - synthesize -->
<pkg-ref id="<%= identifier %>"/>
<options customize="never" require-scripts="false"/>
<choices-outline>
<line choice="default">
<line choice="<%= identifier %>"/>
</line>
</choices-outline>
<choice id="default"/>
<choice id="<%= identifier %>" visible="false">
<pkg-ref id="<%= identifier %>"/>
</choice>
<pkg-ref id="<%= identifier %>" version="<%= version %>"
onConclusion="none"><%= component_pkg %></pkg-ref>
<domains enable_anywhere="false" enable_currentUserHome="true"
enable_localSystem="false" />
</installer-gui-script>
1 ответ
наше приложение установлено как надо
Звучит так, как будто вам нужно создать .app
для вашего распространения.
.app
это особая структура папок:
MyApp.app/
Contents/
Info.plist
MacOS/
executable
Frameworks/
library.dylib
Resources/
icon.icns
Библиотеки в Frameworks/
должны быть связаны с executable
с install_name_tool
Например,
install_name_tool -change /opt/local/lib/library.dylib @rpath/library.dylib MyApp.app/Contents/MacOS/executable
install_name_tool -add_rpath @executable_path/../Frameworks MyApp.app/Contents/MacOS/executable
Почти все остальное можно классифицировать Ресурсы, ничто не может войти в верхний уровень приложения, кроме Contents/
папка. Ты можешь codesign
когда приложение будет завершено и полностью в комплекте.
Когда вы вернетесь к своему другому программному обеспечению, используйте .app
создать .dmg
тогда вы можете codesign
тот.
В типичной установке с .dmg
Пользователь обычно представлен приложением и псевдонимом в папке /Applications. Для установки пользователь перетаскивает приложение в папку /Applications.
Немного .dmg
Программное обеспечение для создания будет делать более сложные вещи, такие как отображение фона или требует лицензионного соглашения с конечным пользователем.