Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.222.47] |
|
Сообщ.
#1
,
|
|
|
Вот, искал я как-то подходящий для моих задач инсталлер. Один хреновый, другой хуже, и все небесплатны (для shareware/commercical). И была у меня мысль - а что, если написать subj? Без особых наворотов, но чтобы open-source, и absolutely free. Т.е. суть его - хранение программы в одном файле, и установка её в место, удобное пользователю. Может, даже не используя сжатия (или стандартные алгоритмы).
Вот и интересно мне - что думаете, all - целесообразно это или нет? |
Сообщ.
#2
,
|
|
|
написать-то можно, да и нужно, но ведь есть free Setup Generator - классая вещь!
|
Сообщ.
#3
,
|
|
|
Была у меня такая задумка... А чего? Чем мы хуже других?
Только на чем писать будем? На дельфе? |
Сообщ.
#4
,
|
|
|
На чём угодно - но API )
Инсталлер, который сам за 300к весит - ну нафиг:) |
Сообщ.
#5
,
|
|
|
Мои соображения по поводу того, что должен уметь инсталлятор:
- Создавать один-единственный ехе-файл. - Сам инсталлятор (не упаковщик) должен весить как можно меньше. - Инсталлятор должен уметь помещать файловую структуру в указанную юзером папку, а также в нужную директорию относительно \%windir\% (dll-ки). - Инсталлятор не должен уметь принимать sn (проверять его, итд) - это лучше оставить на совести инсталлируемого ПО. Есть что добавить/возразить? |
Сообщ.
#6
,
|
|
|
Добавить uninstall и возможность корректной установки поверх предыдущей версии.
|
Сообщ.
#7
,
|
|
|
Т.е. установка поверх должна удалить лишние файлы (которых в новой нет), и заменить старые/добавить новые?
Критерии корректности? |
Сообщ.
#8
,
|
|
|
Ну например, чтоб автор мог задать действия инсталлера в такой ситуации.
Что-нить типа <br>if ( exist(somefile) )<br> if ( date(somefile) < date(newfile) ) // или version(somefile)<br> overwrite(somefile);<br> else<br>...<br>...<br> Хотя, ээ, это вроде можно .inf файлом задать как и uninstall |
Сообщ.
#9
,
|
|
|
+ инсталятор должен уметь помещать в реестр заданные ключи
|
Сообщ.
#10
,
|
|
|
А почему нас сюда передвинули? Нас надо в "Наши проекты" ;D
|
Сообщ.
#11
,
|
|
|
Куда передвинули? 8) Я во флейме и создал (сначала определиться, нужная это идея, или очередную чушь придумал;)...
2mods - давайте нас в Проекты:) Насчёт ключей - я не уверен, что это задача именно инсталлера. Так что убедите меня (в какой ситуации это может потребоваться:).. |
Сообщ.
#12
,
|
|
|
Цитата Shiru_Otaku, 20.03.03, 02:13:20 Так что убедите меня (в какой ситуации это может потребоваться:).. Поверь... При инсталле ставЮца дефолтовские настройки, прописываюЦа библиотеки/шрифты/еще что-нить... Так что без них ни-ни... |
Сообщ.
#13
,
|
|
|
ОК:)
Теперь о такой мелочи. Как лучше планировать инсталлер (тот, что депакер) - он сначала распаковывает из одного большого файла содержимое в темп, а потом переносит по местам согласно скрипту, либо что-то ещё? |
Сообщ.
#14
,
|
|
|
Предлагаю так: в "единственном" exe'шнике запаковываеться следующее:
1. Файлы программы 2. Собственно, инсталлер 3. Скрипты по установке программы При запуске во временную директорию распаковываються пункты 1 и 3, после чего запускается инсталлер, которому в параметре передаеться где искать "единственный" exe'шник. А уже инсталлер, выполняя скрипт, распаковывает из архива-exe'шника программные файлы. |
Сообщ.
#15
,
|
|
|
почему exe'шник должен быть единственным ?
|
Сообщ.
#16
,
|
|
|
Цитата Действительно. Это бы на много упростило коддинг! почему exe'шник должен быть единственным ? |
Сообщ.
#17
,
|
|
|
нет. дело не в этом... (я давно хотел написать собственный инсталлер. давайте придумаем нормальное обоснование тому - почему exe'шник долже быть один) насколько это удобно etc...
я сейчас предлагаю разработать концепцию внутреннего исполняемого скрита который позволял бы работать с типизироваными и нетипизироваными файлами скажем... etc |
Сообщ.
#18
,
|
|
|
Один ексешник - монно легко скачать из ИНета
|
Сообщ.
#19
,
|
|
|
Да, мои соображения основываются на мысли последнего поста (один exe не нужно дополнительно класть в какой-либо архив, чтобы выложить в инет).
2IX0DeS Начинай излагать свои идеи о скрипте:) |
Сообщ.
#20
,
|
|
|
Кстати, о хранении данных вместе с ехе-файлом. Я, честно говоря, не знаю, как их к нему присобачить:) Есть идеи, что: берём ехе депакера, берём все нужные нам файлы, собираем их в один большой файл (скажем, грузим в массив в памяти один за другим, потом записываем). Депакер знает, что сам он определённой длины. Делаем fseek на эту длину от начала файла-дистрибутива, и читаем оттуда (там можно разместить что-то типа каталога приаттаченных файлов, чтобы знать, что и по какому смещению лежит).
Но нет уверенности, что ОС, загружая такой ехе, не загрузит и лишние данные (те, что мы приклеили;)... Вобщем, скажите, если чушь спорол:) |
Сообщ.
#21
,
|
|
|
ага полную... ;D exe'шник под виндой можно создать хоть 4хГиговый ;D
суть в том что если будут несколько файлов то имхо это будет быстрее работать нежели чем с одним, другое дело если из осоновного екзешника извлекать файлы(файлы ессено хранить в ресурсах причем желательно чемнить упакованые) и только потом начинать что-то с ними делать. по поводу скрипта. думаю что надо сделать подобие некого языка (допустим C или Asm'а) в котором можно было бы исползовать условные конструкции(типа if..then..else),конструкции циклов etc. потом неплохо было бы реализовать в нем crypt-алгоритм скажем DES(не спрашивайте зачем... надо! ;D ) потом надо придумать какой архиватор использовать. Можно свой написать а можно скажем тот же zip юзать... вот так. |
Сообщ.
#22
,
|
|
|
Цитата Есть! ОС дойдет до команды выхода и на этом прекратит выполнение.Но нет уверенности, что ОС, загружая такой ехе, не загрузит и лишние данные А насчет тормозов при извлечении. Так во временную директорию, как я сказал выше, не обязательно извлекать файлы устанавливаемой программы. ЗЫ Имхо, легче использовать в качестве архиватора zip. |
Сообщ.
#23
,
|
|
|
Цитата Testudo, 21.03.03, 11:41:04 Есть! ОС дойдет до команды выхода и на этом прекратит выполнение. ... тут к сожалению или к счастью я не понимаю о чем говорят люди... Цитата А насчет тормозов при извлечении. Так во временную директорию, как я сказал выше, не обязательно извлекать файлы устанавливаемой программы. а что от этого изменится ? если в параметрах CreateFile будет стоят current directory или \%temp\% если мы будем использовать несколько файлов мы не будем тратить время на _извлечение_ как ты себе представляешь скажем инсталяху какойнить Need For Speed в виде одного файла ? Цитата ЗЫ Имхо, легче использовать в качестве архиватора zip. гм... тут уже стоит определится на чем писать потому как дело пахнет уже реализацией... зы да совсем забыл... я планирую писать инсталлер без gui |
Сообщ.
#24
,
|
|
|
Цитата Это как? Для работы из командной строки?я планирую писать инсталлер без gui Хотя, это не важно. Ведь такой инсталлер будет ядром для "графического"... ;D |
Сообщ.
#25
,
|
|
|
угу... в иделе оно так и задумывалось
engine + shell. вот engine я уже начал писать думаю через неделю другую фрмлю это все по уму |
Сообщ.
#26
,
|
|
|
Народ, вы чё паритесь?
Есть же InnoSetup, причём полностью свободный и с исходниками на Delphi. Создаёт 1 файл (чистый инсталлер весит менее 300кб). Жмёт в zip, bzip. Имеет свой скрипт. Если уж хочется поморочиться, начните изучать его исходники. Я полтора года пользую только инносетап. Есть и русские версии, включая сам IDE. Так что, чем тратить время на изобретение колеса, лучше начните делать нормальный визуальный генератор скриптов для InnoSetup, которого так я и не видел пока. Хотя и скрипт сам по себе не плох. Или плагинную систему для инносетапа, чтоб довешивать функциональность инсталлера за счёт самописных dll. |
Сообщ.
#27
,
|
|
|
знаем мы это дело.. фу какая бяка.... дельфи бррр....
ну ладно плагины - dll, разницы нет на чем писать... но копаться в делфёвых исходниках я не буду. тем более инсталлер называется Inno а не SourceRU... вот и не убивайте во мне изобретателя :P |
Сообщ.
#28
,
|
|
|
Цитата Ну прибило нас - че нельзя попариться? ;DНарод, вы чё паритесь? Так, люди! Два вопроса: 1. На чем писать будем? 2. Что у нас еще по концепции осталось невыясненного? |
Сообщ.
#29
,
|
|
|
Писать и определяться с языком определённо рано;) Нет ни полного понимания концепции, ни модели скрипта, ни ТЗ (без него дописать что-либо маловероятно:)..
Цитата (IX0DeS) другое дело если из осоновного екзешника извлекать файлы(файлы ессено хранить в ресурсах причем желательно чемнить упакованые) и только потом начинать что-то с ними делать. Ага. Извлекаем по одному, прямо в место, указанное скриптом;) Если упакованные - извлекаем по одному в temp, депачим в нужное место... Цитата (IX0DeS) думаю что надо сделать подобие некого языка (допустим C или Asm'а) в котором можно было бы исползовать условные конструкции(типа if..then..else),конструкции циклов etc. потом неплохо было бы реализовать в нем crypt-алгоритм скажем DES(не спрашивайте зачем... надо! Это излишне всё усложнит:) Скрипт лучше сделать предельно простым. Писать-же целый язык - это лишний гемморой, да и вес депакера станет не хуже InnoSetup;) Цитата (IX0DeS) потом надо придумать какой архиватор использовать. Можно свой написать а можно скажем тот же zip юзать... вот так. Свой - мало смысла. Он будет всё равно хуже существующих (писали, знаем;). Чужой - если знаешь удовлетворяющий следующим требованиям (или если zip подходит под них): - Free & Opensource - Малый размер кода депакера (очень малый) - Достаточная эффективность (не хуже ZIP) Тогда говори:) Цитата (Testudo) Есть! ОС дойдет до команды выхода и на этом прекратит выполнение. А не загрузится-ли в память лишняя байда? Если у нас ехе с приклеенными данными будет весить метров 300 - не загрузятся-ли все 300 метров в память? (я прое..терял книжку, где описано это дело:( )... Цитата (IX0DeS) как ты себе представляешь скажем инсталяху какойнить Need For Speed в виде одного файла А вот мы и подошли к одному из вопросов - основная сфера применения. Давно известно, что инсталлеры для программ с распостранением через сети и для программ на дисках сильно различаются:) Первые - состоят из одного файла; вторые - из кучи... Лично мне не нужно инсталлить программ размером с NFS;) Цитата (DJ_Karies) Есть же InnoSetup, причём полностью свободный и с исходниками на Delphi. Создаёт 1 файл (чистый инсталлер весит менее 300кб). Жмёт в zip, bzip. Имеет свой скрипт. Дельфи, 300 (!!!) кб ... В садъ... Если у меня прога, которую я хочу инсталлить, весит пусть даже метр - лишних 300к - это слишком. Юзеры не оценят;)) А потом, если подойти к вопросу так... Есть множество инсталлеров, но хочется свой, удовлетворяющий всем _своим_ требованиям:) |
Сообщ.
#30
,
|
|
|
Граждане, я вас слегка обманул с весом. 240 кб (v2.0.19 rus), а в раре 200 кб.
Есть nsis, винамповский. С исходниками на MSVC. У него есть свой мощный язык, может ещё подцеплять dll-ки. Выходной файл с гулькин нос. Альтернатива InnoSetup'у. Но инносетап - калька InstallShield'a по дизайну, а nsis - бог знает чего. Гляньте исходники обоих, меньше резины на форуме будет. 2Ix0DeS: паскалененавистник! Ур-р-р! Чё так стремаешься дельфей? Васика понятно ещё (сам ненавижу теперь), но дельфей... Ударим begin'ом по краткости кода! И причём здесь название инсталлера? Ты думаешь, юзеру не пофигу в чём ты клепал дистрибутив? |
Сообщ.
#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 |
Сообщ.
#46
,
|
|
|
2 Shiru_Otaku.
Дело, конечно, не мое, но глянь все-таки на http://nsis.sourceforge.net/ -- там и обретается то, о чем я писал в предыдущем топике... |
Сообщ.
#47
,
|
|
|
Гляну на днях (сунул в качалку, но там довольно тесно;)...
|
Сообщ.
#48
,
|
|
|
Отмылить? У меня... где-то в архивах оттеда свежачок был... Искать надо...
|
Сообщ.
#49
,
|
|
|
Мылить не надо:)
|
Сообщ.
#50
,
|
|
|
Уфффф... Утешил... Ноги аж заболели... ;D ;D ;D
Дык! Камень с души упал... Куда ж ему сердешному валиться? тока на ноги... ;D ;D ;D ;D 194 CD-ROM'а... Часть из них полностью в PGP... Базу себе под линух по сидюкам не сделаю -- времени нет... Спасибо, если какой кризис будет -- пиши приватом. Чем могу -- помогу. |
Сообщ.
#51
,
|
|
|
Я уже давно скачал, но руки никак не дойдут поглядеть:( Они сейчас вообще мало до чего доходят, ввиду глючного компа..
|
Сообщ.
#52
,
|
|
|
Так мы что, на свой инсталер уже забили? ???
|
Сообщ.
#53
,
|
|
|
Незнаю:) Я не забил, я пока забыл:) Но ещё вспомню;)...
Дело пока встало в решении вопроса: каким образом приписать к ехешнику наши данные, да таким образом, чтобы при его запуске грузилась только часть с собственно ехешником (для этого нужно вникнуть в pe формат)... |
Сообщ.
#54
,
|
|
|
Похоже всётаки заглохло ...
|
Сообщ.
#55
,
|
|
|
Да, можно так сказать.... У меня слишком много дел сейчас, на инсталлер меня не хватит уже 8) Как и на многое другое:(
|
Сообщ.
#56
,
|
|
|
Надо делать не инсталлеры, всякие, которых туева хуча, а то, что и полезно, и мало где реализовано.
А так ни на какие инсталлеры программеров не хватит. |
Сообщ.
#57
,
|
|
|
DJ_Karies, да ты богатей, да? Можешь себе позволить купить инсталлер для своей коммерческой программы? Если ты не видишь пользы - это не значит, что её нет;)..
|
Сообщ.
#58
,
|
|
|
Ну ладно, отложим тогда до лучших времен...
Может в летом смогу этим заняться |
Сообщ.
#59
,
|
|
|
Летом, может, и я подосвобожусь:)
|
Сообщ.
#60
,
|
|
|
И я, и я, и я!!!
И я того же мнени-я!!! До лета. А инсталлеров и фрёвых куча, не идеальные, но хватит для начала. Тот же инносетап. Я с ним полтора года рулю. :D |
Сообщ.
#61
,
|
|
|
Мдя...
Недавно и у меня возникла необходимость создания installera для собственной игрушки. Install Shield Express раздувает файл setup.exe до 4 mb!, когда архив, который я ему дал занимает всего полтора мегабайта. Вот решил пробежаться по темам... и тут. Я в данный момент этим и занимаюсь - делаю собственный инсталлер для своей игры Lines. Хотите позырить? Тогда вот, URL: http://www.azatrix.narod.ru/Downloads/Programming/Projects/Lines_setup.rar Инсталлятор пока еще не доконца доработан. Ярлыки не создаются, так что запускайте с c:\program files\azatrix lines... P.S. Просьба: не слишком стремать. ;D |
Сообщ.
#62
,
|
|
|
Аушки!
Просыпаемся! |
Сообщ.
#63
,
|
|
|
Я поддерживаю вашу идею, господа Master-а, но сам вам помочь ничем не могу! Совет: Добавьте в этот инсталлер возможность регистрирования OCX и DLL, шрифтов и чтобы умела в автозагрузку и на рабочий стол ярлыки добавлять. А вообще посмотрите программку CreateInstall - вещь ещё та, да и кряков валом. :)
|
Сообщ.
#64
,
|
|
|
Цитата nnn, 26.03.03, 09:46:47 Ну ты и сказанул!!! 8D2. Насчет склейки файлов- проблема... Дело в том, что Вынь не будет запускать файл с допиской в конце лишнего кода (PE - формат, однако). Под Вынь2000 все просто: есть ф-ии для работы с ресурсами, а вот Вынь 95-98 - я таких найти не смог... Поэтому, скорее всего, придется самим формировать заголовок PE- файла... Вроде как это дело хорошо описано у Румянцева... PE прекрасно запускается, если в конец что-то дописано. И ничего менять не надо. Можешь попробовать (кстати, для справки: WinRAR именно так и делает, просто дописывает в конец SFX-модуля архив). И ещё я не понимаю, зачем копировать архв в temp, а потом оттуда распаковывать, когда можно сразу из exe-шника распаковывать? И быстрее (т.к. нет дополнительного копирования), и места меньше требуется (лично у меня были проблемы именно с инстоллерами, которые в temp кидают). И ещё есть такая проблема. Предположим, я установил версию 1.0, а затем версию 2.0, но в другой каталог. Заметьте: log-файл версии 1.0 не изменился. Теперь я хочу удалить версию 1.0. Что же происходит? Вариант 1: dll-ки, которые были записаны в каталог Windows удалены, ключи реестра (но возможно не все) удалены. Вариант 2: dll-ки, которые были записаны в каталог Windows сохранены (т.к. их размеры и дата/время не совпадают с теми, что были установлены), ключи реестра (но возможно не все) также удалены. Но это ещё полбеды. Теперь я хочу удаить версию 2.0. Что же происходит сейчас? Вариант 1: все dll-ки удалены, все ключи удалены, ура!... вроде бы... т.к. если мы удалим, скажем, msvcrt.dll, то некоторые проги работать уже, увы, не будут. Вариант 2: из backup-копии восстановлены dll-ки версии 1.0, которые по сути никому не нужны, а это лишний мусор на диске. Вот как справиться с такой проблемой? Казалось бы, самый простой способ - это при инсталляции новой версии проверять ключи реестра на наличие старой версии (и также узнать каталог, где она установлена), но! Примерно такая же ситуация возможна и при инсталляции разных программ (но обновляющих одни и те же dll(!)). |
Сообщ.
#65
,
|
|
|
Есть отличный халявный инсталлер, Inno Setup прозывается. И исходники есть. Ищите Яндексом по названию и выкачивайте. Там даже есть доступ к CVS-репозитарию проекта
|