×
Namespaces

Variants
Actions

Смена UID3

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Совместимость
Платформа(ы):
Symbian

Статья
Автор: truf (14 Dec 2007)
Последнее редактирование: hamishwillee (10 Nov 2011)

Contents

Что такое UID3?

UID3 (уникальный идентификатор 3) - это UID специального назначения, 32х разрядное число для однозначной идентификации бинарного файла (EXE или DLL) в системе, а также для разграничения доступа между процессами. UID3 задается в mmp-файле проекта.

Очень важно правильно выбрать UID3, для этого желательно ознакомиться со статьей UID - Часто задаваемые вопросы. На этапе разработки, чаще всего, выбираются значения диапазона от 0x00000000 и до 0x0FFFFFFF.

Для чего менять UID3?

На различных этапах разработки приложения могут использоваться различные UID3. К примеру разработав приложение для Symbian 3-й редакции с использованием UID3 из области значений для разработки, вам потребуется подписать его перед распространением. В этом случае вы должны будете получить новый UID3 из защищенной области значений. Также необходимость изменения UID3 может возникнуть при портировании приложения с Symbain второй редакции на Symbain третьей редакции.

Как изменить UID3?

Современные IDE (Carbide.c++ 1.3, Carbide.vs 3.0) позволяют задать UID3 в момент генерации нового проекта. К сожалению, не все позволяют изменить его после этого. Точнее, они могут изменить его не везде, а лишь в части файлов, что повлечет ошибки при установке и запуске приложения. Поэтому самый верный способ изменить UID3 - сделать это вручную во всех необходимых файлах. Делается это либо вне IDE с помощью текстового редактора. Либо редактором файлов самой IDE.

UID3ChangeRus1.JPG

Carbide.c++ 1.2. Мастер создания нового проекта. Задание UID3.


UID3ChangeRus2.JPG

Carbide.c++ 1.2. Редактор mmp файла. Задание UID3.

Где хранится UID3

UID3 хранится в нескольких файлах проекта. Число и расположение таких файлов зависит от используемой IDE и типа проекта. Следует отметить, что наиболее безопасный и универсальный способ найти все значения UID3 - воспользоваться поиском по файлам проекта. Но для более глубокого понимания необходимости изменений этих файлов, и к чему эти изменения ведут ниже приведен список. К тому же, не все что вы найдете следует изменять (см. Примечание). Файлы, содержащие UID3, перечисляются в порядке вероятности их присутствия в вашем проекте:

1) Файл .mpp. Обычно расположен в папке .\Group\ проекта и содержит основные характеристики mmp файла. Файл .mmp обычно редактируется специальным редактором IDE. Например в Carbide.c++ 1.2 вы обнаружите его на закладке Overview. Вы также можете открыть его любым текстовым редактором, или в закладке myproject.mmp визуального редактора. UID3 в mmp файле задается вместе с UID2 после ключевого слова UID. Пример:

UID 0x100049CE 0x2000AED9

Измените второе число на новое значение UID3 и сохраните файл.

2) Если вы создаете программу для Symbian 3-й редакции, то в pkg файле вы можете увидеть использование UID3 в качестве папки. Файл pkg обычно расположен в директории ./sis/ проекта. Пример:

"$(EPOCROOT)Epoc32\data\z\resource\apps\myfile.dat" -"c:\private\20000ED8\myfile.dat"

Это значит, что файл будет сохранен в защищенное хранилище, связанное с программой (см. Data caging (Экранирование данных)). На самом деле, для получения папки экранированного хранилища система будет использовать SID программы, но его редко задают в mmp файле, а по умолчанию он равен UID3. Поэтому, в 90% случаев вам следует скорректировать пути инсталляции этих файлов. Иначе, при установке вы увидите сообщение об ошибке.

3) Файл MyApp_reg.rss. Содержит информацию для регистрации GUI приложения в системе (информация о иконке приложения в главном меню и ее видимости). В нем вы найдете строку UID3 0x2000DED8. Если забудете изменить это значение UID3, ваша программа перестанет открываться при выборе ее иконки в главном меню.

4) Файл MyAppAppliсtion.h (или MyAppGlobals.h в UIQ проекте). Содержит значение константы, возвращаемой функцией TUid CAknApplication::AppDllUid() (в UIQ - TUid CQikApplication::AppDllUid()). В заголовочном файле вы увидите строку

const TUid KUidMyApplication = { 0x2000AED8 };

Обязательно поменяете это значение UID3 - иначе ваша программа перестанет запускаться. Система получит UID3 из вышеназванной функции и сравнит его с UID3 из файла MyApp_reg.rss. Если они не совпадут, система не станет вызывать функцию NewApplication(), и ваша программа просто не запустится.

Некоторые IDE изменяют это значение автоматически при изменении значения UID3 в файле mmp. Для этого нужно перекомпилировать проект.

Если вы не можете найти эту константу, посмотрите что возвращает функция AppDllUid(), возможно значение указано в самой функции.

5) Файл application.uidesign. Этот файл присутствует в GUI проекте, если он был создан по шаблону GUI Application with UI Designer. Изменить его с помощью встроенного визуального редактора не получится, файл придется открывать текстовым редактором. В нем вы найдете строки:

<property id="className">CVMSApplication</property>
<property id="documentBase">VMS</property>
<property id="name">VMSApplication</property>
<property id="uid">0x2000DED8</property>

Измените значение UID3. В идеале, это значение также должно изменяться IDE, при смене UID3 в mmp файле. Но на практике, так происходит не всегда. Просто знайте, что в этом файле также есть UID3.

6) Наконец, UID3 может присутствовать в вашем коде, если вы используете TApaTaskList или иной способ поиска запущенных в памяти процессов. Например, для того чтобы запретить повторный запуск вашего фонового процесса. В этом случае следует воспользоваться поиском старого UID3 во всех файлах проекта.

Примечания:

a) Зачастую, UID3 путают с Package ID. Package ID задается в pkg файла строкой вида:

#{"VMS_demon_3rd EXE"},('''0x2000DEDA'''),1,0,0

Эта путаница вызвана тем, что после генерации нового проекта Carbide выбирает значение UID3 в качестве Package ID по-умолчанию. Изменения этого числа не обязательно, и даже может повредить, в том случае если вы используете в pkg файле механизм определения уже установленных пакетов по Package ID.

b) Для проектов, использующих автозапуск программы с помощью Startup List Management API (S60 3rd), создается rss файл, именем которого часто является Package ID (в проекте pid.rss, после установки c:\private\101f875a\import\[pid].rsc). Т.к. Package ID часто путают с UID3, то его стараются переименовать. На самом деле это не обязательно. Если же вы все же хотите переименовать этот файл, убедитесь что вы также изменили ссылку на него в файле mmp и pkg, а также, что его новое имя совпадает с Package ID.

После изменения UID3 требуется перекомпиляция проекта.

Внутренние ссылки

This page was last modified on 10 November 2011, at 05:39.
61 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×