На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (5) 1 2 [3] 4 5  все  ( Перейти к последнему сообщению )  
> Собственный инсталлер..?
    2 Dj_Karies: Дело не в названии инсталлера - дело в том что это будет наш инсталлер, а ины всякие это их инсталлер. Ясно что есть много готовых програм, но не всегда там есть все что нам надо.
      Ну, Shiru_Otaku - господин зачинатель, может мы от вас увидим черновой вариант ТЗ? ;) Я хоть и занимаюсь их написанием, но думаю что будет правильнее первый вариант написать именно вам ;D
        Окей, оно будет:) На днях...;)

        И лучше-бы вам (соучастникам;), если остались какие-то предложения-соображения - высказать их сейчас:)
          Имхо, все уже высказано на первой странице топика, а если будет что-нибудь еще, так мы это прямо в ТЗ и подправим! ;D
            Цитата

            2Ix0DeS: паскалененавистник! Ур-р-р! Чё так стремаешься дельфей? Васика понятно ещё (сам ненавижу теперь), но дельфей... Ударим begin'ом по краткости кода!

            ээ... во первых я не перевариваю паскаль... а соотвессно Delphi
            я щаз пишут engine инсталлера на асме   ;D shell к нему я думаю будет на msvcpp написан... никакого нафиг дельфи
              Ну, для начала такая тема... Поправляйте, где не прав...


              Цитата

              ver 1.0 alpha от 24.03.03



              Общие сведения

              Инсталлятор представляет собой две функционально независимых части. Первая часть - компоновщик (автоматизирует процесс подготовки файлов к упаковке и создания конечного дистрибутива); вторая - собственно инсталлятор, неизменяемая программа-депакер с присоединёнными к ней файлами дистрибутива; плюс автоматически включаемая в состав дистрибутива программа деинсталлятора.



              Основные задачи

              - Создание дистрибутива ПО, рассчитанного в основном на распостранение через сети (это определяет такие параметры, как единственный файл дистрибутива; отсутствие выбора вида установки, типа minimal/full/etc..);
              - Открытый исходный код, распостраняемый полностью free;
              - Удобный, и по возможности настраиваемый, интерфейс инсталлятора;
              - Быстрая работа инсталлятора и малый его размер;
              - Корректность установки новых версий дистрибутива и деинсталляции.



              Компоновщик

              К компоновщику не предъявляется особых требований - основной его задачей является предоставление простого способа подготовки дистрибутива. Размер этой части программы, а также скорость его работы не являются решающими факторами (данную часть вполне можно написать на Builder).



              Интерфейс компоновщика

              Пользователь указывает все нужные файлы и относительный путь для них (от / как от корня папки, выбранной пользователем для установки ПО). Также пользователь указывает все ключи реестра, которые нужно установить; иконку для дистрибутива, тексты, опции. После этого по соответствующей кнопке или пункту меню происходит автоматическая сборка дистрибутива: генерируется скрипт-файл, выбранные файлы копируются во временную директорию (во избежание случайного их повреждения), где пакуются, склеиваются, и т.д.



              Инсталлятор

              Инсталлятор как программа представляет собой exe-файл. Он должен быть неизменяемым (т.е. не копилируется каждый раз заново) - все возможности должны настраиваться через внешний скрипт-файл (генерируемый компоновщиком). Общий формат дистрибутива таков:

              - exe-файл инсталлятора;
              - внутренний каталог (offset в exe-файле и заголовки файлов, включённых в дистрибутив);
              - скрипт-файл (описывает, что нужно делать со всеми последующими файлами);
              - файлы собственно устанавливаемой программы.

              Все эти компоненты собраны в единый exe-файл (методом склейки, автоматически выполняется компоновщиком). Файлы программы могут быть упакованы каким-либо компрессором (по необходимости - если применение компрессии даёт уменьшение размера, mp3 или jpg упаковывать не всегда имеет смысл).

              Прелагается к реализации также второй вариант: все файлы программы (включая скрипт) упаковываются в единый непрерывный RAR-архив; при запуске инсталлятора распаковываются в \%windir\%/temp (в этом случае не требуется хранить внутренний каталог, сжатие будет более эффективным). Единственная сложность, которая может возникнуть - RAR является коммерческим продуктом. Для решения этой проблемы стоит поискать некоммерческий архиватор, поддерживающий непрерывные архивы и имеющий открытый исходный текст депакера.



              Интерфейс инсталлятора

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

              - Прочесть определённый текст (опционально);
              - Согласиться с условиями лицензионного соглашения (опционально);
              - Выбрать путь для инсталляции ПО (с показом свободного места на выбранном диске, и предупреждением о его нехватке, если таковая будет иметь место);
              - Выбрать, нужно-ли добавлять иконку на рабочий стол; пункты в меню "Пуск";
              - Согласиться со всеми выбранными опциями и начать инсталляцию;
              - В момент инсталляции можно прервать её кнопкой отмены (все созданные файлы должны быть удалены);
              - По завершении инсталляции опционально предложить перезагрузку, readme-файл, запуск программы.



              Скрипт инсталлятора

              Скрипт-файл инсталлятора описывает все необходимые операции, которые нужно произвести с файлами дистрибутива; а также все дополнительные операции (внесение ключа в реестр, например). Также в скрипт-файле указываются относительные ссылки на графику оболочки инсталлятора.

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

              Скрипт инсталлятора, для более простой реализации парсера, должен иметь совершенно жёстко определённый формат (ограничения на тип и количество разделителей, значения полей). Он не предназначается для ручного редактирования пользователем, только для автогенерацией компоновщиком.



              Некоторые моменты работы инсталлятора

              При запуске инсталлятора проверить, достаточно-ли места в \%windir\%/temp. Если места недостаточно - работу нужно прекратить немедленно (с соответствующим сообщением об ошибке). Иначе - распаковать файлы в temp.

              В момент выбора пользователем целевой директории нужно проверять, достаточно-ли на целевом диске места для инсталляции, и если нет - предложить (без message-box`ов, просто выделенным текстом на форме приложения) выбрать другую директорию, либо освободить место (не пускать дальше, disable кнопке Next).

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

              Сам процесс инсталляции происходит согласно скрипт-файлу. При отмене инсталляции все созданные файлы и папки (и в temp, и в целевой директории) должны быть удалены.

              При инсталляции ведётся лог-файл скопированных файлов и совершённых действий, впоследствии именно он используется для деинсталляции (записывается в папку с установленным ПО). Он-же используется при отмене инсталляции.



              Деинсталляция

              Для деинсталляции ПО предназначается небольшой exe-файл, копирующийся в папку с установленным ПО (включённый компоновщиком в состав дистрибутива), интерпретирующий лог-файл инсталлятора, и соверщающий обратные действия.



              Обновление версий

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



              TODO

              - Определиться с необходимыми опциями, которые должен предоставлять инсталлятор;
              - Определиться с необходимыми возможностями (помимо упомянутых);
              - Определиться с методом хранения файлов ПО в составе инсталлятора (один непрерывный архив либо множество файлов с каталогом);
              - Исходя их предыдущих пунктов составить первую версию формата скрипт-файла инсталлятора;
              - После этого переходить к конкретному расписанию задач для реализации, и собственно реализации.
              - Обмыть полученную реализацию;)
                Насчет обновления версий:
                Если программа прописывается в реестр, то нужно проверить наличие этих записей, а не шарить по выбранной директории. Иначе если человек установит новую версию в другую папку, старая версия может стать неработоспособной, но при этом сохраниться на диске. Что еще хуже, при попытке деинсталяции старой версии, будут стерты ключи реестра и для новой версии... ;D
                  Хм.. Это сложный момент.. Новая версия может использовать другие ключи реестра. А потом, многие программы не стирают за собой записи в реестре - и при повторной инсталляции настройки программы сохраняются.

                  Так что, наверное, нужно это сделать опционально - оставить ключи в покое, либо... А вот что либо - надо думать...
                    Хорошо.
                    В компоновщике  должен быть представлен выбор стирать старые ключи реестра или нет. Если выбрана опция стирания, то инсталятор должен выдать предупреждение об установленной версии. (можно тоже сделать опционально)
                      Ок... А что насчёт

                      Цитата
                      Прелагается к реализации также второй вариант: все файлы программы (включая скрипт) упаковываются в единый непрерывный RAR-архив; при запуске инсталлятора распаковываются в \%windir\%/temp (в этом случае не требуется хранить внутренний каталог, сжатие будет более эффективным). Единственная сложность, которая может возникнуть - RAR является коммерческим продуктом. Для решения этой проблемы стоит поискать некоммерческий архиватор, поддерживающий непрерывные архивы и имеющий открытый исходный текст депакера.


                      ?:)
                        1. Насчет архиватора- есть отличная GPL- лицензированная библиотека: zlib (53К)
                         - в ней реализован ТОЛЬКО алгоритм архивации, зато реализован хорошо.

                        2. Насчет склейки файлов- проблема...
                        Дело в том, что Вынь не будет запускать файл с допиской в конце лишнего кода (PE - формат, однако).
                        Под Вынь2000 все просто: есть ф-ии для работы с ресурсами, а вот Вынь 95-98 - я таких найти не смог...
                        Поэтому, скорее всего, придется самим формировать заголовок PE- файла...
                        Вроде как это дело хорошо описано у Румянцева...

                        З.Ы. Я писал простенький инсталлер для своей проги, могу дать код, только просьба потом тухлыми помидорами в меня не кидать :)

                        З.З.Ы. Код под GCC, но должен компилиться и под VC, кстати, надо бы инсталлер компилить под фриварным компилером (GCC, например :)) )
                          Цитата Shiru_Otaku, 26.03.03, 03:11:35
                          Ок... А что насчёт


                          ?:)
                          По-моему, это не то, что нам нужно... не стоит ;)
                            2nnn

                            Логично, что заголовок exe-шника править придётся:) (пока только не проникся - как именно, читаю вот описалово)...

                            С GPL - не хотелось-бы связываться:)


                            2Testudo

                            А что нужно, что стоит? СтОит?;)
                              Цитата Shiru_Otaku, 27.03.03, 03:20:04
                              2nnn

                              Логично, что заголовок exe-шника править придётся:) (пока только не проникся - как именно, читаю вот описалово)...

                              С GPL - не хотелось-бы связываться:)


                              По заголовкам хорошая книга - Румянцев что-то вроде "Файлы в win32 API", дома лежит, могу дать точное название...

                              А насчет GPL- почему?
                              Насколько я понял, вы тоже хотите сделать исходники открытыми...
                              Да и продукция под GPL неплохая есть...
                              Я например, пользуюсь Dev-C++ для разработки компактных приложений, и не жалуюсь...
                              Сообщение отредактировано: nnn -
                                2 Siru_Otaku.

                                Давненько сюда не заглядывал и вот -- пропустил топик...
                                Слушай, ты посмотри Nullsoft'овский инсталлер, которым WinAmp ставится. Он в сырцах идет... Русифицировать можно, довольно мощный язык скриптов и все такое...

                                IMHO, понравится. Я им сам когда-то пользовался... В прошлой жизни... ;D
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (5) 1 2 [3] 4 5  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0631 ]   [ 15 queries used ]   [ Generated: 28.04.24, 07:13 GMT ]