Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание самораспаковывающегося файла [D7, Win2k]


Санек ©   (2005-08-08 10:35:00) 

Добрый день!

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

Проблема в том, чтобы автоматизировать создание инсталяций, т.е. хотелось бы создавать *.exe файл автоматически (как это делают обычные инсталляторы или winrar например). В сети очень мало информации по этому вопросу, а если есть то на низком системном уровне, в чем я не очень силен. Изучение исходников InnoSetup никчему не привело уж очень много там всего лишненего.

Огромная просьба, может кто-то сталкивался с такой проблемой или знает где почитать, или есть чего в сорцах, черкните пожалуйста.

Заранее спасибо.


Slym   (2005-08-08 13:56:00) [1]

На основе обновление DrWeb
1. GUI приложение анализирует файл (Updates.txt)
Updates.txt - формата
+filename - добавить файл
-filename - удалить файл
!filename - выполнить файл
2. файл (например ZIP) с обновлениями и Файлом Updates.txt.

Как работает:
1. Прога распаковывает архив
2. Читается Updates.txt
3. Выполняются бействия из Updates.txt


dmitry501   (2005-08-08 12:54:00) [2]

Санек ©   (08.08.05 12:50) [11]
Ну дык, ты бы с самого начала простым языком написал, что нужно :)
<OFFTOP>Ладно, извини, рабочий день кончился, домой тороплюсь....</OFFTOP>


Санек   (2005-08-08 12:52:00) [3]

виде файлов - .dll .bpl + данные в БД


dmitry501   (2005-08-08 12:50:00) [4]

Классы в виде исходного кода? А язык - интерпретатор? Или в виде файлов - .dll .bpl и пр.?


Санек   (2005-08-08 12:50:00) [5]

В принципе можно делать так:

1. Создать GUI, скомпилировать в DCU
2. Создать ресурс, самой инсталляции
3. Компилить всё это с помощью DCC32.EXE


Санек   (2005-08-08 12:46:00) [6]

Это классы, сожержащие методы работы с данными и сами данные, данные храняться в БД. Чтение и запись данных объекта осуществляется через модуль, который поддерживает интерфейсы нескольких БД.


dmitry501   (2005-08-08 12:39:00) [7]

Так я и не понял вопрос. Если нужно просто объеденить GUI и ресурсы - http://delphiworld.narod.ru/base/save_and_load_resources.html
Интересно, что же такое "объекты программы" физически?


Санек   (2005-08-08 12:27:00) [8]

БД, может быть любая. История такая... В программе есть модуль, который умеет загружать/сохранять в БД объекты программы, модуль использует интерфейсы различных СУБД. Инсталляция компонентов (набор объектов) хотелось бы реализовать через этот модуль. GUI исталлятора будет взаимодействовать с этим модулем на уровне объектов программы + свои функции (выбор устанавливаемых компонентов, выбор баз данных). Инсталляция самой программы уже давно написана на InnoSetup, с вызовом фунций для создания серверных объектов. Как бы реализовать установку компонентов, вот вопрос??? В принципе если GUI и данные установки разные файлы, всё понятно. Если создание экзешника сложная вешь, то так и сделаю. Но всё же хотелось сделать "красиво".


dmitry501   (2005-08-08 12:11:00) [9]

Кхм... А БД какая? Во многих есть встроенные средства, которые делают эту задачу- ведь это миграция данных?
И это несколько не согласуется с [0]


Санек   (2005-08-08 12:04:00) [10]

Нет, наоброт ничего не нужно делать в системе... Нужно подключаться к БД и там выполнять кучу скриптов. Процесс апдейта сложный, поэтому хотелось писать его не на скриптах, а на Delphi.


dmitry501   (2005-08-08 11:58:00) [11]

А зачем один файл? Пусть будет два. Один постоянный, другой с апдейтами делают пользователи. Можно для этого сделать отдельную программу. Уже целый комплекс получается :)
Что значит "инструкции по инсталляции"? Нужно только копировать новые файлы, или еще что-то в реестр писать? В принципе, если все сложно, то не нужно изобретать велосипед с квадратными колесами, а использовать нормальный инсталлер с  развитым скриптовым языком, например [1].


Санек   (2005-08-08 11:08:00) [12]

Эт я понял, а можно ли как-то автоматически слепить в экзешник мой GUI и zip??? Скажем GUI инсталлятора не будет меняться, а данные zip будут сожержать и инструкции по инсталяции. Просто этих файлов инсталяции будет очень много и хотелось бы чтобы их могли делать человеки, которые и не подозревают, что есть такой замечательный продукт, как Delphi.

Насчет "Microsoft Installer", мне я понимая, это классная вещь, но всё что она позволяет, мне совершенно не нужно, не хоелось бы её использовать только для того, чтобы получать экзешник.


dmitry501   (2005-08-08 10:44:00) [13]

Санек ©   (08.08.05 10:35)
Компилируешь все свои компоненты в ресурсы (.res), потом пишешь небольльшой GUI инсталлятор. Собираешь это все в один .exe файл.
Или как более универсальный вариант. Все свои компоненты с сохранением структуры папок жмешь в zip, и пишешь GUI, который просто распаковывает этот zip. Если хочешь один файл, а не два, то zip файл компилируешь в ресурсы.


Anatoly Podgoretsky   (2005-08-08 10:43:00) [14]

Microsoft Installer


Наверх

Титульная страница Поиск, карта сайта Написать письмо