PortableApps.com Format 3.5

PortableApps.com Format — это простая спецификация, которая определяет расположение файлов и каталогов, а также поведение в работе переносимых приложений. Файлы распространяются в удобном для использования формате .paf.exe. Спецификация поделена на разделы, для удобства чтения.

1. Расположение файлов и директорий
2. appinfo.ini (Настройки приложения)
3. Иконки
4. PortableApps.com AppCompactor и appcompactor.ini (Больше не рекомендуется)
5. PortableApps.com Installer, installer.ini, ведение журнала установки
6. Модификация ОС и Переносимость
7. Установка плагинов
8. Разрешения


1. Расположение файлов и директорий

Начальная структура директорий всех переносимых приложений состоит из основной директории AppNamePortable, которая содержит в себе три дочерних: App, Data и Other.

AppNamePortable
+ App
  + AppInfo
    + FileTypeIcons
  + AppName
  + DefaultData
+ Data
+ Other
  + Help
    + Images
  + Source

AppNamePortable: содержит основную программу для запуска приложений, обычно называется AppNamePortable.exe и основной файл справки help.html. Никакие другие файлы в этой директории по умолчанию не находятся.

App: содержит все необходимые файлы, из которых состоит само приложение, обычно в директории AppName. Другая директория, под названием AppInfo, (описывается в разделе 2) содержит в себе настройки для меню PortableApps.com Platform, а также иконки используемые им. Там может также находится файл настроек launcher.ini, используемый PortableApps.com Launcher. Третья директория DefaultData используется в качестве носителя для файлов «по умолчанию», которые должны быть помещены в директорию Data. Как правило, программа для запуска приложений при своем запуске проверяет, есть ли файлы внутри директории Data и, в случае их отсутствия, копирует их из DefaultData. Следующая версия PortableApps.com Installer будет делать то же самое.

Data: содержит все пользовательские данные для переносимого приложения, включая настройки, конфигурацию и другие данные, которые обычно хранятся в APPDATA для локально установленного приложения. Приложения, выпущенные PortableApps.com, обычно содержат параметры в подкаталоге settings, профили для приложений Mozilla в подкаталоге profiles. Никакие файлы самого приложения не должны находиться в директории Data. Программа запуска приложения или само приложение должны иметь возможность восстановить директорию Data и все необходимые файлы в ней, если она отсутствует.

Other: содержит файлы, которые не подпадают под другие категории. Дополнительные изображения и другие файлы, используемые файлом справки help.html, находящегося в основной директории AppNamePortable, содержатся в подкаталог Help директори Other. Изображения для файла справки будут находиться в подкаталоге Images в подкаталоге Help.

Любые исходные файлы и их лицензии, включая исходные файлы для PortableApps.com Installer (в случае необходимости) находятся в подкаталоге Source. Это могут быть исходные файлы программы для запуска приложений AppNamePortable.exe, файл readme.txt, в котором подробно описывается работа программы для запуска приложений, информация о лицензии и другое.


2. appinfo.ini (Настройки приложения)

Предоставляется информация о переносимом приложение и его настройках платформе PortableApps.com с помощью деталей, расположенных в директории AppInfo. В директори AppNamePortable\App директория AppInfo содержит файл appinfo.ini, а также любые значки и иконки, используемые в меню (объясняется в разделе 3). Файл appinfo.ini содержит следующее:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[Format]
Type=PortableApps.comFormat
Version=3.4
 
[Details]
Name=AppName Portable
AppID=AppNamePortable
BaseAppName=AppName
Publisher=App Developer & PortableApps.com
Homepage=PortableApps.com/AppNamePortable
Donate=example.com/donate
Category=Utilities
Description=AppName Portable is a tool that does something.
Language=Multilingual
Trademarks='thing' is a trademark of XYZ Inc
InstallType=
 
[License]
Shareable=true
OpenSource=true
Freeware=true
CommercialUse=true
EULAVersion=1
 
[Version]
PackageVersion=1.2.0.1
DisplayVersion=1.2 Release 1
 
[SpecialPaths]
Plugins=NONE
 
[Dependencies]
UsesGhostscript=optional
UsesJava=no
UsesDotNetVersion=
 
[Control]
Icons=1
Start=AppNamePortable.exe
ExtractIcon=App\AppName\AppName.exe
ExtractName=App\AppName\AppName.exe
 
[Associations]
FileTypes=html,htm,xhtml,xhtm,xht,shtml
FileTypeCommandLine=/Open=%1
FileTypeCommandLine-extension=/OpenExtension=%1
Protocols=http,https,gtp,gopher
ProtocolCommandLine=--protocolhandler=%1
ProtocolCommandLine-protocol=--http:%1
SendTo=true
SendToCommandLine=-multiplefiles "%1"
Shell=true
ShellCommand=/idlist,%I,%L
 
[FileTypeIcons]
swf=video
ttp=custom
qwe=app

Записи, которые содержатся в  файле appinfo.ini, выглядят следующим образом:

Пожалуйста, не используйте в полях двойные кавычки

Раздел [Format]:

Type — это тип файла конфигурации (в настоящий момент действует только PortableApps.comFormat).

Version — версия формата (текущая 3.4)

Раздел [Details]:

Name — это наименование переносимого приложения, которое отображается в PortableApps.com Menu

AppID — уникальный идентификатор приложения. Обычно указывается имя приложения без пробелов, присвоенное разработчиком PortableApps.com. Если переносимое приложение выпускается другой организацией идентификатор должен задаваться как AppNamePortable-example.com, где example.com —  наименование домена компании. Идентификатор приложений, выпущенных пользователями PortableApps.com, которые не стремятся их сделать официальным релизом, задаются как AppNamePortable-username, где  username — имя пользователя на  PortableApps.com. AppID могут содержать буквы, цифры, точки (.), дефисы (-), знаки плюс (+) и подчеркивания (_).

BaseAppName (необязательно) — это наименование базового приложения, если оно отличается от наименования программы запуска приложения. Используется в случаях, когда юридически требуется его указать для специфических приложений. Если в нем нет необходимости, его следует убрать из  appinfo.ini.

Publisher — это название издателя переносимого приложения, которое будет появляться в подсказке PortableApps.com Platform и в подробных сведениях о приложении. В случае перепаковки приложения, вы должны также указать наименование его создателя.

Homepage – это домашняя страница переносимого приложения (не стационарного)

Donate – ссылка на страницу приложения, где принимаются добровольные взносы.

Category – категория, по которой приложение отображается в PortableApps.com Platform. Допустимые значения: Accessibility, Development, Education, Games, Graphics & Pictures, Internet, Music & Video, Office, Security или Utilities. Платформой поддерживаются исключительно эти записи, вне зависимости от языка самого приложения (даже если это русское приложение, оно все равно должно использовать английский перевод категории).

Description – краткое описание приложения. Максимальное количество символов 512.

Language —  язык, на котором доступно приложение. Если приложение имеет несколько переводов, значение задается как: Multilingual. Параметр языка указывается определённого формата. Допустимые значения: Afrikaans, Albanian, Arabic, Armenian, Basque, Belarusian, Bosnian, Breton, Bulgarian, Catalan, Cibemba, Croatian, Czech, Danish, Dutch, Efik, English, EnglishGB, Esperanto, Estonian, Farsi, Finnish, French, Galician, Georgian, German, Greek, Hebrew, Hungarian, Icelandic, Igbo, Indonesian, Irish, Italian, Japanese, Khmer, Korean, Kurdish, Latvian, Lithuanian, Luxembourgish, Macedonian, Malagasy, Malay, Mongolian, Norwegian, NorwegianNynorsk, Pashto, Polish, Portuguese, PortugueseBR, Romanian, Russian, Serbian, SerbianLatin, SimpChinese, Slovak, Slovenian, Spanish, SpanishInternational, Swahili, Swedish, Thai, TradChinese, Turkish, Ukrainian, Uzbek, Valencian, Vietnamese, Welsh, Yoruba.

Trademarks (необязательно) – любые заметки об авторском праве. Например, HappyApp является торговой маркой Acme, Inc. Примечание, двойные кавычки в этом поле будут преобразованы в одинарные.

InstallType (необязательно) – применяется, чтобы указать определённый тип установки. Для приложений, которые упаковываются с разными языками отдельно (например, Mozilla Firefox), в этой строке может быть указан именно язык. В установочных файлах с дополнительными компонентами, эта строка обновляется автоматически, учитывая настройки файла installer.ini (см. Ниже). InstallType будет отображаться в PortableApps.com Platform в деталях приложения.

Раздел [License]: (все значения указываются как true или false)

Пожалуйста, не используйте в полях двойные кавычки

Shareable – разрешено ли копирование приложения с одного диска на другой (без директории Data)

OpenSource — является ли приложение полностью с открытым исходным кодом в соответствии с лицензией, одобренной OSI

Freeware — является ли приложение бесплатным (без стоимости)

CommercialUse – разрешено ли применение приложения в бизнес среде. Это не разрешение на коммерческое распространение приложения. Чтобы устранить путаницу, это поле будет в дальнейшем переименовано.

EULAVersion (необязательно) – указывается версия лицензионного соглашения для конечного использования, используется при применении EULA.txt и требования от пользователя согласия с лицензией на установку. Если вы используете EULA и пропускаете эту запись, будет использоваться значение по умолчанию 1.

Раздел [Version]:

Пожалуйста, не используйте в полях двойные кавычки

PackageVersion — это версия сборки переносимого приложения. Указывается в формате 1.2.3.4. без сторонних симолов. Увеличивается с каждым последующим выпуском.

DisplayVersion — это удобная для использования версия, используется для её описания. Т.е. DisplayVersion может отображаться как 2.4 Revision 2, в то время как PackageVersion должна быть 2.4.0.2

Раздел [SpecialPaths]:

Plugins (необязательно) — путь к добавленным пользователем плагинам, если они находится в каталоге приложения (к примеру Firefox). Исключается при вычислением программы установки места для обновления переносимого приложения. Если директория plugins отсутствует в приложении, эти значение и раздел можно убрать из appinfo.ini.

Раздел [Dependencies]:

UsesGhostscript — указывает, использует ли переносимое приложение Ghostscript Portable. Если используется, значение задается как yes, в противном случае no. В случае, если Ghostscript добавляет дополнительные функции при работе приложения, но в целом не требуется для его работы, это значение должно быть установлено как optional.

UsesJava (необязательно) — указывает, использует ли переносимое приложение Java Portable. Если используется, значение задается как yes, в противном случае no. В случае, если Java добавляет дополнительные функции при работе приложения, но в целом не требуется для его работы, это значение должно быть установлено как optional. Устаревшие значения true/false будут расцениваться как yes/no.

UsesDotNetVersion (необязательно) — определяет минимальную, необходимую для приложения, версию .NET-framework. Если требуется, необходимо указать минимальную версию, необходимую для работы приложения (пример: 1.1, 2.0, 3.0, 3.5, 4.0). Если необходим специальный сервис пак, его следует указать после номера версии (пример: 2.0SP2, 3.0SP1). Если используется значение 4.0, предположительно приложению требуется только профиль клиента. Если необходим полностью установленный framework, можно указать как  4.0F. Если .NET не требуется, это значение должно быть пропущено.

Раздел [Control]:

Пожалуйста, не используйте в полях двойные кавычки

Icons — устанавливается количество иконок приложения , которые отображаются в PortableApps.com Menu

Start — командная строка к запуску программы для запуска приложения относительно каталога AppNamePortable. Как правило это AppNamePortable.exe.

ExtractIcon (необязательно) — применяется если необходимый файл appicon.ico приложения находится в директории AppInfo. Используется только в том случае, когда это юридически необходимо для запуска определенных приложений, т. к. это заставляет его более медленно запускаться. Когда в этом нет необходимости, это значение должно быть убрано. Эта настройка доступна приложениям, у которых одна только иконка.

ExtractName (необязательно) – применяется в случае, если присвоенное наименование приложения отличается от наименования программы для его запуска, указанного в appinfo.ini. Используется только в том случае, когда это юридически необходимо для запуска определенных приложений, т. к. это заставляет его более медленно запускаться. Когда в этом нет необходимости, это значение должно быть убрано. Эта настройка доступна приложениям, у которых одна только иконка.

Иногда у приложения может быть несколько иконок, например OpenOffice.org Portable. В этом случае последний раздел файла appinfo.ini будет выглядеть так:

1
2
3
4
5
6
7
[Control]
Icons=2
Start=AppNamePortable.exe
Start1=AppNamePortable.exe
Name1=AppName Portable
Start2=AppNamePortable2.exe
Name2=AppName Portable Other Part

Icons – попрежнему является количеством иконок, отображаемых в PortableApps.com Menu.

Start – командная строка для выполнения основного приложения.

Start1 – это командная строка для первой иконки (часто такая же, как Start).

Name1 — это имя, которое отображается в меню для первой иконки.

Start2 – это командная строка для второй иконки.

Name2 — это имя, которое отображается в меню для второй иконки.

В случае нескольких иконок, можно использовать ExtractIcon1, ExtractIcon2 и т.д если это юридически необходимо. Обычно это не требуется.

Раздел [Associations]:

Раздел позволяет переносимому приложению указывать платформе, какие типы файлов (документы, аудиофайлы и т. д.) или протоколы (http, torrent и т. д.) оно способно открывать. Для приложений, которым нет необходимости связывать себя с какими-либо файлами или протоколами, этот раздел следует пропустить.

FileTypes (необязательно) — перечень расширений файлов, указываются через запятую, которые переносимое приложение может открыть. Как пример txt, html, doc и т. д.

FileTypeCommandLine (необязательно) — параметр командной строки, который передает информацию в программу запуска приложения AppNamePortable.exe, чтобы приложение могло правильно открывать необходимые файлы. %1 — идентифицирует точку по которой файл будет пропущен. Для большинства приложений, способных открывать файлы, информация просто передается в его в программу для запуска, и параметр FileTypeCommandLine не нужен и должен быть пропущен.

FileTypeCommandLine-extension (необязательно) — параметр командной строки, который передается в программу запуска приложения AppNamePortable.exe для того, чтобы приложение могло нужным образом открыть определенный тип файла с нужным расширением (например: FileTypeCommandLine-html = или FileTypeCommandLine-doc =). %1 — идентифицирует точку по которой файл будет пропущен. FileTypeCommandLine-extension используется только тогда, когда у переносимого приложения есть другая командная строка для разных типов файлов и необходимо переопределить параметр FileTypeCommandLine для отдельного расширения. Для большинства приложений в этом нет необходимости, и следует пропустить.

Protocols (необязательно) — перечень протоколов, указываются через запятую, которые переносимое приложение может открыть. Как пример http, mailto, torrent и т. д.

ProtocolCommandLine (необязательно) — параметр командной строки, который передает информацию в программу запуска приложения AppNamePortable.exe, чтобы приложение могло правильно открывать необходимые протоколы. %1 — идентифицирует точку по которой файл, ссылка или строка будут пропущены.

ProtocolCommandLine-protocol (необязательно) — параметр командной строки, который передается в программу запуска приложения AppNamePortable.exe для того, чтобы приложение могло нужным образом открыть определенный протокол (например: ProtocolCommandLine-http= or ProtocolCommandLine-torrent=). %1 — идентифицирует точку по которой файл, ссылка или строка будут пропущены. ProtocolCommandLine-protocol используется только тогда, когда у переносимого приложения есть другая командная строка для разных типов протоколов и необходимо переопределить параметр ProtocolCommandLine для отдельного протокола. Для большинства приложений в этом нет необходимости, и следует пропустить.

SendTo (необязательно) — если установлено значение true, это указывает на то, должно ли отображаться данное приложение в подменю Windows Send To. Это подходит только для немногих приложений (например, антивирусы) и, как правило, не указывается.

SendToCommandLine (необязательно) — это параметр командной строки, который передается в программу для запуска приложений AppNamePortable.exe, чтобы приложение правильно обрабатывало всё то, что отправлено в команду SendTo. %1 указывает точку, в которой будет вставлено file(s)/path(s).

Shell (необязательно) — значение true указывает, должно ли данное приложение применяться в качестве оболочки Windows. Это подходит только для очень специфических целей и обычно не указывается.

ShellCommandLine (необязательно) — это параметр командной строки, который передается в программу для запуска приложений AppNamePortable.exe, чтобы приложение правильно обрабатывало переменные %I и %L, отправленные оболочкой Windows.

Раздел [FileTypeIcons]:

Этот раздел позволяет переносимому приложению определять иконки для любого типа файлов, которые может открывать приложение, перечисленных в ранее описанном разделе [Associations]. Раздел необходим только для типов файлов, которые не встроены в  PortableApps.com Platform. Встроенные типы и категории файлов:

  • archive: 7z, bzip2, cab, gz, gzip, rar, tar, zip, wim, xz, z
  • audio: aac, aif, iff, flac, m3u, m3u8, m4a, mid, midi, mp3, mpa, ogg, pls, ra, wav, wv
  • calendar: ical, icalendar, ics, ifb, vcs
  • chart: (no defaults)
  • code: ada, ads, adb, asm, asp, aspx, au3, bas, c, cmake, h, hpp, hxx, cpp, cc, cs, css, d, diff, patch, es, iss, java, js, jsp, lua, m, mak, nsi, nsh, pas, inc, pl, pm, plx, php, php3, phtml, pro, ps1, py, pyw, r, rb, rbw, rc, sql, vb, vbs, xml, xsml, xsl, xsd, wsdl
  • contact: vcard, vcf
  • database: db, odb, sqlite
  • diskimage: cue, img, iso
  • drawing: ai, eps, odg, otp, sda, sdd, sgv, std, svg, svgz, sxd
  • document: abw, djvu, doc, docm, docx, dotx, dotm, fodt, odt, ott, pdf, rtf, stw, sxw, uot, ps
  • ebook: azw, cbr, cbz, epub, lrf, lrx, lit, mobi
  • font: fnt, otf, ttf
  • image: ani, bmp, cur, ico, jpg, jpeg, gif, ora, pcx, png, psd, tif, tiff, xcf
  • java: jar
  • presentation: odp, otp, sxi, sti, sxd, pps, ppsx, ppt, pptm, pptx, pot, sdd, sdp
  • spreadsheet: gnumeric, ods, ots, sxc, stc, xls, xlc, xlm, xlw, xlk, sdc, csv, xlsx, xlsm
  • text: cfg, inf, ini, log, nfo, txt, text
  • torrent: torrent
  • video: 3gp, asf, avi, flv, mp4, m4v, mpe, mpeg, mpg, mkv, mov, ogm, qt, rm, rmvb, webm, wmv
  • webpage: html, htm, mht, mhtml, shtml, xhtml, xhtm, xht

Для типов файлов, не входящих в этот список, параметр [FileTypeIcons] должен содержать по одной записи для каждого типа файлов, к которому присуждается иконка. Записи могут указываться в категории (archive, audio, calendar и т. д.), ‘app’ – указывает на то, что должен использоваться основная иконка переносимого приложения, ‘custom’ – указывает, что соответствующие иконки будут включены в App\AppInfo\FileTypeIcons так, как описано ниже в разделе Icons. Все ассоциированные типы файлов, указанные в разделе [Associations], но не поддерживаемые платформой, будут отображаться под иконкой переносимого приложения.

Пример использования раздела [FileTypeIcons]:

1
2
3
4
5
[FileTypeIcons]
swf=video
ttp=custom
qwe=app
AllOtherIcons=image

В этом примере тип файла swf будет содержать встроенную иконку видео для своих файлов, тип файла sqe будет иметь иконку приложения appicon.ico, которая будет использоваться для его файлов, а тип файла ttp будет содержать пользовательскую иконку, размещенную в App\AppInfo\FileTypeIcons. Заключительная запись AllOtherIcons используется для применения любых иконок, связанных с приложением, но не определенных платформой или в разделе FileTypeIcons. Запись AllOtherIcons полезна для приложений, таких как просмотрщики изображений, которые поддерживают сотни форматов изображений, без необходимости их отдельных записей, используется иконка переносимого приложения. Информация о пользовательских значках находится в конце раздела Icons.


3. Иконки

В каталоге AppNamePortable\App\AppInfo расположены иконки, используемые приложениями PortableApps.com Installer и PortableApps.com Menu. Значки располагаются в форматах ICO и PNG. Основная иконка называется appicon.ico, appicon_16.png, appicon_32.png, appicon_75.png* и appicon_128.png*. Если приложение также использует несколько иконок (как описано выше), наименования указываются как appicon1.ico (appicon1_16.png и appicon1_32.png), appicon2.ico и т. д. Номера соответствуют Start1, Start2 и т. д., указанных в разделе Control.

* Обратите внимание, что варианты 75px и 128px не являются обязательными и не требуются установщиком для компиляции. Тем не менее, разработчикам предлагается включить эти значки с высоким разрешением для будущих функций на платформе и для улучшения графики в установщике на Windows 10.

Значки PNG имеют формат 16×16, 32×32, 75×75 и 128×128 соответственно имеют формат True Color с альфа-прозрачностью.

Файл ICO должен содержать 6 форматов, а при желании и дополнительный формат Vista:

  • 16px — 256 color (8-bit)
  • 32px — 256 color (8-bit)
  • 48px — 256 color (8-bit)
  • 16px — True Color + Alpha (32-bit / XP format)
  • 32px — True Color + Alpha (32-bit / XP format)
  • 48px — True Color + Alpha (32-bit / XP format)
  • 256px — True Color + Alpha PNG (32-bit PNG / Vista format) *НЕОБЯЗАТЕЛЬНЫЙ/РЕКОМЕНДУЕМЫЙ

Размер 256px является необязательным, но рекомендуемым. Он используется в Windows Vista/7/8 для отображения больших размеров иконок. Некоторые разработчики могут его включить в проект, но для большинства пользователей в этом нет необходимости.

Примечание к ExtractIcon – в проектах, которые используют функцию ExtractIcon в файле appinfo.ini, версии иконок PNG и appicon.ico не будут использоваться и могут быть пропущены. Для совместимости с предыдущей версией будет использоваться общий файл appicon.ico.

В дополнение к основной иконке переносимого приложения дополнительные иконки типов файлов будут храниться в директории AppNamePortable\App\AppInfo\FileTypeIcons. Это специальные иконки для использования только с этим приложением, как указано в разделе [FileTypeIcons] файла appinfo.ini. Связанные с записями [FileTypeIcons] файлы ICO and PNG должны находиться в директории FileTypeIcons. Иконки, соответствующие форматам, называют по принципу основных. К примеру, параметру ‘swf’ было присвоено значение ‘custom’ в [FileTypeIcons], таким образом файлы будут размещены в директории AppNamePortable\App\AppInfo\FileTypeIcons и называться swf.ico, swf_16.png, swf_32.png и swf_128.png. Для записи AllOtherIcons, будут использованы файлы AllOtherIcons.ico, AllOtherIcons_16.png, AllOtherIcons_32.png, AllOtherIcons_128.png.


4. PortableApps.com AppCompactor и appcompactor.ini (Больше не рекомендуется)

Обратите внимание, что мы не рекомендуем использовать AppCompactor с официальными релизами из-за увеличения ложных срабатываний антивирусов. Хотя и позволяем использовать его разработчиками.

Приложение PortableApps.com AppCompactor используется для сжатия размеров приложения с целью их размещения на небольших по размеру съемных носителях и увеличения скорости их запуска. Как правило, приложение AppCompactor полностью автоматизировано, оно может быть просто запущенно для определённого переносимого приложения. Но есть такие приложения, которые просто несовместимы с AppCompactor, а в автоматическом режиме он не может определить эти несовместимости. Также бывают случаи, что в сжатии нуждаются определённые файлы приложения, которые сам по себе AppCompactor не обрабатывает. В таких случаях может быть использован файл AppCompactor.ini.

Файл AppCompactor.ini размещается в директории AppInfo, параллельно с файлами AppInfo.ini и Installer.ini. Пример:

1
2
3
4
[PortableApps.comAppCompactor]
FilesExcluded=msvcm90.dll|msvcp90.dll|mscvr90.dll
AdditionalExtensionsExcluded=pyd|irc
AdditionalExtensionsIncluded=example|beta

Раздел [PortableApps.comAppCompactor]:

Примечание: Если вы не планируете использовать PortableApps.com AppCompactor для сжатия вашего приложения, или вносить, либо какие, изменения в сжатие его файлов, этот раздел можете пропустить.

FilesExcluded — задаются файлы, которые вы хотите исключить из сжатия AppCompactor, разделяются вертикальным слешем |.

Обратите внимание, что файлы, указанные в примере, исключены от сжатия по умолчанию (Visual C++ runtime 9.0) вдобавок исключаются версии 7.1, 8.0 и 10.0 этих файлов.

AdditionalExtensionsExcluded – дополнительные расширения файлов, которые вы хотите исключить из сжатия, разделяются вертикальным слешем |.

AdditionalExtensionsIncluded – дополнительные расширения файлов, которые вы хотите включить в сжатия, разделяются вертикальным слешем |.

CompressionFileSizeCutOff — точка игнорирования, при которой пропускаются файлы для сжатия, указывается в байтах. По умолчанию установлено значение 4096 – это означает, что файлы размером 4 КБ и меньше игнорируются при сжатии.


5. PortableApps.com Installer, installer.ini, ведение журнала установки

Все приложения в формате PortableApps.com должны использовать последнюю версию PortableApps.com Installer. Установщик берет настройки из файла appinfo.ini и, в случае необходимости, из файла installer.ini, который размещается в директории AppInfo. Файл installer.ini содержит в себе гораздо больше настроек для установщика и более тонко контролирует процесс установки. Файл installer.ini состоит из:

Обратите внимание, что пример показывает только возможные варианты. Его не следует использовать в проекте целиком. Для проектов с installer.ini следует задавать необходимые функции с нуля.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
[CheckRunning]
CloseEXE=Custom.exe
CloseName=AppName
 
[Source]
IncludeInstallerSource=false
 
[MainDirectories]
RemoveAppDirectory=true
RemoveOtherDirectory=true
 
[OptionalComponents]
OptionalComponents=true
MainSectionTitle=AppName Portable (English) [Required]
MainSectionDescription=Install the portable app
OptionalSectionTitle=Additional Languages
OptionalSectionDescription=Add multilingual support for this app
OptionalSectionSelectedInstallType=Multilingual
OptionalSectionNotSelectedInstallType=English
OptionalSectionPreSelectedIfNonEnglishInstall=true
OptionalSectionInstalledWhenSilent=true
OptionalDirectory1=
OptionalFile1=
 
[CopyLocalFiles]
CopyLocalFiles=true
CopyFromRegPath=HKLM\Software\AppName
CopyFromRegKey=AppPath
CopyFromRegRemoveDirectories=2
CopyFromDirectory=%PROGRAMFILES%\AppName
CopyToDirectory=App\AppName
 
[DownloadFiles]
AdditionalInstallSize=
DownloadURL=
DownloadKnockURL=
DownloadName=
DownloadFilename=
DownloadMD5=
DownloadTo=
AdvancedExtract1To=
AdvancedExtract1Filter=
DoubleExtractFilename=
DoubleExtract1To=
DoubleExtract1Filter=
Download2URL=
Download2KnockURL=
Download2Name=
Download2Filename=
Download2MD5=
Download2To=
Download2AdvancedExtract1To=
Download2AdvancedExtract1Filter=
Download2DoubleExtractFilename=
Download2DoubleExtract1To=
Download2DoubleExtract1Filter=
 
[Languages]
ENGLISH=true
ENGLISHGB=true
AFRIKAANS=true
ALBANIAN=true
ARABIC=true
ARMENIAN=true
BASQUE=true
BELARUSIAN=true
BOSNIAN=true
BRETON=true
BULGARIAN=true
CATALAN=true
CIBEMBA=true
CROATIAN=true
CZECH=true
DANISH=true
DUTCH=true
EFIK=true
ESPERANTO=true
ESTONIAN=true
FARSI=true
FINNISH=true
FRENCH=true
GALICIAN=true
GEORGIAN=true
GERMAN=true
GREEK=true
HEBREW=true
HUNGARIAN=true
ICELANDIC=true
IGBO=true
INDONESIAN=true
IRISH=true
ITALIAN=true
JAPANESE=true
KHMER=true
KOREAN=true
KURDISH=true
LATVIAN=true
LITHUANIAN=true
LUXEMBOURGISH=true
MACEDONIAN=true
MALAGASY=true
MALAY=true
MONGOLIAN=true
NORWEGIAN=true
NORWEGIANNYNORSK=true
PASHTO=true
POLISH=true
PORTUGUESE=true
PORTUGUESEBR=true
ROMANIAN=true
RUSSIAN=true
SERBIAN=true
SERBIANLATIN=true
SIMPCHINESE=true
SLOVAK=true
SLOVENIAN=true
SPANISH=true
SPANISHINTERNATIONAL=true
SWAHILI=true
SWEDISH=true
THAI=true
TRADCHINESE=true
TURKISH=true
UKRAINIAN=true
UZBEK=true
VALENCIAN=true
VIETNAMESE=true
WELSH=true
YORUBA=true
 
[DirectoriesToPreserve]
PreserveDirectory1=
 
[DirectoriesToRemove]
RemoveDirectory1=
 
[FilesToPreserve]
PreserveFile1=
 
[FilesToRemove]
RemoveFile1=

Использование installer.ini необязательно. В случае, если он пропущен, директории App и Other будут полностью заменяться, а установщик будет получаться либо с отдельным языком (как указано в настройках appinfo.ini) либо содержать все доступные языки. Исходные файлы установщика не будут включаться при установке.

Раздел [CheckRunning]:

CloseEXE (необязательно) – назначает исполняемый файл для проверки на действие при обновлении. Если исполняемый файл тот же, что и указано в параметре Control — Start в appinfo.ini, эту запись следует пропустить в файле installer.ini. Если вы не хотите проверять, работает ли что-либо при обновлении, можете указать CloseEXE = NONE (использовать прописные буквы), при этом будьте осторожны, пользователь может попытаться обновить запущенное приложение.

CloseName (необязательно) – присваивает наименование того, что будет закрыто при обновлении. Если совпадает с наименованием переносимого приложения, которое указано в appinfo.ini, тогда запись следует исключить из installer.ini.

Раздел [Source]:

IncludeInstallerSource (необязательно) — указывает, будет ли сохранён исходный код portableapps.com installer при установке переносимого приложения в директорию setting, по умолчанию true.

Раздел [MainDirectories]:

RemoveAppDirectory, RemoveDataDirectory и RemoveOtherDirectory (необязательно) — указывает, будут ли удалены или сохранены директории при обновлении переносимого приложения. По умолчанию, директории  App and Other удаляются, директория Data — сохраняется. Если вы хотите оставить настройки по умолчанию, данные записи в  installer.ini необходимо пропустить. (обратите внимание, что вдальнейшем вы сможете сохранить определенные директории и файлы)

Раздел [OptionalComponents]:

OptionalComponents — значение true позволяет установщику использовать дополнительные параметры. Обычно используется для установки дополнительных языков для приложения.

MainSectionTitle (необязательно) — указывает наименование приложения для первого раздела установщика. По умолчанию указывается «AppName Portable (обязательно на английском)», при этом данная информация считывается с файла appinfo.ini. Эта настройка может быть пропущена, если вас устраивают данные по умолчанию.

MainSectionDescription (необязательно) — указывает описание, которое отображается в первом разделе установщика. По умолчанию указывается «Install the portable app». Если значение по умолчанию вас устраивает, пропустите эту настройку.

OptionalSectionTitle (необязательно) — наименование, отображаемое во втором/дополнительном разделе установщика.  По умолчанию указывается «Additional Languages». Если значение по умолчанию вас устраивает, пропустите эту настройку.

OptionalSectionDescription (необязательно) — указывает описание, которое отображается во втором/дополнительном разделе установщика. По умолчанию указывается «Add multilingual support for this app». Если значение по умолчанию вас устраивает, пропустите эту настройку.

OptionalSectionSelectedInstallType (необязательно) — указывает значение для параметра InstallType, которое будет записано в файл appinfo.ini и отображено в PlatformApps.com Platform, в случае, если пользователь устанавливает приложение с дополнительным компонентом. По умолчанию указывается «Multilingual». Если значение по умолчанию вас устраивает, пропустите эту настройку.

OptionalSectionNotSelectedInstallType (необязательно) — указывает значение для параметра InstallType, которое будет записано в файл appinfo.ini и отображено в PlatformApps.com Platform, в случае, если пользователь устанавливает приложение без дополнительного компонента. По умолчанию указывается «English». Если значение по умолчанию вас устраивает, пропустите эту настройку.

OptionalSectionPreSelectedIfNonEnglishInstall (необязательно) — указывает, выбирается ли по умолчанию дополнительный компонент в том случае, если пользователь выбрал язык для установщика отличный от английского. По умолчанию устанавливается значение true. Если значение по умолчанию вас устраивает, пропустите эту настройку.

OptionalSectionInstalledWhenSilent (необязательно) — указывает, устанавливается ли дополнительный компонент по умолчанию при задействовании тихой установки с платформы для установки приложений. Если дополнительные компоненты не являются дополнительными языками, по умолчанию устанавливается значение true.

OptionalDirectory1 — указывает, какие директории будут отображаться в необязательном разделе установщика. OptionalDirectory1 и выше (*2,3,4 и т.д.) могут быть использованы. Задается относительный путь. Т. е., если вы хотите добавить каталог App\AppName\locales в необязательный раздел установщика, вы должны установить OptionalDirectory1=App\AppName\locales в этом разделе.

OptionalFile1 — указывает, какие файлы будут отображаться в необязательном разделе установщика. OptionalFile1 и выше (*2,3,4 и т.д.) могут быть использованы. Задается относительный путь. Т. е., если вы хотите добавить файл App\AppName\*.lang в необязательный раздел установщика, вы должны установить OptionalFile1=App\AppName\*.lang в этом разделе.

Примечание к Optional Section: Чтобы необходимые файлы были добавлены в необязательный раздел установщика, вы должны использовать или OptionalDirectory1, или OptionalFile1.

Раздел [CopyLocalFiles]:

Раздел используется для копирования файлов локально установленного приложения.

CopyLocalFiles — идентифицирует активацию возможностей раздела. По умолчанию устанавливается значение true.

CopyFromRegPath — используется в случае, если путь к локальным файлам указан в ключе реестра. Обычно в виде HKLM\Software\AppName.

CopyFromRegKey — используется совместно с CopyFromRegPath. Указывает ключ в пути реестра выше, который будет использован.

CopyFromRegRemoveDirectories – указывается количество директорий, которые будут удалены из указанного ключа реестра, с целью получения необходимой директории для копирования. Если ключ указывает на файл, а не директорию, значение увеличивается на один. Например, ключ указывает на C:\Program Files\AppName\bin\AppName.exe, при этом вы хотите скопировать все файлы в C:\Program Files\AppName, значение будет равняться 2: первое удаляет имя файла AppName.exe, второе директорию bin.

CopyFromDirectory – указывается для копирования локального каталога в переносимое приложение. Если данный параметр используется параллельно с указанными выше параметрами реестра, он будет служить как подстраховочный вариант и использоваться в случае отсутствия записей реестра или при указании ложного пути. Как правило, эта запись имеет следующий формат: %PROGRAMFILES%\AppName. Доступные переменные среды: %PROGRAMFILES%, %COMMONFILES%, %DESKTOP%, %WINDIR%, %SYSDIR%, %APPDATA%, %LOCALAPPDATA% и %TEMP%.

CopyToDirectory — Указывает относительный путь к директории в переносимом приложении, в которую будут скопированы файлы. Задается в форме App\AppName. При отсутствии директории, она будет создана.

Раздел [DownloadFiles]:

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

AdditionalInstallSize — размер файлов, которые будут добавлены к файлам, содержащихся в установщике. В значении указываются только цифры в килобайтах.

DownloadURL – указывается прямая ссылка на файл, который будет загружен. Задаётся в форме http://example.com/path/filename.

DownloadKnockURL – указывается ссылка страницы, которую необходимо загрузить, до загрузки файла, указанного в DownloadURL.

DownloadName – наименование файла, которое будет задействовано при его загрузке. Допускается наименование формата DOS и не содержащее сторонних символов, к примеру: , «, \ и т.д.

DownloadFilename – наименование файла, который будет использоваться локально. Как правило, совпадает с наименованием файла из DownloadName и задается как filename.exe или filename.zip.

DownloadMD5 – указывается контрольная хеш-сумма MD5 файла, который загружается. Это дает возможность установщику убедиться, что файл был не изменен с момента его создания. Использование данной записи крайне рекомендуется.

DownloadTo – используется, если загружаемый файл просто должен быть скопирован в переносимое приложение без изменений. Задается как App\AppName. Запись не используется с данными извлечения.

DownloadCachedByPAc – применяется для идентификации платформы PortableApps.com, во время кэширования при онлайн-загрузке с PortableApps.com. При этом сам загрузчик кэш не использует, но устанавливается и обновляется через базу приложений PortableApps.com Platform’s App Store.

AdvancedExtract1To и AdvancedExtract1Filter – расширенное извлечение информации из ZIP-файлов, а также многих EXE-файлов установки. Элемент AdvancedExtract#To указывает относительный путь к директории, в которую будут перемещены файлы в пределах переносимого приложения (обычно App\ ppName). AdvancedExtract#Filter – указывает фильтр, по которому файлы будут извлечены из архива, поддерживаемого 7-Zip. Некоторые примеры: *.txt — для всех файлов txt, * — фильтр для всех файлов, *a* — все файлы, содержащие символ «a», Src\*.cpp — для всех файлов «cpp», находяхщихся в директории «Src» и т. д. ** можно использовать для рекурсивного отображения всех файлов в архиве (включая поддиректории). Можно сделать до 10 записей. AdvancedExtract#To поддерживает использование <ROOT> для указания основной директории приложения.

Примечание, при компиляции приложения устаревшего формата PA.c Format в новый, записи похожие на Extract1To и т. д. будут автоматически исправлены на AdvancedExtract1To.

DoubleExtractFilename – применяется, когда загружаемый файл содержит архив в архиве. Параметр DoubleExtractFilename должен содержать наименование архива в архиве. Например, при загрузке файла setup.exe, который содержит файл data.zip, в котором есть необходимые для приложения файлы, параметр DoubleExtractFilename будет иметь значение data.zip. Параметры DoubleExtract#To и DoubleExtract# Filter действуют таким же образом и имеют тот же формат, что и AdvancedExtract1To и AdvancedExtract1Filter, указанные выше. Можно сделать до 10 записей. DoubleExtract#To поддерживает использование <ROOT> для указания основной директории приложения.

Download2URL, Download2KnockURL, Download2Name, Download2Filename, Download2MD5, Download2To, Download2CachedByPAc  – действуют так же, как и их аналоги без префикса 2, для второго загружаемого файла.

Download2AdvancedExtract1To, Download2AdvancedExtract1Filter, Download2DoubleExtractFilename, Download2DoubleExtract1To, Download2DoubleExtract1Filter – действуют так же, как и их аналоги без префикса Download2, для второго загружаемого файла.

Раздел [Languages]:

Раздел применяется, что бы выборочно указать используемые языки при установке переносимого приложения, при установленном параметре Multilingual в файле appinfo.ini. Если этот раздел пропущен, будут использованы все доступные языки. При использовании данного раздела необходимо указывать ENGLISH=. Все остальные языки являются необязательными и по умолчания применяют значение false.

Раздел [DirectoriesToPreserve]:

Указываются директории, которые будут сохранены при обновлении, даже если они находятся в директориях (App, Data, Other), которые удаляются. Доступно до 10 записей в форме PreserveDirectory1, PreserveDirectory2 и т. д. Каждая запись имеет относительные пути в переносимом приложении. При сохранении директории App\AppName\plugins в этом разделе необходимо указать запись PreserveDirectory1=App\AppName\plugins. Если нет, необходимых для сохранения, директорий, запись можно пропустить.

Раздел [DirectoriesToRemove]:

Указываются директории, которые будут удалены при обновлении, даже если они находятся в директориях (App, Data, Other), которые сохраняются. Доступно до 10 записей в форме RemoveDirectory1, RemoveDirectory2 и т. д. Каждая запись имеет относительные пути в переносимом приложении. При удалении директории App\AppName\ locales в этом разделе необходимо указать запись RemoveDirectory1=App\AppName\ locales. Если нет, необходимых для удаления, директорий, запись можно пропустить.

Раздел [FilesToPreserve]:

Указываются файлы, которые будут сохранены при обновлении, даже если они находятся в директориях (App, Data, Other), которые удаляются. Доступно до 10 записей в форме PreserveFile1, PreserveFile2 и т. д. Каждая запись имеет относительные пути в переносимом приложении. При сохранении файлов App\AppName\*.hlp в этом разделе необходимо указать запись PreserveFile1= App\AppName\*.hlp. Если нет, необходимых для сохранения, файлов, запись можно пропустить.

Раздел [FilesToRemove]:

Указываются файлы, которые будут удалены при обновлении, даже если они находятся в директориях (App, Data, Other), которые сохраняются. Доступно до 10 записей в форме RemoveFile1, RemoveFile2 и т. д. Каждая запись имеет относительные пути в переносимом приложении. При удалении файлов App\AppName\*.lang в этом разделе необходимо указать запись RemoveFile1= App\AppName\*.lang. Если нет, необходимых для удаления, файлов, запись можно пропустить.

Чтобы лицензионное соглашение с конечным пользователем (EULA) или другой файл лицензии мог отобразиться в программе PortableApps.com Installer, поместите файл EULA.txt в директорию App\AppInfo. PortableApps.com Installer автоматически определит его местоположение и настроит его для использования. Убедитесь, что файл сохранён в формате Unicode, а не ANSI.

Сторонний код может быть использован вашим установщиком, поместите его в файл текстового формата PortableApps.comInstallerCustom.nsh и сохраните в директории Other\Source. Файл пишется с применением скриптового языка NSIS, и содержит в себе три макроса: CustomCodePreInstall (выполняется перед установкой), CustomCodePostInstall (выполняется после установки) и CustomCodeOptionalCleanup (выполняется в начале установки, если не указаны дополнительные параметры установщика, применяется при обновлениях приложений). Наряду со стандартными функциями NSIS, можно использовать дополнительные: ConfigRead, ConfigReadS, ConfigWrite, ConfigWriteS, GetParent, GetRoot, VersionCompare и возможности LogicLib для NSIS.

Сам исходный код PortableApps.com Installer при этом не меняется. Хотя он доступен под лицензией GPL, и его можно свободно изменять и использовать в других проектах лицензированных лицензией GPL.

Каждый выпуск приложения в формате PortableApps.com должен использовать актуальную версию PortableApps.com Installer. Если в разработке находится сложное приложение, которое требует для себя много времени, в том числе и тестирование,  и во время этого тестирования была выпущена новая версия PortableApps.com Installer, приложение может использовать предыдущую версию при условии, что актуальной версии мене 30-ти дней со дня окончания разработки этого приложения.

PortableApps.com Installer будет вести журнал с информацией о создании установщика приложения и его фактических установках, сохраненных в файл pac_installer_log.ini, который находится в директории AppInfo. Этот файл исключается из репозиториев git через настройку gitignore. Информация в журнале содержит: был ли запущен установщик, когда установщик был создан, когда приложение было фактически установлено, версию установщика, актуальную версию установщика, при использовании текущей, а также другую информацию, которая может быть добавлена в будущем. Этот файл не должен быть удалён или изменен, кроме как официальным установщиком PortableApps.com. Переносимые приложения будут использовать этот файл для отслеживания времени и верных методов установки.


6. Модификация ОС и Переносимость

Во время работы переносимое приложение может изменять записи реестра и файлы на локальном компьютере, при этом они должны быть восстановлены в их состояние перед запуском при выходе. Это может быть реализовано резервным копированием и восстановлением настроек локальной копии (в реестре или APPDATA) приложения перед запуском при выходе. Учитывая смену буквы диска, при перемещении переносного устройства между компьютерами, переносимое приложение должно работать (настройки, предпочтения, выбранный перевод сохраняются). Список недавно используемых приложений (MRU), также должен работать.


7. Установка плагинов

В дополнение к стандартным установкам, PortableApps.com Installer может также быть использован для установки плагинов в переносимое приложение. Это действие выполняется благодаря файлу plugininstaller.ini, расположенного в директории App\AppInfo. Этот файл может содержать все записи допустимые в файлах appinfo.ini и installer.ini, описанные выше и объединенные в один файл. Один плагин указывается в разделе [Details], в котором создается запись PluginName=. Указывается наименование плагина, например: Adobe Flash for Firefox Portable. [MainDirectories] — параметры удаления, значение по умолчанию false, для установщика плагинов. Если для использование плагина требуется EULA, вместо EULA.txt необходимо использовать файл PluginEULA.txt.

Для того, что бы создать проект установщика плагинов, создайте структуру директорий, аналогичную переносимому приложению, включая App, App\AppName, Data, Other и т. д. Поместите в нужные директории только те файлы, которые необходимы для работы плагина. Поскольку директория App\AppInfo используется исключительно основным приложением, она должна содержать только файл  plugininstaller.ini. Любой сторонний код должен находиться в файле PortableApps.comMOnsmailerPlugin Custom.nsh и располагаться в директории Other\Source. Создайте файл plugininstaller.ini с записями, которые обычно находятся в файлах appinfo.ini и installer.ini, и скомпилируйте как обычно.

Также вы можете прописать запись PluginType=CommonFiles, это укажет плагину месторасположение директории CommonFiles для установки, которая находится в X:\PortableApps\CommonFiles. Это необходимо плагинам, которые нужны для работы определенных приложений (например, Java), как и определено PortableApps.com. Параметр удаления [MainDirectories] при этом устанавливается в значение true и удалит всю директорию X:\PortableApps\CommonFiles\AppID (по умолчанию требуется для плагинов, установленных в CommonFiles).


8. Разрешения

Переносимые приложения, упакованные в данном формате, с использованием инструментов PortableApps.com, должны быть выполнены в соответствии с местным или международным законодательством. Бесплатные приложения (Freeware) могут быть упакованы с использованием PortableApps.com Installer в том случае, если установщик не модифицирован и применяется в том виде, в котором его распространяет PortableApps.com. Бесплатные приложения (Freeware) могут быть упакованы только самим издателем приложения или с его явного разрешения. Коммерческие приложения (Commercial software) могут быть упакованы, предварительно согласовав их с PortableApps.com.


	
Нет комментариев.

Добавить комментарий

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: