Главная » 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 для создания дистрибутива на Вашем руссифицированном компьютере. |
|
Всего комментариев: 0 | |