Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.122.195] |
|
Страницы: (5) 1 2 [3] 4 5 все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
2 Dj_Karies: Дело не в названии инсталлера - дело в том что это будет наш инсталлер, а ины всякие это их инсталлер. Ясно что есть много готовых програм, но не всегда там есть все что нам надо.
|
Сообщ.
#32
,
|
|
|
Ну, Shiru_Otaku - господин зачинатель, может мы от вас увидим черновой вариант ТЗ? Я хоть и занимаюсь их написанием, но думаю что будет правильнее первый вариант написать именно вам ;D
|
Сообщ.
#33
,
|
|
|
Окей, оно будет:) На днях...
И лучше-бы вам (соучастникам;), если остались какие-то предложения-соображения - высказать их сейчас:) |
Сообщ.
#34
,
|
|
|
Имхо, все уже высказано на первой странице топика, а если будет что-нибудь еще, так мы это прямо в ТЗ и подправим! ;D
|
Сообщ.
#35
,
|
|
|
Цитата 2Ix0DeS: паскалененавистник! Ур-р-р! Чё так стремаешься дельфей? Васика понятно ещё (сам ненавижу теперь), но дельфей... Ударим begin'ом по краткости кода! ээ... во первых я не перевариваю паскаль... а соотвессно Delphi я щаз пишут engine инсталлера на асме ;D shell к нему я думаю будет на msvcpp написан... никакого нафиг дельфи |
Сообщ.
#36
,
|
|
|
Ну, для начала такая тема... Поправляйте, где не прав...
Цитата 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 - Определиться с необходимыми опциями, которые должен предоставлять инсталлятор; - Определиться с необходимыми возможностями (помимо упомянутых); - Определиться с методом хранения файлов ПО в составе инсталлятора (один непрерывный архив либо множество файлов с каталогом); - Исходя их предыдущих пунктов составить первую версию формата скрипт-файла инсталлятора; - После этого переходить к конкретному расписанию задач для реализации, и собственно реализации. - Обмыть полученную реализацию;) |
Сообщ.
#37
,
|
|
|
Насчет обновления версий:
Если программа прописывается в реестр, то нужно проверить наличие этих записей, а не шарить по выбранной директории. Иначе если человек установит новую версию в другую папку, старая версия может стать неработоспособной, но при этом сохраниться на диске. Что еще хуже, при попытке деинсталяции старой версии, будут стерты ключи реестра и для новой версии... ;D |
Сообщ.
#38
,
|
|
|
Хм.. Это сложный момент.. Новая версия может использовать другие ключи реестра. А потом, многие программы не стирают за собой записи в реестре - и при повторной инсталляции настройки программы сохраняются.
Так что, наверное, нужно это сделать опционально - оставить ключи в покое, либо... А вот что либо - надо думать... |
Сообщ.
#39
,
|
|
|
Хорошо.
В компоновщике должен быть представлен выбор стирать старые ключи реестра или нет. Если выбрана опция стирания, то инсталятор должен выдать предупреждение об установленной версии. (можно тоже сделать опционально) |
Сообщ.
#40
,
|
|
|
Ок... А что насчёт
Цитата Прелагается к реализации также второй вариант: все файлы программы (включая скрипт) упаковываются в единый непрерывный RAR-архив; при запуске инсталлятора распаковываются в \%windir\%/temp (в этом случае не требуется хранить внутренний каталог, сжатие будет более эффективным). Единственная сложность, которая может возникнуть - RAR является коммерческим продуктом. Для решения этой проблемы стоит поискать некоммерческий архиватор, поддерживающий непрерывные архивы и имеющий открытый исходный текст депакера. ? |
Сообщ.
#41
,
|
|
|
1. Насчет архиватора- есть отличная GPL- лицензированная библиотека: zlib (53К)
- в ней реализован ТОЛЬКО алгоритм архивации, зато реализован хорошо. 2. Насчет склейки файлов- проблема... Дело в том, что Вынь не будет запускать файл с допиской в конце лишнего кода (PE - формат, однако). Под Вынь2000 все просто: есть ф-ии для работы с ресурсами, а вот Вынь 95-98 - я таких найти не смог... Поэтому, скорее всего, придется самим формировать заголовок PE- файла... Вроде как это дело хорошо описано у Румянцева... З.Ы. Я писал простенький инсталлер для своей проги, могу дать код, только просьба потом тухлыми помидорами в меня не кидать З.З.Ы. Код под GCC, но должен компилиться и под VC, кстати, надо бы инсталлер компилить под фриварным компилером (GCC, например ) ) |
Сообщ.
#42
,
|
|
|
Цитата Shiru_Otaku, 26.03.03, 03:11:35 По-моему, это не то, что нам нужно... не стоит Ок... А что насчёт ? |
Сообщ.
#43
,
|
|
|
2nnn
Логично, что заголовок exe-шника править придётся:) (пока только не проникся - как именно, читаю вот описалово)... С GPL - не хотелось-бы связываться:) 2Testudo А что нужно, что стоит? СтОит? |
Сообщ.
#44
,
|
|
|
Цитата Shiru_Otaku, 27.03.03, 03:20:04 2nnn Логично, что заголовок exe-шника править придётся:) (пока только не проникся - как именно, читаю вот описалово)... С GPL - не хотелось-бы связываться:) По заголовкам хорошая книга - Румянцев что-то вроде "Файлы в win32 API", дома лежит, могу дать точное название... А насчет GPL- почему? Насколько я понял, вы тоже хотите сделать исходники открытыми... Да и продукция под GPL неплохая есть... Я например, пользуюсь Dev-C++ для разработки компактных приложений, и не жалуюсь... |
Сообщ.
#45
,
|
|
|
2 Siru_Otaku.
Давненько сюда не заглядывал и вот -- пропустил топик... Слушай, ты посмотри Nullsoft'овский инсталлер, которым WinAmp ставится. Он в сырцах идет... Русифицировать можно, довольно мощный язык скриптов и все такое... IMHO, понравится. Я им сам когда-то пользовался... В прошлой жизни... ;D |