Главная » 2009 » Ноябрь » 6 » Как заставить работать Package & Deployment Wizard в Visual Basic 6.0
08:31
Как заставить работать Package & Deployment Wizard в Visual Basic 6.0

Вы создали Ваш очередной работающий проект в системе VB6. Вы его
протестировали с пристрастием и произвели трансляцию проекта в исполняемый
*.exe файл. Но считать получившийся файл законченным Windows - приложением
еще рано! Да, он прекрасно работает на Вашем компьютере и так же здорово
работает на машине Вашего друга, у которого вы переписали VB6 (или он у
Вас?), но вот на машине Вашей наименее продвинутой в программировании
подружки *.exe файл не запускается. То ему .dll подавай, то .ocx, обидно,
тем более что и программа составлялась для нее, чтоб восхищалась, а
получается наоборот. Ситуация распространенная, но не безвыходная. Ведь у
нас теперь есть Package & Deployment Wizard, который поставляется с новой
версией пакета Microsoft Visual Basic 6.0 , предназначенный для создания
инсталляционных пакетов на основе проекта Visual Basic.
Итак, запускаем: Пуск > Программы > Microsoft Visual Basic 6.0 > Microsoft
Visual Basic 6.0 Tools > Package & Deployment Wizard. Или файл Pdcmdln.exe
из папки \VB98\Wizards\PDWizard\. Далее смело жмите кнопку Browse: и
выбирайте из стандартного диалога выбора файла Ваш проект, который должен
иметь расширение vbp. При этом выбранный проект должен быть хотя бы раз
скомпилирован в .exe файл, и этот файл должен находиться в том же месте, где
и сам проект. Затем, жмите кнопку Package, и на остальные запросы можно
смело жать Next, можно корректировать работу мастера в соответствии с Вашими
потребностями и его возможностями, что и будет Вам предложено на понятном
английском языке. Когда кнопка Next станет недоступна, придется нажать на
кнопку Finish, мастер недолго поработает, предложит отчитаться Вам о
проделанной работе, и если он больше не нужен, то его можно закрыть.
Пришло время посмотреть на плоды его работы. Открываем папку \VB98\Package\
, видим там еще одну папку \Support\ - вот они где, многочисленные dll, ocx,
которых так не хватает Вашей подружке! Можете смело ей их отправить на
компьютер, если знаете, что где должно лежать. А если не знаете? Тогда
пойдем другим путем.
Мы создали (при помощи Package & Deployment Wizard) инсталляционный пакет.
При чем все файлы программы упакованы в виде - один или несколько (в
зависимости от того, был указан предельный размер файла или нет) .cab-файлов
плюс файл setup.lst и собственно файла setup.exe, который по идее Microsoft
должен после запуска сам установить на компьютер пользователя Вашу
программу. И установит, если Вы при запуске Package & Deployment Wizard
использовали настройки разделителей даты/времени оригинальные американские,
т.е. '/' - для даты, ':' - для времени. Данные настройки задаются в Control
Panel/Regional Settings (Панель управления/Язык и стандарты).
А если при попытке запуска пользователем setup.exe из созданного Вами
дистрибутива, выдается ошибка примерно такого содержания: "Invalid line in
setup information file!", тогда вы нормальный Российский пользователь, у
которого, как известно, разделителем даты по умолчанию является точка ('.').
При создании дистрибутива Package & Deployment Wizard генерирует текстовый
файл setup.lst и сохраняет в нем информацию о дате и времени последней
модификации распространяемых файлов. Дата и время сохраняются с учетом
текущих системных разделителей. Программа установки setup.exe, запускаемая
пользователем, выполняет разбор setup.lst и при этом ожидает, что дата
сохранена в американском формате. Если формат даты не совпадает с ожидаемым,
то возникает ошибка "Invalid line in setup information file!" и процесс
установки Ваших файлов завершается неудачно (бедная Ваша подружка).
Есть несколько способов исправить положение. Один из них описан в файле
readmevb.htm, на примере с немецкой версией, но совет применим и к России.
Суть его такова - задайте в вышеуказанных настройках разделители
даты/времени оригинальные американские т.е. '/' - для даты, ':' - для
времени, запустите Package & Deployment Wizard,и после создания дистрибутива
верните настройки в исходное положение. Совет хорош для редкого
использования, и не для настоящего программиста VB6.
Следующее решение проблемы - файл setup.lst исправить ручками. Т.е. в
текстовом редакторе типа Notepad заменить наши (.) на ихние (/) во всех
датах. Совет хорош для уже созданных и даже отправленных на машины
пользователей инсталляционных пакетов, что бы не переделывать всю работу
заново, а исправить всего один файл.
И самый радикальный метод это переписать setup1.exe - именно этот файл и
использует setup.lst.
Исходные тексты setup1.exe поставляются вместе с Visual Basic и находятся в
папке \VB98\Wizards\PDWizard\Setup1\
Сделайте следующее:
- Запустите Microsoft Visual Basic 6.0
- Откройте проект Setup1.vbp (в папке \VB98\Wizards\PDWizard\Setup1\ )
- Откройте для редактирования модуль basSetup1 (файл setup1.bas)
- Внесите изменения в функцию 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
Используемую здесь API функцию VariantChangeTypeEx() надо заменить на
функциюCDate, которая используется для приведения строки в тип Date.
Перепишите функцию ParseDateTime() в виде:
Function ParseDateTime(ByVal strDateTime As String) As Date
ParseDateTime=CDate(strDateTime)
End Function
Получилось короче и эффективнее. Теперь заново скомпилируйте проект
Setup1.vbp и получившийся Setup1.exe перепишите в папку
\Wizards\PDWizard\,заменив старый файл. Все! Можете смело использовать
Package & Deployment Wizard для создания дистрибутива на Вашем
руссифицированном компьютере.
Категория: Программирование | Просмотров: 3125 | Добавил: admin | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]