Application Bundle/ru
Обзор
Пакет приложений - это каталог с расширением «.app» в системах macOS. Он содержит исполняемый файл приложения, файлы ресурсов, файлы библиотеки (если есть), файлы справки и информацию о приложении и необходим для правильного выполнения приложений. Mac Finder рассматривает этот каталог .app как файл приложения и по умолчанию не отображает ни один из его подкаталогов.
Изнутри Lazarus он используется для интерфейсов Carbon и Cocoa, но можно также создавать приложения с другими интерфейсами (например, Gtk или QAt) с помощью скриптов.
Вы можете узнать больше о пакетах приложений в Apple Bundle Programming Guide.
Настройки приложения (пакета) находятся в файле списка свойств: Info.plist , расположенном в каталоге bundle.app/Contents/.
Чтобы получить доступ к набору приложений, вам нужно щелкнуть правой кнопкой мыши (ctrl-левой кнопкой мыши) на пакете и выбрать Show Package Contents(Показать содержимое пакета).


Макет пакета приложения
Базовая структура пакета приложений Mac:
MyApp.app/
Contents/
Info.plist
MacOS/
Resources/| Подпапка каталога Contents | Описание использования |
|---|---|
| MacOS | (Обязательный) Содержит автономный исполняемый код приложения. Обычно этот каталог содержит только один двоичный файл с основной точкой входа вашего приложения и статически связанным кодом. Однако вы можете поместить в этот каталог и другие автономные исполняемые файлы (например, инструменты командной строки). |
| Resources | Содержит все файлы ресурсов приложения. Содержимое этого каталога дополнительно организовано, чтобы различать локализованные и нелокализованные ресурсы. Для получения дополнительных сведений о структуре этого каталога см. Adding a Help Book - Bundle layouts. |
| Frameworks | Содержит все частные разделяемые библиотеки и фреймворки, используемые исполняемым файлом. Платформы в этом каталоге привязаны к редакциям приложения и не могут быть заменены никакими другими, даже более новыми версиями, которые могут быть доступны для операционной системы. Другими словами, фреймворки, включенные в этот каталог, имеют приоритет над любыми другими фреймворками с аналогичными названиями в других частях операционной системы. Для получения информации о том, как добавить общие библиотеки в пакет приложений, см. macOS Dynamic Libraries. |
| PlugIns | Содержит загружаемые пакеты, расширяющие базовые функции вашего приложения. Вы используете этот каталог для включения модулей кода, которые должны быть загружены в пространство процесса вашего приложения для использования. Вы не должны использовать этот каталог для хранения автономных исполняемых файлов. |
| SharedSupport | Содержит дополнительные некритические ресурсы, которые не влияют на возможность запуска приложения. Вы можете использовать этот каталог для включения таких вещей, как шаблоны документов, картинки и учебные пособия, наличие которых может ожидать ваше приложение, но которые не влияют на способность вашего приложения работать. |
Создание пакета приложения
Посредством Lazarus
Откройте проект и перейдите в Project -> Project Options -> вкладку Application, и нажмите кнопку Create Application Bundle. Полученный пакет приложений будет содержать символическую ссылку на реальный исполняемый файл.
Note: Вы должны удалить символическую ссылку и скопировать реальный исполняемый файл "project1" в каталог project1.app/Contents/MacOS/, если хотите распространять приложение и использовать его на другом компьютере.
Посредством инструмента командной строки, поставляемым с Lazarus
Откройте /Library/Lazarus/components/macfiles/examples/createmacapplication.lpi в IDE. Скомпилируйте.
Откройте терминал по вашему выбору и введите:
cd project1/
/Library/Lazarus/components/macfiles/examples/createmacapplication project1
ln -s ../../../project1 project1.app/Contents/MacOS/project1Посредством сценария оболочки
You can adapt the following shell script to create a customized application bundle for your application. It allows the creation of either debug or release bundle.
- In the debug bundle, a link to the executable is placed, allowing for debugging using the Lazarus IDE,
- In the release bundle, the executable is copied so the application bundle as a whole can be used stand-alone/copied to other locations.
Вы можете адаптировать следующий сценарий оболочки для создания настраиваемого пакета приложений для вашего приложения. Это позволяет создавать пакеты debug или release.
- В пакете debug размещена ссылка на исполняемый файл, что позволяет делать отладку с использованием Lazarus IDE,
- В пакете release исполняемый файл копируется, поэтому комплект приложения в целом можно использовать отдельно/скопировать в другие места.
#!/bin/sh
# Force Bourne shell in case tcsh is default.
#
#
# Reads the bundle type
#
echo "========================================================"
echo " Bundle creation script"
echo "========================================================"
echo ""
echo " Please select which kind of bundle you would like to build:"
echo ""
echo " 1 > Debug bundle"
echo " 2 > Release bundle"
echo " 0 > Exit"
read command
case $command in
1) ;;
2) ;;
0) exit 0;;
*) echo "Invalid command"
exit 0;;
esac
#
# Creates the bundle
#
appname=Magnifier
appfolder=$appname.app
macosfolder=$appfolder/Contents/MacOS
plistfile=$appfolder/Contents/Info.plist
appfile=magnifier
PkgInfoContents="APPLMAG#"
#
if ! [ -e $appfile ]
then
echo "$appfile does not exist"
elif [ -e $appfolder ]
then
echo "$appfolder already exists"
else
echo "Creating $appfolder..."
mkdir $appfolder
mkdir $appfolder/Contents
mkdir $appfolder/Contents/MacOS
mkdir $appfolder/Contents/Frameworks # optional, for including libraries or frameworks
mkdir $appfolder/Contents/Resources
#
# For a debug bundle,
# Instead of copying executable into .app folder after each compile,
# simply create a symbolic link to executable.
#
if [ $command = 1 ]; then
ln -s ../../../$appname $macosfolder/$appname
else
cp $appname $macosfolder/$appname
fi
# Copy the resource files to the correct place
cp *.bmp $appfolder/Contents/Resources
cp icon3.ico $appfolder/Contents/Resources
cp icon3.png $appfolder/Contents/Resources
cp macicon.icns $appfolder/Contents/Resources
cp docs/*.* $appfolder/Contents/Resources
#
# Create PkgInfo file.
echo $PkgInfoContents >$appfolder/Contents/PkgInfo
#
# Create information property list file (Info.plist).
echo '<?xml version="1.0" encoding="UTF-8"?>' >$plistfile
echo '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' >>$plistfile
echo '<plist version="1.0">' >>$plistfile
echo '<dict>' >>$plistfile
echo ' <key>CFBundleDevelopmentRegion</key>' >>$plistfile
echo ' <string>English</string>' >>$plistfile
echo ' <key>CFBundleExecutable</key>' >>$plistfile
echo ' <string>'$appname'</string>' >>$plistfile
echo ' <key>CFBundleIconFile</key>' >>$plistfile
echo ' <string>macicon.icns</string>' >>$plistfile
echo ' <key>CFBundleIdentifier</key>' >>$plistfile
echo ' <string>org.magnifier.magnifier</string>' >>$plistfile
echo ' <key>CFBundleInfoDictionaryVersion</key>' >>$plistfile
echo ' <string>6.0</string>' >>$plistfile
echo ' <key>CFBundlePackageType</key>' >>$plistfile
echo ' <string>APPL</string>' >>$plistfile
echo ' <key>CFBundleSignature</key>' >>$plistfile
echo ' <string>MAG#</string>' >>$plistfile
echo ' <key>CFBundleVersion</key>' >>$plistfile
echo ' <string>1.0</string>' >>$plistfile
echo '</dict>' >>$plistfile
echo '</plist>' >>$plistfile
fiЗапуск приложения через Application Bundle
Вы можете запустить приложение из среды IDE с помощью значка Finder или в собственном MacOS-овском Terminal.app посредством "open project1.app".
См.также
Внешние ссылки
- Apple: NSBundle class
- Apple: Bundle Resources
- Apple: CFBundle
- Apple: Bundle Configuration
- Apple: Resource Programming Guide
- Apple: Bundle Programming Guide
From the Free Pascal wiki, page "Application Bundle/ru", as it stood on 2020-08-18 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
