Проблемы с созданием setup'a

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Проблемы с созданием setup'a

Сообщение CORBA » 20.12.2005 (Вт) 1:27

Пакет создался. Но при попытке установки, после нажатия на большую квадратную кнопку выкидывает
Error Line 1 in section Setup1
@MSCOMCTL.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),6.6.02 9:13:00 AM,1077344,6.1.95.45

Может мне нужно где то пути указать?
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 20.12.2005 (Вт) 1:42

В поиск по форуму.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 26.12.2005 (Пн) 17:53

Если делалось с помощью PWD Wizard, откорректируй все даты в соответствии с американским стандартом, т.е. через слэш.

usk
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 26.12.2005 (Пн) 20:22
Откуда: Украина, Краснодон

Сообщение usk » 27.12.2005 (Вт) 0:11

Package & Deployment Wizard. Досадная ошибка.
Автор: Климин Сергей
http://r.codenet.ru/?http://www.vbrussian.com/
С новой версией пакета 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\". Для внесения изменений произведем следующие действия:

C помощью Microsoft Visual Basic откроем проект [Program Files]\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1\Setup1.vbp
Откроем для редактирования модуль basSetup1 (файл setup1.bas)
Внесем изменения в функцию 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.

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

Сообщение Andrey Fedorov » 27.12.2005 (Вт) 9:46

Alexanbar писал(а):Если делалось с помощью PWD Wizard, откорректируй все даты в соответствии с американским стандартом, т.е. через слэш.


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


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

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

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

    TopList