Плиз помогите с Setup

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Плиз помогите с Setup

Сообщение SSecurity » 20.08.2003 (Ср) 5:13

Здравсвуйте коллеги!
У меня вопрос на миллион:
Стандартный Сетуп для программ на ВБ выдает ошибку при распаковке .... кто нить может сказать как можно её обойти или свой сетуп смастеить ...

/Он расспаковывает системные файл... а поттом .. их же удаляет, так как программа сетуп допустила ошибку в результате установки... /

Пожалуста кто может ....
Заранее спасибо
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 20.08.2003 (Ср) 11:54

И ещё ... там есть Wisard которым сетуп делается ... но он криво написан ... думаю стотит в нем кое что убить ...

У кого нить возникала такая проблема? :Э)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

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

Сообщение Sedge » 20.08.2003 (Ср) 15:01

Какая именно ошибка?

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 20.08.2003 (Ср) 18:50

Это распечатка файла "Setup.lst"

[Bootstrap]
SetupTitle=Install
SetupText=Copying Files, please stand by.
CabFile=CoolPics.CAB
Spawn=Setup1.exe
Uninstal=st6unst.exe
TmpDir=msftqws.pdw
Cabs=1

[Bootstrap Files]
File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,6.18.98 12:00:00 AM,102912,6.0.81.69
File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5.31.98 12:00:00 AM,22288,4.71.1460.1
File3=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,8.3.03 1:50:36 AM,16896,2.40.4518.0
File4=@ASYCFILT.DLL,$(WinSysPathSysFile),,,8.3.03 1:50:36 AM,188416,2.40.4518.0
File5=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,8.3.03 1:50:36 AM,229376,5.0.4518.0
File6=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,8.3.03 1:50:36 AM,929792,2.40.4518.0
File7=@MSVBVM60.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,6.25.98 12:00:00 AM,1409024,6.0.81.76

[IconGroups]
Group0=CoolPics
PrivateGroup0=True
Parent0=$(Programs)

[CoolPics]
Icon1="CoolPics.exe"
Title1=CoolPics
StartIn1=$(AppPath)

[Setup]
Title=CoolPics
DefaultDir=$(ProgramFiles)\CoolPics
AppExe=CoolPics.exe
AppToUninstall=CoolPics.exe

[Setup1 Files]
File1=@COMDLG32.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),6.24.98 12:00:00 AM,140096,6.0.81.69
File2=@CoolPics.exe,$(AppPath),,,8.20.03 7:41:56 PM,28672,1.0.0.0



А вот диалоговое окно :
"Invalid Line in Setup information"
Section Setup1 Files
@COMDLG32.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),6.24

кнопка ОК (без вариантов)

жмем на неё ... и [Имя проекта] was not complite successfully
кнопка ОК (без вариантов)

жмем...а далее ."Ситуп типа не сработал и всё теперь что поставили автоматически грохнется..."
кнопка ОК (без вариантов)

и усёёё....
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

STING
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 19.06.2003 (Чт) 17:20

Сообщение STING » 20.08.2003 (Ср) 19:18

С новой версией пакета 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.

moderator
Модератор
Модератор
 
Сообщения: 1896
Зарегистрирован: 10.12.2001 (Пн) 18:11
Откуда: Украина, Харьков

Сообщение moderator » 20.08.2003 (Ср) 21:54

Тема закрыта.
Модератор
http://www.vbstreets.ru / moderator@vbstreets.ru

... Почетные награды: [*], [+], [!]. Все еще впереди...


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

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

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 93

    TopList