Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Смена UID3

From 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 02:39.
170 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.

×