Таким чином, переді мною постало завдання - внести необхідні мені UID додатків для певних іконок. Завдання виявилося нескладним. Зараз ми розглянемо весь процес, як же користувач може виправити подібні прикрі дрібниці в темах.
Редагуємо UID іконок додатків в темі оформлення.
За допомогою вбудованого менеджера файлів програми MIFViewer переходимо в папку Е: \ resource \ skins \ 68ec7cf76f96617d і відкриваємо файл themepackage.mif.
Додаток прочитає файл і виведе Вам у спливаючому вікні загальна кількість векторних елементів, що містить даний файл. Як правило, їх багато, тому приготуйтеся довго перебирати компоненти файлу.Як видно з скріншоту, в головному вікні є підказка як переглядати файли за допомогою джойстика:
- джойстик вниз - следущий компонент,
- джойстик вгору - попередній компонент.
Тепер нам необхідно визначитися з UID додатків, які ми шукаємо і які ми хочемо змінити. В даному моєму прикладі, мені необхідно знати три UID програми: два UID UCWEB (для більш ранньої версії, що вже була раніше встановлена, і іконка якої змінювалася темою, і для більш пізньої версії, іконку якої мені б хотілося замінити значком, який я знайшла в mif файлі теми) і один UID The Pencil.
Знаходимо в списку додаток, UID якого нам необхідно дізнатися, і використовуючи пункт Про програму. отримуємо шукані UID програми. Виписуємо уважно UID з позначкою, який UID відповідає якому додатку.
На цьому всі підготовчі роботи закінчені, всі необхідні дані для редагування у нас отримані. Можна переходити безпосередньо до внесення змін.
Я перевірила свою здогадку простим способом. Знаючи, що в Symbian все UID додатків в Нех поданні в файлах вносяться дещо незвичним чином, я задала пошук по Нех значенням відповідним чином.
У Нех поданні UID програми в файлі пишеться парами навпаки. Т.ч. знаючи, що іконка програми UCWEB у мене замінюється, я визначила її UID через TaskMan. UID UCWEB A0 00 79 AF. Оскільки я точно знаю, що UID цього додатка прописаний у файлі, тому що іконка змінилася при використанні даної теми оформлення, то я задаю пошук по файлу наступні чином: парами навпаки, таким чином отримую значення для пошуку AF 79 00 A0.
Шукане значення знайдено. У моєму прикладі іконки перебували на сусідніх номерах, тобто номера їх в mif файлі були 290 і 291. Пошук UID проводився для іконки програми 291, тому в даному випадку абсолютно зрозуміло, що іконка (і її UID) з номером 290 знаходиться поруч.
Зверніть увагу, як прописується UID програми. Перші 4 байта - це сам UID, записаний парами навпаки. Следущие 5 байт стандартні для всіх записів - 01 FC FF FF FF. Останніми йдуть 2 байти, що вказують порядковий номер елемента в mif файлі - наприклад, D4 10.
Значення 10 - вказує на те, що номер менше, ніж 256 (що дорівнює FF в Нех поданні), тобто для підрахунку номера іконки треба використовувати тільки перший байт - D4, що в DEC поданні 212.
Але наша ікона мала нормер 291, значить має місце зміщення на стандартні елементи, що дорівнює 291-212 = 79. Т.о, ми отримали число зсуву і зможемо тепер легко, не знаючи UID програми, а знаючи тільки номер іконки, знайти її у файлі skn.
Іконка, яку ми хочемо використовувати для нової версії UCWEB, має старий UID китайської версії програми, якою я врядли стану використовувати, тому що у мене встановлений UCWEB зі старим UID англійської версії. А все нові версії браузера UCWEB, що виходитимуть, завжди вже матимуть новий UID. Звідси я роблю висновок, що я можу сміливо зайняти цю іконку під нову версію браузера UCWEB.
UID нової версії програми UCWEB 20 01 F8 48. Т.ч. записуючи UID за схемою, парами навпаки, отримуємо 48 F8 01 20. І замінюємо UID китайської версії програми UCWEB (A0 00 99 8F. а парами навпаки це буде 8F 99 00 A0) на новий UID. тобто замість значень 8F 99 00 A0 вписуємо 48 F8 01 20.
Номер іконки у нас був 290. Вважаємо за знайденою схемою: 290-79 = 211. У Нех представляеніі це D3 (в даному прикладі це несуттєво, тому що іконки розташовувалися поруч, але як знайти іконку за номером, а не по UID, я опишу далі).
Отже, ми виконали одну з поставлених завдань - змінили одну ікону. В даному прикладі, іконку для нової версії браузера UCWEB, що має новий UID.
Тепер переходимо до виконання другого завдання. Неоходімо знайти UID для іконки програми The Pencil. Варіантів рішення два. Перший варіант, якщо ви знаєте UID нової версії програми, а також знаєте, що дана тема замінює значок для цього додатка з новим UID, то в разі, якщо Вам відомий цей UID, задаємо пошук по UID (за схемою - парами навпаки).
Мені відомий UID нової версії - E1 00 5F 73. Т.ч. задаємо пошук по Нех 73 5F 00 E1.
У разі, якщо Вам невідомий UID, то шукаємо по номеру компонента в mif файлі. Номер даної іконки був 288. Вважаємо за схемою: 288-79 = 209 (в Нех поданні D1). Т.ч. шукаємо значення D1 10. Знаходимо рядок, в якій внесений UID.
Якщо Ви розпаковували тему, то Ви можете ще раз подивитися шлях, де розташовується файл skn даної теми.
У моєму випадку цей шлях Е: \ private \ 10207114 \ import \ 68ec7cf76f96617d \ themepackage.skn
Переходимо цим шляхом і вставляємо файл. Підтверджуємо запит на заміну файлу.
Тепер міняємо тему оформлення, активуємо тему, редагування якої через skn файл ми виробляли. Дивимося отримані результати.
Тепер мені б хотілося дати невелике пояснення, як правильно проводити розрахунок порядкового номера елемента. У моєму прикладі все було досить просто. Давайте розглянемо варіанти з якими Ви можете зіткнутися.
А як рахувати, якщо номер файлу більше 256? В даному випадку підрахунок йде так: наприклад, номер іконки 304. Віднімаємо від 304 число 256 (тому що 256 - це FF в Нех і вище даного значення для 1 байта не існує, то в разі, якщо число більше 256 - необхідно доповнювати сусіднім байтом), 304-256 = 48. Переводимо 48 в Нех значення, отримуємо 30, але тепер необхідно додати одиницю до другого байту (це і буде означати ті відібрані нами 256). Т.ч. наш номер 304 записувався б в skn файлі як 30 11.
Створюємо SIS файл зміненої теми.
Відкриваємо оригінал теми в програмі SISContents. Переходимо на вкладку Tools - Edit package. Тим самим активуємо можливість редагувати елементи пакета.
Вибираємо наш файл themepackage.skn і натискаємо кнопку Edit
У вікні натискаємо кнопку Update. Вказуємо через провідник шлях в файлу, який ми відредагували. Натискаємо ОК.
Далі, після виконаної заміни, необхідно підписати sis пакет. Переходимо на вкладку Tools - Sign package. Тим самим активуємо можливість підписати пакет прямо з додатку SISContents
Як ми бачимо, тема зараз не підписана. Для підпису тим оформлення досить Self Signed сертифіката (званого загальний). Такий сертифікат є вже в додаток SISContents.
У випадаючому списку Signing profiles вибираємо сертифікат, що йде в комплекті до програми. І натискаємо кнопку Add signature.
У лівому вікні бачимо, що підпис додана. Закриваємо вікно підписи, тим самим повертаємося до головного вікна програми.
Завантаження програмного забезпечення, описані в статті:
MIFViewer - 21Kb
SISContents
Червона Ольга Редагуємо UID іконок додатків прямо в темі оформлення