Проблема с созданием инсталиационного пакета

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

Проблема с созданием инсталиационного пакета

Сообщение Khachkara » 03.05.2009 (Вс) 22:29

Пытаюсь создать инсталиационный пакет с помощью Package & Deployment Wizard, не получается ничего, вернее получается но в итоге не инсталируется программа.
Не могу понять где делаю не так.
Я новичок в VB, к тому же еще самоучка, прошу сильно не ругать.

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

Re: Проблема с созданием инсталиационного пакета

Сообщение jangle » 03.05.2009 (Вс) 22:35

Khachkara писал(а):Пытаюсь создать инсталиационный пакет с помощью Package & Deployment Wizard, не получается ничего, вернее получается но в итоге не инсталируется программа.
Не могу понять где делаю не так.


А остальные разве могут это понять? Ты так подробно описал свою проблему...

Khachkara
Выключатель
Выключатель
Аватара пользователя
 
Сообщения: 65
Зарегистрирован: 06.04.2009 (Пн) 9:31

Re: Проблема с созданием инсталиационного пакета

Сообщение Khachkara » 03.05.2009 (Вс) 22:38

создал программку хочу создать инсталиационный пакет, не получаеться

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Проблема с созданием инсталиационного пакета

Сообщение iGrok » 03.05.2009 (Вс) 23:23

Khachkara писал(а):создал программку хочу создать инсталиационный пакет, не получаеться

От этого понятнее не стало.

Если ты хочешь, чтобы тебе отвечали так же, как ты спрашиваешь, то ответ будет: "Не знаю, у меня всё создаётся, работает и устанавливается".

Пиши подробнее, что значит "но в итоге не инсталируется программа.".
label:
cli
jmp label

Khachkara
Выключатель
Выключатель
Аватара пользователя
 
Сообщения: 65
Зарегистрирован: 06.04.2009 (Пн) 9:31

Re: Проблема с созданием инсталиационного пакета

Сообщение Khachkara » 03.05.2009 (Вс) 23:36

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.

P.S. В дополнение к сказанному остается добавить, что все исправления в sertup1.exe внесены, заодно русифицированны ресурсы, входящие в этот файл. Так что скачивайте, и наслождайтесь (исходники входят в архив).
Я новичок в VB, к тому же еще самоучка, прошу сильно не ругать.

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

Re: Проблема с созданием инсталиационного пакета

Сообщение Andrey Fedorov » 04.05.2009 (Пн) 0:23

Khachkara писал(а):P.S. В дополнение к сказанному остается добавить...


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


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

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

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

    TopList  
cron