Хитрая инсталляция

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Хитрая инсталляция

Сообщение Sedge » 30.06.2004 (Ср) 13:36

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

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.06.2004 (Ср) 15:05

Что тут хитрого все просто реализуется. В чем проблема-то?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 30.06.2004 (Ср) 15:24

Хм. Ну ладно. Задача. Есть программа, которая должна запускаться автономно с CD-ROM-а. Программа написана на VB. Использует тучу компонентов (а именно 23 штуки) + само собой стандартный VB-шный набор библиотек. Все это добро надо закатать на машину пользователя. Каждый раз это делать нет желания. Возникла идея - устанавливать все только в первый раз, а дальше просто запускать проверку. Писать автономный экзешник на, допустим, Делфях, не желания - слишком наворочано все получается.

Собственно вот. Предложения принимаются.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.06.2004 (Ср) 15:33

Предложения элементарны - программа запущенная с сервера должна проверить наличие на жестком диске всех компонентов программы (exe, ocx, dll, hlp, lnk...) и если на нем версия младше чем на сервере то скопировать нужный файл (при необходимости зарегистрить ActiveX компонент). Проверить текущую версию MDAC - обновить если нужно... Если все корректно то стартануть основную программу.

Примерно так у меня уже давно работает.
Ма-а-аленькая такая утилитка (<50Kb)... :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 30.06.2004 (Ср) 15:37

И на чем написана программа в 50 кб?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.06.2004 (Ср) 15:39

На VB6
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 30.06.2004 (Ср) 15:41

А как библиотеки VB-шные подгружаются?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.06.2004 (Ср) 15:46

Они находятся в том-же каталоге где и утилитка - благодаря этому она может стартовать, проверить наличие на компьютере рантайма VB и при необходимости установить его.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 30.06.2004 (Ср) 15:54

Схема не подходит. Объясняю. Если на компьютере пользователя _уже_ установлена одна из необходимых библиотек (COMDLG32.OCX, OLEAUT32.DLL, OLEPRO32.DLL, ASYCFILT.DLL, COMCAT.DLL, и иже с ними) более ранней версии, получим красивую ошибку несовместимости версий. И никакие файлы в рабочем каталоге программы здесь не помогу, увы... Иначе все было бы слишком просто.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.06.2004 (Ср) 16:02

Все подходит - я же писал что библиотеки обновляются если на компьютере более старые.
Единственное что не проходило - если запускать на голой Win95 то утилита не шла из-за старой версии (OLEAUT32.DLL или OLEPRO32.DLL точно не помню из-за кагого из них). Под голой Win98 все шло без проблем. Потому 95-ю как экзотику решили не поддерживать (у нас и 98-х то нет, это я уже просто тестил).

Ну а всякие OCX-ы и пр. DLL-ки те вообще без проблем.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 30.06.2004 (Ср) 16:07

Что было раньше, яйцо или курица? ;) Для того, чтобы утилита, обновляющая библиотеки, запустилась, библиотеки уже должны быть обновлены. Или я чего-то недопонимаю?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.06.2004 (Ср) 16:10

Если VB Runtime library находятся в том же каталоге, что и программа, то она запуститься без проблем (вернее должна запуститься). Все прочие ActiveX Control/ActiveX DLL должны быть зарегистрированы до их использования (т.е. до тех пор, пока появится окно, содержащее указанные контролы или создасться объектная переменная указанного типа). Единственное, возможно будут глюки при раннем связывании. А возможно и не будут.
Lasciate ogni speranza, voi ch'entrate.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 30.06.2004 (Ср) 16:19

Немного сложнее. Если контрол или библиотека не были зарегистрированы в системе до запуска программы, их использующей, то они без проблем подымутся из рабочего каталога или из <win>\system32, при этом вполне корректно зарегистрируются в реестре, так что потом их сможет использовать любая программа. А вот если какая-то версия нужной библиотеки была установлена, винда в тупую пытается ее прилинковать, наплевав на то, что там болтается в каталоге программы, и жутко обижается, если версия не подходит.

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 30.06.2004 (Ср) 16:54

Чем не угодил старый добрый InstallShield?

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 30.06.2004 (Ср) 17:02

Он позвляет провести логическую проверку ключа в реестре перед началом инсталляции и, в зависимости от наличия этого ключа, либо начать инсталляцию, либо запустить произвольное приложение?
Последний раз редактировалось Sedge 30.06.2004 (Ср) 17:10, всего редактировалось 1 раз.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.06.2004 (Ср) 17:07

Утилита-то пользует только рантайм от VB, а он лежит с ней в одном каталоге. Я же говорю что проверял - проблема была только с голым Win95. А на Win95 уже можно и забить.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

BuilderSoft
Постоялец
Постоялец
 
Сообщения: 350
Зарегистрирован: 21.09.2002 (Сб) 10:13

Сообщение BuilderSoft » 30.06.2004 (Ср) 18:49

может проверить Regedit
Нет глупых,
Один узнал раньше других
אין א-אפשר

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 01.07.2004 (Чт) 8:20

InstallShield все это позволяет делать.
Кому не хватит вдруг (!?) развитых возможностей этого инсталлятора, то там есть и Basic-подобный язык программирования для точной настройки своего пакета инсталляции.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 01.07.2004 (Чт) 8:58

ISScript что ли? Так это же ANSI C в чистом виде :evil:
Моду создают модоки, а распространяют модозвоны.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 01.07.2004 (Чт) 9:11

InstallShield все это позволяет делать.


Thanks. Погоняем, попробуем :P

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 01.07.2004 (Чт) 9:21

hCORe писал(а):ISScript что ли? Так это же ANSI C в чистом виде :evil:

Ну вообще-то да, погорячился я с "Basic-подобным" 8)
Но тоже не сложный в освоении язык.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 01.07.2004 (Чт) 9:40

Да, достаточно легкий (если примеры есть и времени предостаточно) 8)
Моду создают модоки, а распространяют модозвоны.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 01.07.2004 (Чт) 10:28

Хе. Как водится, все решилось абсолютно другим способом 8) Скачал тут PEBundle 3.2 (www.collakesoftware.com) - то, что доктор прописал. Там есть чудненькая возможность - разворачивать в системный каталог с одновременной регистрацией компонентов. Правда запускаемся мы немножко дольше, чем положено, но дальше все бегает "на ура". А то, что при этом регистрируется туча библиотек и компонентов, пользователю знать не обязательно ;)

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 01.07.2004 (Чт) 11:49

Sedge писал(а):Хе. Как водится, все решилось абсолютно другим способом 8) Скачал тут PEBundle 3.2 (www.collakesoftware.com) - то, что доктор прописал. Там есть чудненькая возможность - разворачивать в системный каталог с одновременной регистрацией компонентов. Правда запускаемся мы немножко дольше, чем положено, но дальше все бегает "на ура". А то, что при этом регистрируется туча библиотек и компонентов, пользователю знать не обязательно ;)
Мелкий совет, в PEB добавлят тока то что мелкое, иначе обновлять тяжко.
Moderator VBStreets
---------------------------

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 02.07.2004 (Пт) 9:44

ASD писал(а):Мелкий совет, в PEB добавлят тока то что мелкое, иначе обновлять тяжко.

Кто и где под VB видел мелкие библиотеки? :wink:
Кстати, есть у меня небольшое подозрение, что под Win2k и выше эта программа будет требовать админских полномочий для запуска. Сегодня вечерком буду тестить...

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Хитрая инсталляция

Сообщение codemaster » 02.07.2004 (Пт) 10:56

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



пользуй NSIS

http://nsis.sourceforge.net/ там есть внутренний скриптовый язык
и все о чем ты мечтаешь там запросто можно реализовать


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList