Не устанавливается программа на VB6

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
afal
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2009 (Вт) 21:16

Не устанавливается программа на VB6

Сообщение afal » 27.01.2009 (Вт) 21:20

Дистрибутив был создан Package&Deployment Wizard. При установке на один компьютер все прошло благополучно и программа запустилась. На втором компьютере, на котором установлена та же ОС (Windows XP Prof), при инсталляции на 5 шаге копирования файлов, выскакивает ошибка, дословно следующего содержания:
«Setup cannot continue because some system files are out of date on your system. Click OK if your would like setup to update these files for you now. You will need to restart Windows before you can run setup. Click cancel to exit without updating system files.».
Не зависимо от нажатой кнопки мастер установки программы сворачивается, ни чего не обновляя. Думал может молча обновляет, перезагружаю компьютер - та же песня. Как определить какие файлы нужно обновить и какими версиями? Наверное, не только у меня такой казус? Как с этим бороться?
Кто пережил подобное поделитесь опытом.
Заранее благодарен.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Не устанавливается программа на VB6

Сообщение Хакер » 28.01.2009 (Ср) 0:05

Делюсь опытом: надо использовать нормальные инсталляторы. Например Install Shield.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

afal
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2009 (Вт) 21:16

Re: Не устанавливается программа на VB6

Сообщение afal » 28.01.2009 (Ср) 10:02

Спасибо!
Но я пробовал и этот путь, например, я создал инсталляционный пакет Inno Setup version 4.2.3. На первый взгляд все получилось очень компактно, я даже удивился. И устанавливалась программа нормально, правда, пробовал на компьютерах, где до этого был установлен VB6, а вот при установке на этот комп и запуске после установки идет ошибка времени выполнения, вот такая:
“Runtime error ‘713’
Application-defined or object-defined error”
И опять больше ни какой информации. Если бы это было только на одном компьютере, то можно бы было свалить все на него, но это же происходит и на других машинах. Что-то не так в системе, а вот что?

zusicks438
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 26.12.2008 (Пт) 20:16

Re: Не устанавливается программа на VB6

Сообщение zusicks438 » 28.01.2009 (Ср) 11:48

Вытащи из архива, который скомпилировал с помощью стандартного Package&че-то там Wizard ВСЕ библиотеки, ВСЕ файлы, которые есть в архиве и добавь их в ту же папку с твоим exeшником через InnoSetup. У меня все заработало.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Не устанавливается программа на VB6

Сообщение jangle » 28.01.2009 (Ср) 13:19

afal писал(а):“Runtime error ‘713’
Application-defined or object-defined error”
И опять больше ни какой информации. Если бы это было только на одном компьютере, то можно бы было свалить все на него, но это же происходит и на других машинах. Что-то не так в системе, а вот что?


Ты в InnoSetup не прописал регистрацию ActiveX компонентов, поэтому программа падает, вобщем изучай скрипты Inno и документацию по ним. Успех прийдет только с набранным опытом.

afal
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2009 (Вт) 21:16

Re: Не устанавливается программа на VB6

Сообщение afal » 28.01.2009 (Ср) 19:02

Так в чем все-таки может быть дело? Вот только сейчас, установил на отформатированный раздел ОС Windows ХР, не устанавливая даже драйверов - все что есть в самом Виндовсе. И тот установщик, который входит в саму среду разработки VB6, заработал, как вроде бы на родину попал:). И не надо ни каких сторонних упаковщиков. Значит дело именно в самой ОС, но везде операционки одинаковые Windows ХР Prof-SP2, почему не хочет обновлять системные файлы?
zusicks438 - а у тебя возможно такой же случай, попалась нормальная ОС вот и все установилось. Так оно должно установиться и Setup-ом Wizard-а VB-шного, как у меня в данном случае.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: Не устанавливается программа на VB6

Сообщение Saturn.65 » 28.01.2009 (Ср) 22:00

В InnoSetup пропиши нужные компоненты. Например:
Source: "RICHTX32.OCX"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile regserver
И все будет устанавливаться.
Главное, ребята, сердцем не стареть...

afal
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2009 (Вт) 21:16

Re: Не устанавливается программа на VB6

Сообщение afal » 29.01.2009 (Чт) 13:33

Saturn.65 писал(а):В InnoSetup пропиши нужные компоненты. Например:
Source: "RICHTX32.OCX"; DestDir: "{sys}"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace sharedfile regserver
И все будет устанавливаться.

Ну, во-первых, я не знаю какие компоненты нужны, а какие уже есть в системе, во-вторых, я совсем не знаю InnoSetup и, поэтому, я пользовался только мастером создания дистрибутива, полностью доверяя ему, что он сам найдет нужные компоненты, а уж если не найдет, то спросит и тогда я ему подскажу. Так что, это пока не мой уровень. Но zusicks438 оказался совершенно прав, созданный по его предложению дистрибутив, установился на «не послушном» компьютере моментально. Только вот размер дистрибутива оказался большим 12М, наверняка там много лишнего - того, что уже есть в самом Windows ХР. Вот как бы узнать, каких именно файлов не хватает для нормальной работы приложения и именно их засунуть в инсталляционный пакет, что бы размер его стал поменьше?
Спасибо всем за советы.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Re: Не устанавливается программа на VB6

Сообщение Saturn.65 » 29.01.2009 (Чт) 13:54

Я сперва делал стандартным, у которого что-то связано с разделением даты, поэтому он у нас и не работает. Там вроде надо / заменить на точки, точно не помню. Есть где-то на форуме исправленная версия. Но это не важно. Так вот он при создании setup находил нужные компоненты, а я их потом в Inno setup и прописывал.
Главное, ребята, сердцем не стареть...

afal
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 27.01.2009 (Вт) 21:16

Re: Не устанавливается программа на VB6

Сообщение afal » 29.01.2009 (Чт) 15:45

Я тут, в процессе поисков, раскопал один нюанс. У меня стандартный заработал нормально, но когда я выбирал местом сохранения дистрибутива, саму папку проекта. Естественно, там получается каша, да и размер дистрибутива возрастает в 4 раза по сравнению с Inno setup, но зато при установке вопросов не возникает. Если носить это дело на флэшке, то все равно, но если кому-то пересылать, то муторно.

XPAHuTEJIb
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 71
Зарегистрирован: 12.07.2006 (Ср) 15:04
Откуда: Новый Уренгой

Re: Не устанавливается программа на VB6

Сообщение XPAHuTEJIb » 31.01.2009 (Сб) 12:05

Не помню где взял.
Package & Deployment Wizard. Досадная ошибка.

С новой версией пакета Microsoft Visual Basic 6.0 поставляется Package & Deployment Wizard, предназначенный для создания инсталляционных пакетов на основе проекта Visual Basic.
В сравнении со своим хорошо известным предшественником - Setup Wizard, P&D Wizard предоставляет новую функциональность, но, к сожалению, новый инструмент содержит некоторые досадные ошибки.


Проблемы использования:
Итак, Вы решили создать с помощью P&D Wizard инсталляционный пакет типа "Standart Setup Package". Wizard отработал отлично и сгенерировал дистрибутив (setup.exe, setup.lst и один/несколько .cab-файлов), но при попытке запуска пользователем setup.exe из созданного Вами дистрибутива, выдается ошибка "Invalid line in setup information file!";. Если Вы сталкивались с подобной ситуацией, то, скорее всего, дело в следующем. Hа Вашем компьютере (там, где запускался P&D Wizard) настройки разделителей даты/времени отличаются от оригинальных американских ('/' - для даты, ':' - для времени). Hапомню, что данные настройки задаются в Control Panel/Regional Settings (Панель управления/Язык и стандарты).
Поскольку для России разделителем даты по умолчанию является точка ('.'), описанная проблема обнаруживается довольно быстро. Причина возникновения ошибки проста. При создании дистрибутива P&D Wizard генерирует текстовый файл setup.lst и сохраняет в нем информацию о дате и времени последней модификации распространяемых файлов. Дата и время сохраняются с учетом текущих системных разделителей. Программа установки setup.exe, запускаемая пользователем, выполняет разбор setup.lst и при этом ожидает, что дата сохранена в американском формате. Если формат даты не совпадает с ожидаемым, то возникает ошибка "Invalid line in setup information file!" и процесс установки завершается неудачно.


Варианты решения:

Для решения указанной проблемы можно предложить несколько вариантов: Перед запуском P&D Wizard изменить системные настройки (разделители) таким образом, чтобы Short date style имел вид "mm/dd/yy" или "mm/dd/yyyy"; запустить P&D Wizard для генерации дистрибутива; восстановить настройки в Regional Settings. Этот способ рекомендован Microsoft и описан в readme для VB (файл "[Program Files]\Microsoft Visual Studio\readmevb.htm") в разделе "Package and Deployment Wizard: Bad Date and Time Formats" После работы P&D Wizard отредактировать файл setup.lst вручную, заменив при этом даты, имеющие формат, не воспринимаемый программой setup1.exe, на требуемый ("mm/dd/yy" или "mm/dd/yyyy") Модифицировать исходный текст программы setup1.exe, перекомпилировать и подменить существующую версию на новую.
Остановимся на этом варианте подробнее. Модификация Setup1.exe Модуль setup1.exe входит в состав дистрибутива, генерируемого P&D Wizard, и выполняет процедуру установки программы на клиентскую машину в соответствии со сценарием, описанным в setup.lst. Исходные тексты setup1.exe поставляются вместе с Visual Basic и находятся в папке "[Program Files]\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1\". Для внесения изменений произведем следующие действия:

1.C помощью Microsoft Visual Basic откроем проект [Program Files]\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1\Setup1.vbp
2.Откроем для редактирования модуль basSetup1 (файл setup1.bas)
3.Внесем изменения в функцию ParseDateTime() Оригинальная функция ParseDateTime() имеет вид: Function ParseDateTime(ByVal strDateTime As String) As Date
Dim Var As Variant
Var = strDateTime
If 0 = VariantChangeTypeEx(VarPtr(Var), VarPtr(Var), &H409, 0, vbDate) Then
ParseDateTime = Var Else 'Raise same error as CDate
Err.Raise 13
End If
End Function


Функция ParseDateTime() производит перевод даты из строки в тип Date посредством вызова функции API VariantChangeTypeEx(). В данном случае, VariantChangeTypeEx делает попытку привести Variant-переменную к типу Date без учета установок в Regional Settings, и, соответственно, требует жесткого соблюдения формата записи даты в файле setup.lst ("mm/dd/yy" или "mm/dd/yyyy"). Поскольку P&D Wizard не придерживается этого правила, функция VariantChangeTypeEx() не всегда отрабатывает успешно.
Используем для преобразования строки в дату функцию СDate. Эта функция работает более гибко и позволяет использовать в качестве аргумента строку с различными видами разделителей (точка, запятая, '/'). Приведем функцию ParseDateTime() к виду:
Function ParseDateTime(ByVal strDateTime As String) As Date
ParseDateTime=CDate(strDateTime)
End Function

4.Скомпилируем проект (File\Make Setup1.exe…) для создания нового модуля setup1.exe. 5.Перенесем новый setup1.exe папку "...\Wizards\PDWizard\"
(именно отсюда он берется P&D Wizard'ом при создания дистрибутива). Теперь можно использовать P&D Wizard для создания дистрибутива на компьютере с разделителями даты/времени устанавливаемыми по умолчанию для России.

Заключение Предложенный вариант решения проблемы не дает стопроцентной гарантии того, что программа инсталляции будет корректно обрабатывать файл setup.lst на любой машине клиента (при создании дистрибутива в качестве разделителя может быть указан практически любой символ, например, '?'). Hо вероятность того, что разделитель отличается от '/' или точки очень мала, а функция CDate ведет себя достаточно интеллектуально и распознает практически любой разумный формат даты. Для полного устранения ошибки необходимо исправить код P&D Wizard, а сделать это может только Microsoft.

Автор исправлений: Климин Сергей


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

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

Сейчас этот форум просматривают: Google-бот и гости: 43

    TopList