АвторСообщение
Symbian 9 Primary Master




Сообщение: 82
Зарегистрирован: 07.01.10
Откуда: Россия, Москва
Репутация: 1

Награды: За доброту и душевность!!!Хороший, и главное добрый админ!
ссылка на сообщение  Отправлено: 18.01.10 20:10. Заголовок: Mob: Что есть Sis файл?


SIS файл (Symbian Installation System) - это установочный (инсталляционный) файл для смартфонов под управлением Symbian OS. После установки sis пакета в ОС мы получаем установленное приложение, которое уже используем в самом телефоне.
Т.о., для того, чтобы установить приложение в телефон - его необходимо инсталлировать с помощью установочного файла, которым является SIS файл.

1. Основные части, обязательные составляющие.

Обычно, в состав инсталляционного SIS файла входят следующие составляющие:

* Исполняемые файлы приложения (файлы с расширением EXE).
* Библиотеки (файлы с расширением DLL).
* Файлы ресурсов (файлы с расширением RSC). При использовании нескольких разных языков для каждого языкового пакета содержится свой файл локализации (файлы с расширением R01, R02 и т.д.).
* Изображения (файлы с расширением MBM, MIF).
* Вложенные SIS-файлы, т.е. еще один установщик, вложенный в корневой установочный файл, установка которого произойдет в ходе установки данного инсталляционного пакета.
* Файлы конфигурации, базы данных и другие файлы, определяемые разработчиком приложения.

Итак, мы видим, что инсталляционный файл для Symbian OS 9.x - это своеобразный архив, распаковка (установка) из которого идет по определенным правилам, эти правила называются cкрипты (PKG файл).

PKG файл - это текстовый файл, который содержит информацию для установки файлов и приложений при заданных определенных условиях.

Основные части, обязательные составляющие:

* поддерживаемые языки приложения
* заголовок пакета, имя устанавливаемого приложения, информация о версии и билде приложения
* указатель на совместимость с версией платформы/ОС
* компоненты: описание устанавливаемых файлов

Рассмотрим для примера PKG файл (рackage file) программы Free Fullscreen Wallpaper:



Составные части:

Дата и время создания пакета
; Date 16-02-2009
; Time 15:57:45
Языки для которых рассчитан инсталляционный пакет
; Languages
&EN


Обозначения часто встречающихся языковых пакетов. В случае, если языков несколько, то указываются через запятую:
AM– Английский США
AS – Австрийский (немецкий)
AU – Австрийский (английский)
BF – Бельгийский (французский)
BL – Бельгийский (фламандский)
CS – Чешский
DA – Датский
DU – Голландский
EN – Великобритания (английский)
FI – Финский
FR – Французский
GE – Немецкий
HK – Гонконг Китайский
HU – Венгерский
IC – Исландский
IF – Международный французский
IT – Итальянский
JA – Японский
NO – Норвежский
NZ – Новая Зеландия
PL – Польский
PO – Португальский
RO - Румынский
RU – Русский
SF – Швейцарский (французский)
SG – Швейцарский (немецкий)
SK – Словацкий
SL – Словенский
SP – Испанский
SW – Шведский
TC – Тайвань Китайский
TH – Тайский
TU – Турецкий
ZH – Китайский КНР

Информация о приложении, состоит из нескольких частей:
; Package header
#{"Free Fullscreen Wallpaper"}, (0xEC5D77D7), 1, 0, 1, IU, TYPE=SA

* #{"Free Fullscreen Wallpaper"} – Название (имя) приложения, которое будет выводиться при установке.
* (0xEC5D77D7) – Уникальный код данного приложения. Все приложения в Symbian OS классифицируются по уникальным кодам «UID», их диапазоны бывают нескольких видов:

o Незащищенные (свободные для инсталляции) имеют UID (0xA0000000 - 0xAFFFFFFF)
o Защищенные UID (0x20000000 - 0x2FFFFFFF)
o Лицензированные UID (0x10000000 - 0x1FFFFFFF)


* 1, 0, 1 - версия и билд приложения, в данном случае версия будет 1,0(1)
* IU – указывает на то, что скрипт написан в Юникоде. Также возможно указание дескрипторов через запятую:

o IU – указывает на то, что скрипт написан в Юникоде,
o SH – указывает на то, что при установке данного приложения, основное приложение, что уже ранее было установлено в смартфон и соответствует не только названию, но и UID, будет закрыто, после чего инсталляция продолжится,
o NC – указывает на то, что при упаковке файлы не были сжаты


* TYPE=SA – вариант установки. Существующие виды установки:

o SA - (SISAPP) – указывает на то, что в инсталляционном пакете содержится приложение,
o SP – (SISPATCH) – указывает на то, что приложение содержит патч для установленного приложения, и этот патч в дальнейшем может быть удален (примером таких установочных файлов служат темы оформления для смартфонов),
o PU - (PARTIALUPGRADE) – это разновидность SP, но при этом патч удалить нельзя (удалиться сам пропатченный файл, т.к. происходит замена оригинального файла)

Имя производителя, отображаемое при инсталляции (может быть несколько) и его отображение зависит от языка ОС смартфона:
; Localized vendor name:
%{"Free Fullscreen Wallpaper"}
Имя производителя независящее от языка ОС смартфона:
; Vendor names:
" Free Fullscreen Wallpaper "
Идентификация принадлежности к платформе Symbian OS 60 3rd edition:
; Dependencies
[0x101F7961], 0, 0, 0, {"Series60ProductID"}


В случае необходимости можно использовать ограничение на инсталляцию приложения, т.е. ограничить установку пакета только для определенных смартфонов. Например, это бывает необходимо, если приложение использует WiFi. Т.о., его следует устанавливаются только на устройствах, которые имеют WiFi. Если пакет устанавливается на устройства не имеющие WiFi (не соответствуют описанным моделям телефонов), то программа установки выведет предупреждение о том, что приложение не совместимо с данным смартфоном.
Если список моделей аппаратов, отвечающий за возможности использования приложения невелик, то удобней создать установщик только для этих моделей.
Пример инсталляционного пакета, который может быть установлен только на N95.
; Dependencies
[0x2000060B], 0, 0, 0, ( "Nokia N95 ID")


Пример инсталляционного пакета, который может быть установлен только на N93, N93i и N95.
; Dependencies
[0x20000600], 0, 0, 0, ( "Nokia N93 ID")
[0x20000605], 0, 0, 0, ( "Nokia N93i ID")
[0x2000060B], 0, 0, 0, ( "Nokia N95 ID")


В случае, если в инсталляционном пакете используется несколько языков, то и записи ведутся на этих же языках, если есть необходимость выводить данную информацию на разных языках. Если же нет необходимости выводить на разных языках названия, то достаточно сдублировать их столько раз, сколько языков использовано в установочном файле. Рассмотрим на примере:



В данном приложении используются два языковых пакета: Английский и Русский.
Имя приложения, которое выводится при установке, не изменяется, т.е. остается на английском языке. Но, т.к. используется два языка в инсталляционном файле, то и имя приложения записывается дважды в скрипте для выбора вывода имени приложения для каждого языкового пакета. В случае, если бы я решила записать имя приложения на русском языке, то вторая запись имени шла бы на русском языке (соблюдается та же очередность записи, как и при указании Вами перечисленных языков).
Идентификация принадлежности к версии Symbian OS только дублируется столько раз, сколько и языков, запись не изменяется и всегда остается на английском языке.
Более наглядный пример:



Далее следуют компоненты, описание устанавливаемых файлов, имена, пути и условия их установки.
Рассмотрим идущий далее участок кода файла скрипта:



"D:\resource\apps\FreeFSWPClient_aif.mif"-"!:\resource\apps\FreeFSWPClient_aif.mif", FF
Строка состоит из нескольких частей:
Папка, расположенная на Вашем ПК, в которой программа-упаковщик будет искать этот файл для запаковки в инсталляционный пакет.
"D:\resource\apps\FreeFSWPClient_aif.mif"
Адрес (путь), куда будет установлен данный файл при инсталляции.
"!" - имя диска, которое зависит от выбора пользователя, т.е., от того, куда пользователь решит установить приложение. Окно выбора места установки (Память телефона/Карта памяти) будет выведено пользователю в начале установки.
"!:\resource\apps\FreeFSWPClient_aif.mif"
Cообщает установщику, что файл должен быть просто установлен, без каких либо опций.
, FF

* FF – файл предназначенный для установки, без всяких опций
* FN – установка файла нулевого размера или папки, т.е. он не присутсвует в пакете инсталляции, но в каталоге он будет создан, при этом он будет удален при удалении самого приложения, и не будет удален при апгрейдах (например .ini, .dat файлы, которые содержат настройки)
* FT – указывает, что устанавливаемый файл является текстовым и будет выводиться в процессе установки, но не будет установлен в смартфон. При этом, через запятую могут указываться еще дополнительные дескрипторы:

o TC – после отображения файла выводит опцию продолжения установки,
o TS - после отображения файла выводит опцию Отмена/Продолжение установки, т.е. при нажатии Отмена, само приложение будет установлено, но данный файл установлен не будет,
o TA - после отображения файла выводит опцию Отмена/Продолжение установки. При нажатии кнопки Отмена будет прерван процесс инсталляции, но все установленные ранее файлы не будут удалены,
o TE - после отображения файла выводит опцию Отмена/Продолжение установки. При нажатии кнопки Отмена будет прервана инсталляция, и все установленные файлы будут удалены

* FR – указывает на то, что данный файл будет запущен при установке/удалении при этом через запятую могут указываться еще дополнительные дескрипторы:

o RI – файл будет запущен при установке,
o RR – файл будет запущен при удалении,
o RB – файл будет запущен при установке и при удалении

* FM – файл, который указывает установщику передать данный файл приложению по умолчанию, связанному с данным типом MIME, например, VCF для вывода контактной информации.

Итак, давайте прочитаем, что же выполняет установщик на данном этапе в нашем примере:

Данный текстовый будет найден на ПК и запакован в установщик. Во время инсталляции приложения будет выведен на экран текстовый файл с информацией для пользователя с опциями Отмена/Продолжение установки. При нажатии кнопки Отмена будет прерван процесс инсталляции, но все установленные ранее файлы не будут удалены. При нажатии кнопки Продолжение установка будет продолжена. Текстовый файл не будет установлен в смартфон.
"D:\Text1.txt"-"", FT, TA
Данные файлы будут найдены по указанному пути на ПК и запакованы в установщик. В процессе инсталляции данные файлы будут установлены в смартфон с указанными именами по указанному пути. Никаких дополнительных опций или условия для этих файлов не указывается. При удалении приложения эти файлы будут удалены.
"D:\resource\apps\FreeFSWPClient_aif.mif"-"!:\resource\apps\FreeFSWPClient_aif.mif", FF
"D:\private\101f875a\import\[ec5d77d7].rsc"-"c:\private\101f875a\import\[ec5d77d7].rsc", FF
"D:\private\10003a3f\import\apps\FreeFSWPClient_reg.r01"- "!:\private\10003a3f\import\apps\FreeFSWPClient_reg.r01", FF
"D:\Data\FreeFSWP\FreeFSWP.dat"-"c:\Data\FreeFSWP\FreeFSWP.dat", FF
Для данных файлов настроек не указаны пути на ПК и следовательно они не будут включены в установщик. В процессе инсталляции данные файлы будут созданы с нулевым размером и установлены по указанному пути на смартфоне. Эти файлы будут удалены при удалении самого приложения, и не будут удалены при апгрейдах.
""-"c:\Data\FreeFSWP\Landscape.dat", FN
""-"c:\Data\FreeFSWP\Portrait.dat", FN
""-"c:\private\ec5d77d7\FreeFSWPClient.ini", FN


Итак, мы с Вами рассмотрели, как может быть построен установщик. Но возможности установщика очень большие, поэтому давайте рассмотрим дополнительные примеры, изучим код скрипта и разберем какими приемами можно воспользоваться дополнительно.

Логотип при установке приложения



Обратим внимание на новую для нас строку. В ней, думаю, что судя по названию Вы уже догадались, что выводится логотип:
; Logo
="D:\Logo(0-0).mbm", "image/x-mbm", ""
Данная строка описывает вывод логотипа при установке. Синтаксис вывода выглядит следующим образом:
Первым аргументом является имя и путь к файлу на вашем ПК, содержащий логотип, который будет запакован в установщик.
="D:\Logo(0-0).mbm"
Второй аргумент описывает его MIME-тип (mbm файл, содержащий графику).
"image/x-mbm"
Третий аргумент указывает путь и имя файла с каким он должен быть установлен в смартфон. В нашем случае файл только для отображения во время установки, поэтому последний, третий аргумент, у нас должен быть пустым, т.к. установка файла нами не предусматривается.

Затем мы видим описание вывода текстового файла на экран с информацией для пользователя c опциями Отмена/Продолжить установку:
"D:\Text(0-1).txt"-"", FT, TA
а далее вывод второго текстового файла с опцией Продолжения установки:
"D:\Text(0-44).txt"-"", FT, TC
Такое бывает необходимо, например, в случае вывода на экран лицензионного соглашения, в котором пользователь может отказаться от установки. А в случае подтверждения продолжения установки - последует уже информация, например, описывающая возможности приложения либо реклама.

Далее установщик скопирует все файлы, что содержатся в инсталляционном пакете, по указанному пути в смартфон.


Совместимость платформ ОС. Вложенный SIS установщик.

Теперь усложним задание. Введем в скрипт дополнительную совместимость по платформе ОС и встроенный установщик.



Выбор платформы:
В случае портирования приложения S60 3rd Edition на S60 5rd Edition, Вы должны уже включить UID платформы S60 5rd Edition в скрипт PKG файла. 0x1028315F - UID платформы S60 5rd Edition. Синтаксис записи следующий:
[0x1028315F], 0, 0, 0, ( "Series60ProductID")
Если данная запись для такого приложения не будет включена в SIS пакет, то пользователь при установке приложения на смартфон с S60 5rd Edition, получит предупреждение о несовместимости. Это может привести к тому, что пользователь отменит установку.
Итак, если наше приложение совместимо с платформами S60 3rd Edition и S60 5rd Edition, то запись необходимо выполнить следующим образом:
;Supports S60 release 3.0
[0x101F7961], 0, 0, 0, ( "Series60ProductID")
;Supports S60 release 5.0
[0x1028315F], 0, 0, 0, ( "Series60ProductID")
Таким образом мы указали, что наше приложение для платформы S60 3rd Edition совместимо с платформой S60 5rd Edition.

Встроенный во внутрь нашего установщика еще один инсталляционный SIS пакет записывается со следующим синтасисом:
@"D:\WebGate_Utils_Library.sis",(0x20000136)
Первым аргументом идет путь расположения данного SIS пакета на вашем ПК и его имя. Данный установщик будет включен в пакет и во время инсталляции основного приложения произойдет инсталляция вложенного приложения.
Вторым аргументом идет UID вложенного SIS инсталлятора.

Как это выполняется на практике:
В начале Вам необходимо собрать вложенный SIS установщик, в нашем примере - WebGate_Utils_Library.sis. Затем при сборке основного установщика, указать путь к нашему вложенному sis файлу и его UID, согласно приведенному выше синтаксису.

И в завершении этой части - закрепим полученные знания, дополнив скрипт еще одним языком в упаковщик.



Вводим поддержку русского языка в инсталляционный пакет.
; Languages
&EN, RU
Имя приложения, которое выводится при установке. Сдублировано столько раз, сколько языков имеет установщик (в нашем случае имя не меняется в зависимости от языка). UID приложения. Версия и билд приложения. Тип установки (в нашем случае - установка приложения).
; Package header
#{"Advanced Call Manager", "Advanced Call Manager"}, (0x20000131), 2, 72, 230, IU, TYPE=SA
Совместимость приложения с платформой. В нашем случае: приложение совместимо с платформами S60 3rd Edition и S60 5rd Edition. Сдублировано столько раз, сколько у нас языков в SIS пакете.
; Dependencies
[0x101F7961], 0, 0, 0, {"Series60ProductID", "Series60ProductID"}
[0x1028315F], 0, 0, 0, {"Series60ProductID", "Series60ProductID"}
Имя производителя. Сдублировано столько раз, сколько языков имеет установщик (в нашем случае имя не меняется в зависимости от языка).
; Vendor names
%{"WebGate Joint Stock Company", "WebGate Joint Stock Company"}
:"WebGate Joint Stock Company"
Вывод на экран во время установки текстового файла с информацией для пользователя c опциями Отмена/Продолжить установку. Затем вывод второго текстового файла с опцией Продолжения установки. Файлы не копируется в телефон и демонстрируется лишь в течение установки. Имя файла и его путь расположения на ПК. Опции для действий пользователя на выводимую информацию.
"D:\Text(0-1).txt"-"", FT, TA
"D:\Text(0-2).txt"-"", FT, TC
Выводим графический логотип компании в начале установки. Логотип не копируется в телефон и демонстрируется лишь в течении установки. Имя графического файла и путь его расположения на ПК. MIME тип файла.
; Logo
="D:\Logo(0-0).mbm", "image/x-mbm", ""
Вложенный установщик внутри нашего инсталляционного пакета. Имя вложенного SIS пакета и путь расположения на ПК. UID SIS файла.
@"D:\WebGate_Utils_Library.sis", (0x20000136)
Установка файлов локализации: английской и русской. Имя файла и его пусть расположения на ПК. Имя файла и путь его установки на телефон. Значок "!" - показывает, что диск, на который будет произведена установка файла, зависит от выбора пользователя и будет предложен ему в начале установки. В случае удаления самого приложения - данные файлы будут удалены.
"D:\Resource\Apps\ACM0x20000131.R01"-"!:\Resource\Apps\ACM0x20000131.R01", FF
"D:\Resource\Apps\ACM0x20000131.R16"-"!:\Resource\Apps\ACM0x20000131.R16", FF


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


2. Условия.

В любом скрипте можно задать обработку условий.
Условие - это какой-либо параметр, с которым будет сверяться установщик. Для каждого условия описывается определенное действие установщика.

Общий синтаксис написания условия:
IF (некоторое условие)
Описание действия для установщика
ENDIF
либо:
IF (некоторое условие)
Описание действия для установщика
ELSEIF (некоторое условие)
Описание действия для установщика
ENDIF


Может существовать два вида условий:

* - самостоятельная проверка условия и выбор заданного действия
* - c участием пользователя, т.е. вывод на экран дополнительного меню, в котором пользователь самостоятельно делает выбор. И тогда установщик выполняет действие, согласно выбранному условию.



Самостоятельная проверка условия и выбор заданного действия

1. Установка мультиязычного приложения.




Разберем подробнее код:
Вводим в установщик поддержку трех языков: английского, французского и русского:
; Languages
&EN, FR, RU
Теперь начинаем выполнять проверку. В данном случае будет проверено, какой язык установлен в ОС смартфона.
Если установщик определит, что в телефоне пользователя установлен французский язык, как язык ОС:
IF (Language=0x00000002)
То на экран, во временя установки будет выведена текстовая информация автора на французском языке с опцией Продолжить установку. После нажатия Продолжить будет установлен файл ресурса французской локализации:
"D:\Text02.txt"-"", FT, TC
"D:\Resource\Apps\ACM0x20000131.R02"-"!:\Resource\Apps\ACM0x20000131.R02", FF
Если же установщик определит, что в телефоне пользователя установлен русский язык, как язык ОС:
ELSEIF (Language=0x00000010)
То на экран, во временя установки будет выведена текстовая информация автора на русском языке с опцией Продолжить установку. После нажатия Продолжить будет установлен файл ресурса русской локализации:
"D:\Text16.txt"-"", FT, TC
"D:\Resource\Apps\ACM0x20000131.R16"-"!:\Resource\Apps\ACM0x20000131.R16", FF
Если язык ОС не соответствует первому условию и не соответствует второму, т.е., не является французским и не является русским (проще говоря - во всех остальных случаях):
ELSE
То на экран, во временя установки будет выведена текстовая информация автора на английском языке с опцией Продолжить установку. После нажатия Продолжить будет установлен файл ресурса английской локализации:
"D:\Text01.txt"-"", FT, TC
"D:\Resource\Apps\ACM0x20000131.R01"-"!:\Resource\Apps\ACM0x20000131.R01", FF
Конец условия:
ENDIF
Далее следует установка файлов, без каких либо проверок на условие (т.к. обработка условия была закончена), т.е. копирование файлов с указанными именами по указанным адресам в смартфоне.
"D:\private\20000131\backup_registration.xml"-"!:\private\20000131\backup_registration.xml", FF
Пояснение: Откуда мной получено, например, значение русского языка
Language=0x00000010
Это запись кода русского языка в НЕХ значениях.
Всем известно, что файлы русской локализации имеют значение 16, т.е. file_name.r16. Число 16 - это числовой код языка в DEC системе счисления. Если 16 перевести в НЕХ значение, то получаем 10.


2. Проверка принадлежности к платформе.

Обработка данного условия позволяет устанавливать файлы в зависимости от операционной системы. Проверка принадлежности телефона к платформе может быть выполнена путем проверки файлов в папке z:\system\install:



Разберем подробнее код:
В данном коде выполняется проверка на принадлежность к платформе S60 3rd Edition FP2 или S60 5rd Edition. Если файл Series60v3.2.sis или же файл Series60v5.0.sis существует (найден) в папке z:\system\install:
IF (EXISTS("z:\system\install\Series60v3.2.sis")) OR (EXISTS("z:\system\install\Series60v5.0.sis"))
То будет выполнена установка файла библиотеки программы, работоспособной именно для данных платформ:
"D:\sys\bin\ACMClient0x20000132.dll"-"!:\sys\bin\ACMClient0x20000132.dll", FF
Во всех остальных случаях:
ELSE
Будет выполнена установка файла библиотеки программы, работоспособной для остальных платформ S60 3rd Edition:
"D:\sys\bin\1\ACMClient0x20000132.dll"-"!:\sys\bin\ACMClient0x20000132.dll", FF
Обратите внимание: Имена файлов библиотек имеют одинаковые имена. Поэтому в данном случае удобней расположить файл библиотеки ACMClient0x20000132.dll в другой папке. В моем примере я создала дополнительную папке с именем 1 и указала установщику путь к файлу с учетом уже этой папки. На смартфон файлы будут установлены с одинаковым именем и по одному и тому же пути. А т.к. работоспособность приложения на разных платформах зависит от этого файла, то будьте внимательней, указывая путь установщику к необходимому (для правильной работы приложения) файлу.

Конец условия:
ENDIF
Далее следует установка файлов без каких либо проверок на условие (т.к. обрабока условия была закончена), т.е. копирование файлов с указанными именами по указанным адресам в смартфоне.
"D:\private\20000131\backup_registration.xml"-"!:\private\20000131\backup_registration.xml", FF


Можно выполнить проверку на принадлежность к определенной модели смартфона.:



В данном примере проверяется условие на принадлежность устройства к модели телефона Nokia N93 или N95

Если модель устройства определена как телефон Nokia N93 или N95:
IF (MachineUID=0x20000600) OR (MachineUID=0x2000060B)
То необходимо установить исполняемый файл, обеспечивающий работоспособность приложения на этих аппаратах. Например, возможность использования каких-либо аппаратных возможностей данных устройств:
"D:\sys\bin\ACMServer0x20000133.exe"-"!:\sys\bin\ACMServer0x20000133.exe", FF
Для всех остальных моделей устройств:
ELSE
Необходимо установить исполняемый файл, обеспечивающий работоспособность приложения на данных аппаратах:
"D:\sys\bin\1\ACMServer0x20000133.exe"-"!:\sys\bin\ACMServer0x20000133.exe", FF
Конец условия:
ENDIF
Далее следует установка файлов без каких либо проверок на условие (т.к. обработка условия была закончена), т.е. копирование файлов с указанными именами по указанным адресам в смартфоне.
"D:\private\20000131\backup_registration.xml"-"!:\private\20000131\backup_registration.xml", FF


Усложняем задачу в обработке условия:



Проверка на принадлежность устройства, является ли данное устройство смартфоном Nokia:
IF (Manufacturer=0x00000002)
Если является, то установить исполняемый файл, отвечающий за работоспособность приложения на всех аппаратах Nokia:
"D:\sys\bin\ACM0x20000131.exe"-"!:\sys\bin\ACM0x20000131.exe", FF
Если телефон является моделью Nokia, то выполняется проверка на принадлежность к платформе S60 3rd Edition FP2 или S60 5rd Edition. Если файл Series60v3.2.sis или же файл Series60v5.0.sis существует (найден) в папке z:\system\install:
IF (EXISTS("z:\system\install\Series60v3.2.sis")) OR (EXISTS("z:\system\install\Series60v5.0.sis"))
Если обнаружена принадлежность к платформе S60 3rd Edition FP2 или S60 5rd Edition, то выполняется установка исполняемого файла, отвечающего за работоспособность приложения на этих платформах в данном приложении:
"D:\sys\bin\ACMServer0x20000133.exe"-"!:\sys\bin\ACMServer0x20000133.exe", FF
Для всех остальных моделей телефонов Nokia с платформой S60 3rd Edition:
ELSE
Установить исполняемый файл, отвечающий за работоспособность приложения на аппаратах Nokia S60 3rd Edition:
"D:\sys\bin\1\ACMServer0x20000133.exe"-"!:\sys\bin\ACMServer0x20000133.exe", FF
Конец условия по проверки принадлежности телефона Nokia к платформе:
ENDIF
Если устройство не является телефоном Nokia, т.е. во всех остальных случаях:
ELSE
Установить исполняемые файлы, отвечающие за работоспособность приложения:
"D:\sys\bin\2\ACM0x20000131.exe"-"!:\sys\bin\ACM0x20000131.exe", FF
"D:\sys\bin\2\ACMServer0x20000133.exe"-"!:\sys\bin\ACMServer0x20000133.exe", FF
Конец обработки всего условия:
ENDIF
Далее следует установка файлов без каких либо проверок на условие (т.к. обработка условия была закончена), т.е. копирование файлов с указанными именами по указанным адресам в смартфоне.
"D:\private\20000131\backup_registration.xml"-"!:\private\20000131\backup_registration.xml", FF


3. Проверка разрешения экрана смартфона.

Бывают случаи, когда необходимо выполнить проверку на разрешение экрана, чтобы установить, например, скин под то разрешение экрана, что имеет смартфон пользователя.
Рассмотрим на примере, как выполняется проверка разрешения в пикселях:



Если дисплей экрана по горизонтали 176 пикселей и по вертикали 208 пикселей или же модель смартфона определяется как Nokia N91:
IF (DisplayXPixels=0x000000B0) AND OR (DisplayYPixels=0x000000D0)
(MachineUid=0x200005FC)
То установить следующие файлы, отвечающие за корректное отображение скинов на этом разрешении экрана или модели телефона Nokia N91:
"D:\TTPod\skin\V3\TTpod3.ttb"-"!:\TTPod\skin\V3\TTpod3.ttb", FF
"D:\TTPod\skin\V3\TTpod3.skn"-"!:\TTPod\skin\V3\TTpod3.skn", FF
В случае, если дисплей экрана по горизонтали 208 пикселей и по вертикали 208 пикселей:
ELSEIF (DisplayXPixels=0x000000D0) AND (DisplayYPixels=0x000000D0)
То установить следующие файлы, отвечающие за корректное отображение скинов на этом разрешении экрана:
"D:\TTPod\skin\V3\1\TTpod3.ttb"-"!:\TTPod\skin\V3\TTpod3.ttb", FF
"D:\TTPod\skin\V3\1\TTpod3.skn"-"!:\TTPod\skin\V3\TTpod3.skn", FF
В случае, если дисплей экрана по горизонтали 352 пикселей и по вертикали 416 пикселей:
ELSEIF (DisplayXPixels=0x00000160) AND (DisplayYPixels=0x000001A0)
То установить следующие файлы, отвечающие за корректное отображение скинов на этом разрешении экрана:
"D:\TTPod\skin\V3\2\TTpod3.ttb"-"!:\TTPod\skin\V3\TTpod3.ttb", FF
"D:\TTPod\skin\V3\2\TTpod3.skn"-"!:\TTPod\skin\V3\TTpod3.skn", FF
Во всех остальных случаях, отличных от перечисленных выше:
ELSE
Установить следующие файлы, отвечающие за корректное отображение скинов:
"D:\TTPod\skin\V3\3\TTpod3.ttb"-"!:\TTPod\skin\V3\TTpod3.ttb", FF
"D:\TTPod\skin\V3\3\TTpod3.skn"-"!:\TTPod\skin\V3\TTpod3.skn", FF
Конец обработки условия:
ENDIF
Обратить внимание: В данном случае, разрешение экрана в пикселях также, как и в случае с кодом языкового пакета, записан в НЕХ значении.

Вывод дополнительного меню выбора для пользователя. Обработка скрипта с учетом выбора пользователя.

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

Общий синтаксис написания такого условия:

Вводим условия для сравнения, а также подготавливаем список, который будет выведен пользователю:
!({"некоторое условие1"},{"некоторое условие2"},....,{"некоторое условиеN"})
IF (условие1)
Описание действия для установщика
ENDIF

IF (условие2)
Описание действия для установщика
ENDIF
....
IF (условиеN)
Описание действия для установщика
ENDIF


1. Меню выбора языка установки.

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

Рассмотрим на примере:



Разбрем подробнее код:
Вписываем в условие языки, которые будут выведены пользователю ввиде списка в дополнительном меню в начале установки:
!({"English"},{"French"},{"German"},{"Russian"})
Если пользователь отметил в меню выбора языка English:
IF (Option1)
То выводим текстовую информацию на английском языке об устанавливаемом приложение с опцией Продолжить установку. Затем последует установка файла английской локализации и файла справки на английском языке.
"D:\Text01.txt"-"", FT, TC
"D:\Resource\Apps\ACM0x20000131.R01"-"!:\Resource\Apps\ACM0x20000131.R01", FF
"D:\Resource\Help\ACMHelp0x20000131.h01"-"!:\Resource\Help\ACMHelp0x20000131.h01", FF
Конец обработки условия English
ENDIF
Если пользователь отметил в меню выбора языка French:
IF (Option2)
То выводим текстовую информацию на французском языке об устанавливаемом приложение с опцией Продолжить установку. Затем последует установка файла французской локализации и файла справки на французском языке.
"D:\Text02.txt"-"", FT, TC
"D:\Resource\Apps\ACM0x20000131.R02"-"!:\Resource\Apps\ACM0x20000131.R02", FF
"D:\Resource\Help\ACMHelp0x20000131.h02"-"!:\Resource\Help\ACMHelp0x20000131.h02", FF
Конец обработки условия French
ENDIF
Если пользователь отметил в меню выбора языка German:
IF (Option3)
То выводим текстовую информацию на немецком языке об устанавливаемом приложение с опцией Продолжить установку. Затем последует установка файла немецкой локализации и файла справки на немецком языке.
"D:\Text03.txt"-"", FT, TC
"D:\Resource\Apps\ACM0x20000131.R03"-"!:\Resource\Apps\ACM0x20000131.R03", FF
"D:\Resource\Help\ACMHelp0x20000131.h03"-"!:\Resource\Help\ACMHelp0x20000131.h03", FF
Конец обработки условия German
ENDIF
Если пользователь отметил в меню выбора языка Russian:
IF (Option4)
То выводим текстовую информацию на русском языке об устанавливаемом приложение с опцией Продолжить установку. Затем последует установка файла русской локализации и файла справки на русском языке.
"D:\Text16.txt"-"", FT, TC
"D:\Resource\Apps\ACM0x20000131.R16"-"!:\Resource\Apps\ACM0x20000131.R16", FF
"D:\Resource\Help\ACMHelp0x20000131.h16"-"!:\Resource\Help\ACMHelp0x20000131.h16", FF
Конец обработки условия Russian
ENDIF


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



Краткое пояснение, что выполняет данный установщик:
Вводим поддержку двух языков: английский и русский:
; Languages
&EN, RU
Задаем условия для списка выбора, что будет предложен пользователю при установке. Выбор языка установки (обратите внимание, что в данном случае каждое условие дважды дублируется, т.к. у нас введена поддержка двух языковых пакетов в Languages):
!({"English","English"},{"Russian","Russian"})
На данном шаге проверяется, какой язык ОС установлен основным у пользователя в смартфоне. В случае, если язык ОС русский, то будет выведена текстовая информация на русской языке:
IF (Language=0x00000010)
"D:\Text16.txt"-"", FT, TA
В случае, если язык ОС не русский, а любой другой, то будет выведена текстовая информация на английском языке:
ELSE
"D:\Text01.txt"-"", FT, TA
ENDIF
Проверка на принадлежность к платформе. В случае, если телефон с Symbian OS9.2, то устанавливается исполняемый файл, отвечающий за корректную работы приложения на данной ОС:
IF (EXISTS("z:\system\install\Series60v3.1.sis"))
"D:\sys\bin\app.exe"-"!:\sys\bin\app.exe", FF
Во всех остальных случаях устанавливается исполняемый файл, отвечающий за корректную работы приложения:
ELSE
"D:\sys\bin\app.exe"-"!:\sys\bin\app.exe", FF
ENDIF
Проверка выбора языка приложения пользователем на этапе установки. Если выбран язык English, то будет выведен текстовый файл на английском языке с информацией автора с опцией Продолжить установку и затем установлен файл английской локализации.
IF (Option1)
"D:\Text001.txt"-"", FT, TC
"D:\resource\apps\app.r01"-"!:\resource\apps\app.r01", FF
ENDIF
Проверка выбора языка приложения пользователем на этапе установки. Если выбран язык Russian, то будет выведен текстовый файл на русском языке с информацией автора с опцией Продолжить установку и затем установлен файл русской локализации.
IF (Option2)
"D:\Text016.txt"-"", FT, TC
"D:\resource\apps\app.r16"-"!:\resource\apps\app.r16", FF
ENDIF


В рамках этой статьи мы разобрали базовые сведения о PKG файлах, ознакомились на примерах, как можно вносить изменения в них, как пользоваться условиями в скрипте.
В заключении, прикладываю архив, в котором находятся несколько шпаргалок с кодами языковых пакетов, UID платформ и моделей телефонов Nokia.

Всех приветствую! Всем, кого я знаю- сразу открываю доступ к закрытым файлам! Остальные же- проявляйте себя! Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



toolbar powered by Conduit
Яндекс цитирования