Разработка программы установки Eclipse

Последнее изменение: пятница 18 июня 2004 г. 15:20

Продукты, созданные на основе Eclipse, требуют правильной установки в системах конечных пользователей. Как правило, для автоматизации процессов установки, обновления и удаления применяются инструменты упаковки специального назначения, такие как InstallShield и RPM. В этом разделе рассмотрена процедура создания программы установки продуктов, созданных на основе Eclipse, а также расширений этих продуктов, которые поставляются отдельно.

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

Этот раздел следует рассматривать как справочную таблицу для сотрудников, отвечающих за разработку программ установки продуктов на основе Eclipse. Ниже приведены две причины, по которым рекомендуется придерживаться указанной процедуры:

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

Программа установки продукта должна предусматривать автоматическую настройку запуска - т.е. возможность установки в любой системе, работающей под управлением поддерживаемой операционной системы, с компакт-диска.

Для выполнения исходного кода Eclipse в системе должна быть установлена среда выполнения Java2 (JRE). JRE представляет собой лицензионное программное обеспечение, поставляемое вендорами Java. Получив у вендора лицензию на распространение JRE, компания может поставлять JRE вместе со своими продуктами и устанавливать в системах конечных пользователей. Кроме того, наличие JRE в системе можно указать в предварительных требованиях установки и затем связать с продуктом. Так или иначе для работы продукта на основе Eclipse требуется подходящая среда JRE. Роль программы установки заключается в установке JRE вместе с продуктом, либо настройке существующей среды JRE.

Предположим, что JRE устанавливается вместе с продуктом. Каталог, содержащий JRE, представляет собой один из входных параметров сценария создания программы установки. Предположим, что это каталог <JRE>. Содержимое этого каталога должно соответствовать стандартной структуре каталогов JRE. В частности в каталоге <JRE> должны быть расположены исполняемый файл jre/bin/java.exe и библиотека классов jre/lib/rt.jar. Ниже для справки приведено схематичное представление этого каталога:

<JRE>/
  jre/
    bin/
      java.exe
    lib/
      rt.jar

Поскольку этот пример демонстрирует только общую структуру, дополнительные файлы (и подкаталоги) в нем не показаны. Имена, выделенные курсивом, указывают на элементы продукта.

В качестве второго входного параметра сценария создания программы установки следует указать каталог <заголовка продукта>, в котором содержится программа запуска исполняемых файлов продукта, а также файлы, не связанные с Eclipse. Ниже для справки приведено схематичное представление этого каталога (курсивом выделены имена файлов, которые отличаются для разных продуктов):

<заголовок-продукта>/
  acmeproduct.exe

В качестве третьего входного параметра сценария создания следует указать каталог <тела продукта>, в котором расположены комплекты и модули, разработанные для этого продукта. Ниже для справки приведено схематичное представление этого каталога:

<тело продукта>/
  eclipse/
    features/
      com.example.acme.acmefeature_1.0.0/
        feature.xml
      com.example.acme.otherfeature_1.0.0/
        feature.xml
    plugins/
       com.example.acme.acmefeature_1.0.0/
        plugin.xml
        about.ini
        about.properties
        about.mappings
        plugin_customization.ini
        splash.bmp
       com.example.acme.otherfeature_1.0.0/
        plugin.xml
        about.ini
        about.properties
        about.mappings
       com.example.acme.myplugin_1.0.0/
        plugin.xml
        myplugin.jar
       com.example.acme.otherplugin_1.0.0/
        plugin.xml
        otherplugin.jar

В качестве четвертого параметра ввода сценария следует указать каталог <платформы>, содержащий комплекты и модули платформы Eclipse, а также дополнительные инструменты третьих сторон. Кроме того, в состав этого каталога входит стандартная программа запуска исполняемых файлов Eclipse eclipse.exe, (в среде Unix - eclipse), связанный файл startup.jar, а также прочие файлы платформы Eclipse, которые необходимо разместить в корневом установочном каталоге. Ниже для справки приведено схематичное представление этого каталога:

<платформа>
  eclipse/
    eclipse.exe
    startup.jar
    features/
      org.eclipse.platform_2.0.0/
      org.eclipse.platform.win32_2.0.0/
      org.eclipse.jdt_2.0.0/
      org.eclipse.pde_2.0.0/
    plugins/
      org.eclipse.platform_2.0.0/
      org.eclipse.core.runtime_2.0.0/
      org.eclipse.core.boot_2.0.0/
      org.eclipse.core.resources_2.0.0/
      org.eclipse.ui_2.0.0/
      org.eclipse.jdt_2.0.0/
      org.eclipse.jdt.core_2.0.0/
      org.eclipse.jdt.ui_2.0.0/
      org.eclipse.pde_2.0.0/
      org.eclipse.pde.core_2.0.0/
      org.eclipse.pde.ui_2.0.0/
      (каталоги модулей org.eclipse.*)

Список файлов, устанавливаемых в системе конечного пользователя, зависит от конкретного содержимого каталогов <JRE>, <заголовок продукта>, <тело продукта> и <платформа>.

Последние входные параметры сценария создания программы установки - это ИД и версия базового комплекта продукта, а также имя исполняемого файла продукта. Например, "com.example.acme.acmefeature", "1.0.0" и "acmeproduct.exe". Если для продукта не требуется отдельный исполняемый файл, то в этом параметре следует указать стандартную программу запуска исполняемых файлов Eclipse - "eclipse/eclipse.exe". Эти параметры имеют особое значение, поскольку они добавляются в имена файлов и каталогов, а также в содержимое файлов маркеров, создаваемых во время установки.

Работа программы установки должна соответствовать стандартному сценарию (ниже перечислены отдельные этапы):

  1. предупреждение пользователя о необходимости закрытия всех программ
  2. отображение описания устанавливаемого продукта
  3. при необходимости, приглашение ввода имени зарегистрированного владельца и ключа лицензии
  4. отображение лицензионного соглашения продукта и запрос его подтверждения
  5. выдача рекомендации относительно расположения установочного каталога на диске (с возможностью его изменения)
  6. проверка наличия продукта или расширения в указанном расположении
  7. запрос подтверждения указанных сведений об установке
  8. создание файла маркеров, в котором указан корневой установочный каталог продукта
  9. копирование файлов на диск (см. ниже)
  10. при необходимости добавление имени зарегистрированного владельца в описание продукта
  11. добавление на рабочий стол ярлыка, позволяющего запустить исполняемый файл продукта
  12. создание записи, позволяющей пользователю удалить продукт
  13. запуск исполняемого файла продукта с опцией -initialize, позволяющей выполнить первоначальную обработку
  14. предложение просмотра информации о выпуске продукта (файл "readme")

Если на шаге 5 указано расположение <установочный-каталог>, программа установки копирует все файлы из каталогов <JRE>, <платформа>, <продукт>,  и <модуль продукта> в каталог <установочный-каталог>.

Файл ввода Установленный файл
<JRE>/* <установочный-каталог>/eclipse/*
<заголовок-продукта>/* <установочный-каталог>/*
<тело-продукта>/* <установочный-каталог>/*
<платформа>/* <установочный-каталог>/*

Файл маркеров <установочный-каталог>/eclipse/.eclipseproduct, созданный на шаге 8, указывает (в основном программам установки расширений) на каталог, в котором был установлен продукт на основе Eclipse. Файл маркеров должен соответствовать формату java.io.Properties (кодировка ISO 8859-1, Escape-символ "\"). В нем содержится следующая информация, применяемая для идентификации продукта и отличия от других продуктов на основе Eclipse:

name=Acme Visual Tools Pro
id=com.example.acme.acmefeature
version=1.0.0

Значения свойств "id" и "version" передаются сценарию создания программы установки в качестве входных параметров. Имя продукта известно заранее. (Файл маркеров не используется продуктом; он обрабатывается только программами установки продукта и расширений).

Шаг 6 предусматривает проверку наличия файла <установочный-каталог>/eclipse/.eclipseproduct или <установочный-каталог>/eclipse/.eclipseextension. Продукт нельзя установить в одном каталоге с другим продуктом или расширением.

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

<установочный-каталог>/
  acmeproduct.exe
  eclipse/
    .eclipseproduct
    eclipse.exe
    startup.jar
    features/
    plugins/
    jre/

Если программа установки продукта запрашивает у пользователя информацию о лицензии (например, имя зарегистрированного пользователя и ключ лицензии), то эта информация отображается в окне диалога "сведений" о продукте (см. шаг 10).

Для этой цели ответы пользователя сохраняются в файле "about.mapping", принадлежащем модулю базового комплекта. Например, в каталоге <установочный-каталог>/plugins/com.example.acme.acmefeature_1.0.0/about.mapping. Файл "about.mapping" может быть указан в параметре <заголовок-продукта>, либо создан программой установки. Ключ представляет собой набор чисел; значение ключа "n" заменяется на подстроку "{n}" в свойстве "aboutText". Например, если ключ лицензии соответствует полю под номером 0, то в файл "about.mapping" следует добавить строку "0=T42-24T-ME4U-U4ME".

Примечание: Файл "about.mapping" должен соответствовать формату java.io.Properties (кодировка ISO 8859-1, Escape-символ - "\"). Если исходная кодировка отличается от ISO 8859-1, программа установки должна преобразовать ее в Unicode и добавить необходимые Escape-символы "\". Escape-символы требуются для обработки специальных символов (например, "\") и не латинских символов. Например, поле 1, содержащее первые три буквы греческого алфавита, будет выглядеть следующим образом: "1=\u03B1\u03B2\u03B3".

На шаге 12 программа установки продукта запускает исполняемый файл продукта ( <установочный-каталог>/acmeproduct.exe) с опцией -initialize [извлечь сведения TBD]. Платформа Eclipse выполняет необходимую первичную обработку и сохраняет результаты в кэше. Такой подход обеспечивает оперативный первый запуск продукта и его готовность к работе в бизнес-среде.

Работа программы удаления

Работа программы удаления продукта из системы должна соответствовать стандартному процессу удаления:

  1. предупреждение пользователя о необходимости закрытия всех программ, в частности удаляемого продукта
  2. запрос подтверждения на удаление продукта
  3. удаление всех установленных файлов из каталога <установочный-каталог> и всех файлов из каталогов <установочный-каталог>/eclipse/features и <установочный-каталог>/eclipse/plugins, в том числе файлов, добавленных другими программами (например, администратором обновлений Eclipse)
  4. удаление с рабочего стола ярлыка, указывающего на исполняемый файл продукта
  5. удаление записи программы удаления продукта
  6. отображение списка файлов, которые не были удалены

После удаления продукта следует также удалить файлы, добавленные в ходе установки, а также обновленные комплекты и модули, созданные администратором обновлений Eclipse. Важная информация: В процессе удаления продукта в каталоге <установочный-каталог> могут содержатся прочие файлы и каталоги (например, <установочный-каталог>/eclipse/workspace/, <установочный-каталог>/eclipse/links/ и <установочный-каталог>/eclipse/configuration/), содержащие важные данные, не подлежащие удалению. Пользователь должен иметь возможность удаления и повторной установки продукта в исходный каталог без потери важных данных.

Работа программы установки после установки продукта

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

Работа программы установки должна соответствовать стандартному процессу установки:

  1. предупреждение пользователя о необходимости закрытия всех программ, в частности обновляемого продукта
  2. поиск установленного продукта, который требуется обновить; следует предусмотреть возможность как автоматического поиска, так и поиска вручную
  3. проверка совместимости обновления
  4. при необходимости, приглашение ввода имени зарегистрированного владельца и ключа лицензии
  5. отображение обновленного лицензионного соглашения продукта и запрос его подтверждения
  6. запрос подтверждения указанных сведений об обновлении
  7. копирование новых файлов на диск (см. ниже)
  8. при необходимости, изменение ярлыка, позволяющего запустить исполняемый файл продукта
  9. добавление измененных и новых файлов в список удаляемых файлов во время удаления из системы (если это допустимо)
  10. предложение просмотра информации о выпуске продукта (файл "readme")

На шаге 2 установленный продукт можно найти по файлу ".eclipseproduct", расположенному в каталоге "eclipse". Каталог "eclipse" расположен в установочном каталоге продукта (<установочный-каталог>/eclipse/.eclipseproduct). Информация, указанная в этом файле маркеров, отображается пользователю, который должен подтвердить правильность выбора продукта для обновления (в локальной системе может быть установлено несколько продуктов на основе Eclipse).

Шаг 3 предусматривает проверку совместимости, путем сравнения по заданному шаблону подкаталогов, принадлежащих каталогу <установочный-каталог>/eclipse/features. Например, наличие каталога "com.example.acme.otherfeature_1.0.1" указывает, что к установленному продукту было применено конкретное обновление.

На шаге 7 программа установки может удалить или заменить исходные файл и добавить дополнительные файлы. Важная информация: Некоторые файлы и каталоги (в частности <установочный-каталог>/eclipse/workspace/ и <установочный-каталог>/eclipse/configuration) могут содержать важные данные, которые должны быть сохранены в процессе обновления продукта.  

Процесс обновление версии продукта, как правило, не предусматривает изменение большинства файлов из каталога <установочный-каталог>/eclipse/plugins/ (аналогично для <установочный-каталог>/eclipse/features/). Такой подход предоставляет широкие возможности оптимизации при обработке каталога <установочный-каталог>/eclipse/plugins/, поскольку имя подкаталога, соответствующее номеру версии модуля (фрагмента), изменяется только в том случае, если изменяются содержащиеся в нем файлы. Другими словами, файлы из каталога <установочный-каталог>/eclipse/plugins/org.eclipse.ui_2.0.0/ изменять не требуется, если этот каталог будет существовать после обновления версии; однако если требуется изменение файлов модуля, то номер версии модуля подлежит исправлению и в результате файлы обновленного модуля устанавливаются в параллельном каталоге <установочный-каталог>/eclipse/plugins/org.eclipse.ui_2.0.1/.  

Связывание продукта с существующей JRE

Предполагается, что среда выполнения Java расположена в файле <установочный-каталог>/eclipse/jre/bin/javaw.exe. Если этот файл расположен в другом каталоге, то с помощью опции -vm командной строки следует указать абсолютный путь к нему (например, -vm C:\j2jre1.3.0\jre\bin\javaw.exe). В этом случае программа установки должна добавить эту опцию в ярлык, размещаемый на рабочем столе.

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

Расширение представляет собой набор комплектов и связанных модулей, устанавливаемых отдельно, которые можно связать с установленными продуктами на основе Eclipse и использовать в них. В отличие от продукта, расширение не предусматривает автонастройку запуска; в состав расширения не входят исполняемый файл продукта, платформа Eclipse и среда выполнения Java.

Перейдем от общего к более частному рассмотрению и предположим, что расширение состоит из одного комплекта. В качестве первого входного параметра сценария создания программы установки следует указать каталог <расширение>, содержащий комплект и связанные модули. Предполагается, что в состав расширения не входят файлы, связанные с Eclipse; по умолчанию эти файлы расположены непосредственно в каталоге <расширение>/, а не в его подкаталоге <расширение>/eclipse/. Ниже для справки приведено схематичное представление этого каталога:

<расширение>/
  eclipse/
    features/
      com.example.wiley.anvilfeature_1.0.0/
        feature.xml
    plugins/
       com.example.wiley.anvilfeature_1.0.0/
        plugin.xml
        about.ini
        about.properties
        about.mappings
       com.example.wiley.mainplugin_1.0.0/
       com.example.wiley.otherplugin_1.0.0/

Файлы, устанавливаемые в системе конечного пользователя, зависят от конкретного содержимого каталога <расширение>.

Последние входные параметры сценария создания программы установки - это ИД и версия комплекта расширения. Например, "com.example.wiley.anvil" и "1.0.0". Эти параметры имеют особое значение, поскольку они добавляются в имена файлов и каталогов, а также в содержимое файлов маркеров, создаваемых во время установки.

Работа программы установки расширения во многом аналогична работе программы установки продукта. Ниже рассмотрены их различия:

Работа программы установки должна соответствовать стандартному процессу:

  1. предупреждение пользователя о необходимости закрытия всех программ
  2. отображение описания устанавливаемого расширения
  3. при необходимости, приглашение ввода имени зарегистрированного владельца и ключа лицензии
  4. отображение лицензионного соглашения расширения и запрос его подтверждения
  5. выдача рекомендации относительно расположения установочного каталога на диске (с возможностью его изменения)
  6. проверка наличия продукта или другого расширения в указанном расположении
  7. выбор продуктов, применяющих данное расширение (поиск на диске, обзор, отмена)
  8. при необходимости, проверка совместимости с выбранными продуктами
  9. запрос подтверждения указанных сведений об установке
  10. создание файла маркеров, в котором указан корневой установочный каталог расширения
  11. копирование файлов на диск (см. ниже)
  12. добавление имени зарегистрированного владельца и ключа лицензии в описание продукта
  13. создание записи, позволяющей пользователю удалить расширение
  14. добавление в выбранные продукты файлов ссылок, позволяющих связать их с расширением
  15. предложение просмотра информации о выпуске расширение (файл "readme")

Если на шаге 5 указан каталог <установочный-каталог>, то на шаге 11 программа установки копирует в него все файлы из каталога <расширение> .

Файл ввода Установленный файл
<расширение>/* <установочный-каталог>/*

На шаге 7 можно выбрать произвольный продукт Eclipse. Продукт, созданный на основе Eclipse, можно определить по наличию файла <установочный-каталог-продукта>/eclipse/.eclipseproduct. Пользователю следует предоставить возможность автоматического поиска установленных продуктов на диске (кнопка "Найти установленные продукты"), либо выбора каталога продукта вручную (кнопка "Обзор").

Шаг 8 предусматривает проверку совместимости, путем сравнения по заданному шаблону подкаталогов, принадлежащих каталогу <установочный-каталог-продукта>/eclipse/features. Например, наличие папки "org.eclipse.jdt_2.*" указывает, что в состав продукта входит JDT.  

Файл маркеров <установочный-каталог>/eclipse/.eclipseextension, созданный на шаге 10, указывает на каталог, в котором было установлено расширение на основе Eclipse. Он применяется программами установки для поиска расширений (аналогично файлу маркеров продукта .eclipseproduct). Файл маркеров должен соответствовать формату java.io.Properties (кодировка ISO 8859-1, Escape-символ "\"). В нем содержится следующая информация, применяемая для идентификации расширения и отличия от других расширений на основе Eclipse:

name=Wiley Anvil Enterprise Edition
id=com.example.wiley.anvilfeature
version=1.0.0

Значения свойств "id" и "version" передаются сценарию создания программы установки в качестве входных параметров. Имя расширения известно заранее. (Файл маркеров не используется продуктом; он обрабатывается только программами установки продукта и расширений).

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

<установочный-каталог>/
  eclipse/
    .eclipseextension
    features/
    plugins/

Единственное значительное отличие от программы установки продукта заключается в том, что программа установки расширения дополнительно добавляет в установленные продукты на основе Eclipse, файлы ссылок. (Это позволяет избежать связывания расширения с каждым продуктом вручную с помощью администратора обновлений Eclipse).  

На шаге 14 создается файл ссылок <установочный-каталог-продукта>/eclipse/links/com.example.wiley.anvilfeature.link; его имя совпадает с именем каталога комплекта расширения за исключением суффикса, указывающего на номер версии. Файл ссылки должен соответствовать формату java.io.Properties (кодировка ISO 8859-1, Escape-символ - "\"). Этот файл задается с помощью ключа "path", в качестве значения которого указывается полный путь к установленному расширению (<установочный-каталог>); например, запись может выглядеть следующим образом: "path=C:\\Program Files\\Wiley\\Anvil". Программа установки отвечает за преобразование исходной кодировки в Unicode и добавление необходимых Escape-символов "\". Escaping-символы необходимы, поскольку <установочный-каталог> может содержать специальные символы (такие как "\"), а также описывать каталоги, в именах которых указаны не латинские символы. Файл ссылки считывается продуктом при запуске. Программа установки ведет протокол создаваемых файлов ссылок для обращения к ним в процессе обновления или удаления расширения.

Работа программы удаления

Работа программы удаления должна соответствовать стандартному процессу:

  1. предупреждение пользователя о необходимости закрытия всех программ, в частности продуктов, применяющих удаляемое расширение
  2. запрос подтверждения на удаление расширения
  3. удаление всех установленных файлов из каталога <установочный-каталог> и всех файлов из каталогов <установочный-каталог>/eclipse/features и <установочный-каталог>/eclipse/plugins, в том числе файлов, добавленных другими программами (например, администратором обновлений Eclipse)
  4. при необходимости удаление файлов ссылок из продуктов
  5. удаление записи программы удаления расширения
  6. отображение списка файлов, которые не были удалены

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

Работа программы установки после установки расширения

После установки расширения в системе пользователя программа установки должна предоставлять возможность применения служебных обновлений и перехода к новым версиям.

Работа программы установки должна соответствовать стандартному процессу установки:

  1. предупреждение пользователя о необходимости закрытия всех программ, в частности продуктов, применяющих обновляемое расширение
  2. поиск установленного расширения, которое требуется обновить; следует предусмотреть возможность как автоматического поиска, так и поиска вручную
  3. проверка совместимости обновления
  4. при необходимости, приглашение ввода имени зарегистрированного владельца и ключа лицензии
  5. отображение обновленного лицензионного соглашения продукта и запрос его подтверждения
  6. запрос подтверждения указанных сведений об обновлении
  7. копирование новых файлов на диск (см. ниже)
  8. добавление измененных и новых файлов в список удаляемых файлов во время удаления из системы (если это допустимо)
  9. предложение просмотра информации о выпуске расширение (файл "readme")

На шаге 2 установленное расширение продукт можно найти по файлу ".eclipseproduct", расположенному в каталоге "eclipse". Каталог "eclipse" расположен в установочном каталоге расширения (<установочный-каталог>/eclipse/.eclipseextension). Информация, указанная в этом файле маркеров, отображается пользователю, который должен подтвердить правильность выбора расширения для обновления (в локальной системе может быть установлено несколько расширений на основе Eclipse).

На шаге 7 программа установки не должна удалять или заменять исходные файлы; вместо этого следует только добавить файлы новых версий комплектов и модуля и при необходимости заменить файл маркеров <установочный-каталог>/eclipse/.eclipseextension. Сохранение старых версий предоставляет пользователю возможность отмены обновления. Аналогично случаю обновления продукта, файлы из каталога <установочный-каталог>/eclipse/plugins/com.example.wiley.otherplugin_1.0.0/ изменять не требуется, если этот каталог будет существовать после обновления версии; однако если требуется изменение файлов модуля, то номер версии модуля подлежит исправлению и в результате файлы обновленного модуля устанавливаются в параллельном каталоге <установочный-каталог>/eclipse/plugins/com.example.wiley.otherplugin_1.0.1/.