Difference between revisions of "Application Bundle/ru"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{Application Bundle}} == Обзор == Пакет приложений - это каталог с расширением «.app» в системах macOS. Он содер...")
 
 
(5 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
Пакет приложений - это каталог с расширением «.app» в системах macOS. Он содержит исполняемый файл приложения, файлы ресурсов, файлы библиотеки (если есть), файлы справки и информацию о приложении и необходим для правильного выполнения приложений. Mac Finder рассматривает этот каталог .app как файл приложения и по умолчанию не отображает ни один из его подкаталогов.
 
Пакет приложений - это каталог с расширением «.app» в системах macOS. Он содержит исполняемый файл приложения, файлы ресурсов, файлы библиотеки (если есть), файлы справки и информацию о приложении и необходим для правильного выполнения приложений. Mac Finder рассматривает этот каталог .app как файл приложения и по умолчанию не отображает ни один из его подкаталогов.
  
From within Lazarus it is used for the [[Carbon Interface|Carbon]] and [[Cocoa Interface|Cocoa]] interfaces, but one can also build applications with other interfaces (eg Gtk or QAt) by using scripts.
+
Изнутри Lazarus он используется для интерфейсов [[Carbon Interface|Carbon]] и [[Cocoa Interface|Cocoa]], но можно также создавать приложения с другими интерфейсами (например, Gtk или QAt) с помощью скриптов.
  
You can learn more about application bundles in the Apple [https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW19 Bundle Programming Guide].
+
Вы можете узнать больше о пакетах приложений в Apple [https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW19 Bundle Programming Guide].
  
Application (bundle) settings are located in the property list file: [[macOS property list files|Info.plist]] located in the bundle.app/Contents/ directory.
+
Настройки приложения (пакета) находятся в файле списка свойств: [[macOS property list files|Info.plist]] , расположенном в каталоге bundle.app/Contents/.  
  
To access the application bundle, you need to right click (ctrl-left click) on a bundle and select ''Show Package Contents''
+
Чтобы получить доступ к набору приложений, вам нужно щелкнуть правой кнопкой мыши (ctrl-левой кнопкой мыши) на пакете и выбрать ''Show Package Contents''(Показать содержимое пакета).
  
 
[[Image:openbundle.png]]
 
[[Image:openbundle.png]]
Line 17: Line 17:
 
[[Image:infoplist.png]]
 
[[Image:infoplist.png]]
  
== Application bundle layout ==
+
== Макет пакета приложения ==
  
The basic structure of a Mac application bundle:
+
Базовая структура пакета приложений Mac:
  
 
  MyApp.app/
 
  MyApp.app/
Line 28: Line 28:
  
 
{| class="wikitable"
 
{| class="wikitable"
! Sub-Directory of the Contents directory !! Usage description
+
! Подпапка каталога Contents !! Описание использования
 
|-
 
|-
|MacOS || (Required) Contains the application’s standalone executable code. Typically, this directory contains only one binary file with your application’s main entry point and statically linked code. However, you may put other standalone executables (such as command-line tools) in this directory as well.
+
|MacOS || (Обязательный) Содержит автономный исполняемый код приложения. Обычно этот каталог содержит только один двоичный файл с основной точкой входа вашего приложения и статически связанным кодом. Однако вы можете поместить в этот каталог и другие автономные исполняемые файлы (например, инструменты командной строки).
 
|-
 
|-
|Resources || Contains all of the application’s resource files. The contents of this directory are further organized to distinguish between localized and nonlocalized resources. For more information about the structure of this directory, see [[Add_an_Apple_Help_Book_to_your_macOS_app#Bundle_layouts|Adding a Help Book - Bundle layouts]].
+
|Resources || Содержит все файлы ресурсов приложения. Содержимое этого каталога дополнительно организовано, чтобы различать локализованные и нелокализованные ресурсы. Для получения дополнительных сведений о структуре этого каталога см. [[Add_an_Apple_Help_Book_to_your_macOS_app#Bundle_layouts|Adding a Help Book - Bundle layouts]].
 
|-
 
|-
|Frameworks || Contains any private shared libraries and frameworks used by the executable. The frameworks in this directory are revision-locked to the application and cannot be superseded by any other, even newer, versions that may be available to the operating system. In other words, the frameworks included in this directory take precedence over any other similarly named frameworks found in other parts of the operating system. For information on how to add shared libraries to your application bundle, see [[macOS Dynamic Libraries]].
+
|Frameworks || Содержит все частные разделяемые библиотеки и фреймворки, используемые исполняемым файлом. Платформы в этом каталоге привязаны к редакциям приложения и не могут быть заменены никакими другими, даже более новыми версиями, которые могут быть доступны для операционной системы. Другими словами, фреймворки, включенные в этот каталог, имеют приоритет над любыми другими фреймворками с аналогичными названиями в других частях операционной системы. Для получения информации о том, как добавить общие библиотеки в пакет приложений, см. [[macOS Dynamic Libraries]].
 
|-
 
|-
|PlugIns || Contains loadable bundles that extend the basic features of your application. You use this directory to include code modules that must be loaded into your application’s process space in order to be used. You would not use this directory to store standalone executables.
+
|PlugIns || Содержит загружаемые пакеты, расширяющие базовые функции вашего приложения. Вы используете этот каталог для включения модулей кода, которые должны быть загружены в пространство процесса вашего приложения для использования. Вы не должны использовать этот каталог для хранения автономных исполняемых файлов.
 
|-
 
|-
|SharedSupport || Contains additional non-critical resources that do not impact the ability of the application to run. You might use this directory to include things like document templates, clip art, and tutorials that your application expects to be present but that do not affect the ability of your application to run.
+
|SharedSupport || Содержит дополнительные некритические ресурсы, которые не влияют на возможность запуска приложения. Вы можете использовать этот каталог для включения таких вещей, как шаблоны документов, картинки и учебные пособия, наличие которых может ожидать ваше приложение, но которые не влияют на способность вашего приложения работать.
 
|}
 
|}
  
== Creating the Application Bundle ==
+
== Создание пакета приложения ==
  
=== From within Lazarus ===
+
=== Посредством Lazarus ===
  
Open a project and go to Project -> Project Options -> Application tab and push the [[IDE_Window:_Project_Options#Application_Settings|Create Application Bundle]] button. The resulting Application Bundle will contain a symbolic link to the real executable.
+
Откройте проект и перейдите в Project -> Project Options -> вкладку Application, и нажмите кнопку [[IDE_Window:_Project_Options/ru#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B8_.D0.BF.D1.80.D0.B8.D0.BB.D0.BE.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F|Create Application Bundle]]. Полученный пакет приложений будет содержать символическую ссылку на реальный исполняемый файл.
  
Note: You must remove the symbolic link and copy the real executable "project1" into the project1.app/Contents/MacOS/ directory to distribute the application and use it on another computer.
+
{{Note| Вы должны удалить символическую ссылку и скопировать реальный исполняемый файл "project1" в каталог project1.app/Contents/MacOS/, если хотите распространять приложение и использовать его на другом компьютере.}}
  
=== Via the command-line tool shipped with Lazarus ===
+
=== Посредством инструмента командной строки, поставляемым с Lazarus ===
  
Open /Library/Lazarus/components/macfiles/examples/createmacapplication.lpi in the IDE. Compile.
+
Откройте /Library/Lazarus/components/macfiles/examples/createmacapplication.lpi в IDE. Скомпилируйте.
  
Open a Terminal of your choice and type:
+
Откройте терминал по вашему выбору и введите:
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 61: Line 61:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Via a shell script ===
+
=== Посредством сценария оболочки ===
  
 
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.
 
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 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.
 
* 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 исполняемый файл копируется, поэтому комплект приложения в целом можно использовать отдельно/скопировать в другие места.
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 175: Line 179:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Executing an application via the Application Bundle ==
+
== Запуск приложения через Application Bundle ==
  
You can start the application from the IDE, via its Finder icon or in the native macOS Terminal.app via "open project1.app".
+
Вы можете запустить приложение из среды IDE с помощью значка Finder или в собственном MacOS-овском Terminal.app посредством "open project1.app".
  
== See also ==
+
== См.также ==
  
 
* [[macOS property list files]]
 
* [[macOS property list files]]
Line 185: Line 189:
 
* [[Hiding a macOS app from the Dock]]
 
* [[Hiding a macOS app from the Dock]]
  
== External links ==
+
== Внешние ссылки ==
  
 
* [https://developer.apple.com/documentation/foundation/nsbundle Apple: NSBundle class]
 
* [https://developer.apple.com/documentation/foundation/nsbundle Apple: NSBundle class]

Latest revision as of 16:46, 18 August 2020

English (en) 日本語 (ja) русский (ru)

macOSlogo.png

Эта статья относится только к macOS.

См. также: Multiplatform Programming Guide


Обзор

Пакет приложений - это каталог с расширением «.app» в системах macOS. Он содержит исполняемый файл приложения, файлы ресурсов, файлы библиотеки (если есть), файлы справки и информацию о приложении и необходим для правильного выполнения приложений. Mac Finder рассматривает этот каталог .app как файл приложения и по умолчанию не отображает ни один из его подкаталогов.

Изнутри Lazarus он используется для интерфейсов Carbon и Cocoa, но можно также создавать приложения с другими интерфейсами (например, Gtk или QAt) с помощью скриптов.

Вы можете узнать больше о пакетах приложений в Apple Bundle Programming Guide.

Настройки приложения (пакета) находятся в файле списка свойств: Info.plist , расположенном в каталоге bundle.app/Contents/.

Чтобы получить доступ к набору приложений, вам нужно щелкнуть правой кнопкой мыши (ctrl-левой кнопкой мыши) на пакете и выбрать Show Package Contents(Показать содержимое пакета).

openbundle.png

infoplist.png

Макет пакета приложения

Базовая структура пакета приложений 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. Полученный пакет приложений будет содержать символическую ссылку на реальный исполняемый файл.

Light bulb  Примечание: Вы должны удалить символическую ссылку и скопировать реальный исполняемый файл "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".

См.также

Внешние ссылки