Если вы уже научились создавать приложения в Microsoft Access, то рано или поздно у вас возникнет потребность их распространять — возможно, только внутри своей фирмы, а возможно, и на рынке. Возникающие проблемы и пути их решения в обоих случаях будут одними и теми же.

Какой же путь избрать для передачи своего приложения в чужие руки? Если просто переписать на дискету файл базы данных и файл рабочих групп, то с приложением смогут работать только обладатели соответствующей версии Access. Можно воспользоваться специальной программой-инсталлятором, но тогда нужно будет знать, какие библиотеки Access подключаются к вашему приложению, как следует регистрировать приложения Access в Windows и многое другое.

К счастью, корпорация Microsoft разработала для каждой версии Access специальный пакет программ Access Developer?s Toolkit (ADT), позволяющий создавать дистрибутивный комплект, — правда, это самостоятельный продукт, распространяемый за отдельную плату. Для версий 2.0 и 7.0 он называется Access 2.0 SDK и Access 7.0 SDK соответственно, а для Access 97 входит в комплект ODE Tools как дополнение для разработчиков.

Эти пакеты очень похожи, так что, научившись работать с одним, вы без особого труда освоите и другие. Во все три входит специальная утилита-мастер для создания дистрибутивных комплектов, с помощью которой можно изменить ее собственный код, а значит, и будущую программу установки. (Мастер, кстати, работает под управлением соответствующей версии Access, поэтому ADT следует устанавливать после Access.) Все они содержат также исполняемую версию Microsoft Graph, необходимые библиотеки, шаблон программы Microsoft Setup, дополнительные объекты Microsoft Access и компилятор справочных (hlp) файлов (Access 2.0 SDK — для Windows 3.x, два других — для Windows 95/NT 4.0).

«Русский вопрос»

К сожалению, пакеты ADT не содержат русскоязычного компонента, и если при написании базы данных использовалась русская версия Access, то при создании дистрибутивного комплекта иногда возникают проблемы. Шаблон программы Setup также английский, однако при желании и определенных навыках его вполне можно «научить» русскому языку.

В версиях 2.0—7.0 можно не беспокоиться о совместимости кода с англоязычной версией SDK, однако не исключено, что в установленной на компьютере версии Windows не окажется необходимых библиотек. Тогда их следует взять из англоязычной версии Access (для 2.0 и 7.0) или из Microsoft Office 7.0 Professional (только для 7.0). Вот перечень соответствующих файлов:

mso5enu.dll, mso5rus.dll, mso95.dll, openenu.dll, openrus.dll, vaen232.dll, varu232.dll, vbaen32.dll, ven2232.olb.

Поместите библиотечные файлы в каталог System папки Windows и обязательно включите их в число файлов распространяемого приложения. Если Мастеру дистрибутивов при работе понадобится еще какая-либо библиотека, он выдаст соответствующий запрос. Правда, списка недостающих библиотек Мастер не строит, поэтому придется следить за процессом создания дистрибутива и вручную записывать имена библиотек.

В случае же версии 97 нередки ситуации, когда русскоязычное приложение не работает с англоязычной версией Access и наоборот: дело в том, что в локализованной и оригинальной версиях различаются имена некоторых свойств и методов. Так что приложение, которое предполагается распространять, желательно создавать в англоязычной версии Access. Заметим, что, несмотря на проблемы с совместимостью, версия 97 предпочтительнее для распространения, чем версии 2.0—7.0, поскольку она позволяет не передавать сторонним пользователям исходные тексты программ.

Требования к программе

В случае Access 2.0 в дистрибутивный комплект включается усеченная так называемая run-time версия СУБД, а в случае Access 7.0 и 97, не имеющих отдельной run-time версии, приложение должно запускаться с ключом /run-time. Это накладывает на программу определенные ограничения, например, во время ее выполнения не разрешается изменять код и переводить или открывать объекты в режиме конструктора. Данный режим просто отсутствует: нельзя увидеть окно базы данных, присоединить новую таблицу (не программным путем), изменить схему данных, заблокировать выполнение макросов AutoExec и AutoKeys и т. д.

Таким образом, приложение становится по сути закрытым для пользователя. Однако сохраняется возможность (естественно, при наличии соответствующих прав) открыть mdb-файл непосредственно из Access и исправить то, что нужно.

Если вы создали приложение с разделенной базой, вас ожидают дополнительные сложности. К сожалению, Мастер дистрибутивов допускает только три варианта установки компонентов приложения: либо в папку по умолчанию (при инсталляции приложения пользователь может задать свою), либо в папку системы Windows, либо в папку System, вложенную в нее. Mdb-файл (только один!) считается главной программой приложения и может быть установлен лишь в одну из этих папок.

Возможное решение: установить файл с таблицами в папку с приложением, при первом запуске приложения поискать там этот файл и в случае успеха предложить пользователю перенести его в нужное место, а затем обновить связи для нового местонахождения. Если в соответствующей папке будет обнаружен файл с таким же именем, можно предложить пользователю на выбор либо заменить его, либо оставить старый, а новый удалить.

Необходимо полностью задействовать систему защиты Access (пароли, шифрование, защита на уровне пользователя, свойства AllowBypassKey, AllowBreakIntoCode и т. д.) и предусмотреть возможность изменения паролей для базы с таблицами (если база данных разделенная) и базы пользователя.

Приложение, предназначенное для распространения, должно быть снабжено интерактивной справкой, иметь собственную заставку и пиктограммы для различных режимов. Кроме того, его, разумеется, следует тщательно протестировать.

Если все перечисленные условия выполнены, можно приступать к созданию дистрибутивного комплекта.

Создание дистрибутивного комплекта

Создание дистрибутивного комплекта мы рассмотрим на примере пакета ADT для Access 7.0, занимающего промежуточное положение между 2.0 и 97.

Установка ADT практически такая же, как у любой другой программы Microsoft. По ее завершении в меню «Пуск» появляется новая группа под названием Microsoft ADT, содержащая следующие элементы:

  • Microsoft Help Workshop — средство создания файлов интерактивной справки (hlp-файлов);
  • Microsoft ADT Setup — программа для установки самого ADT;
  • Microsoft Replication Manager — удобное приложение для создания и синхронизации реплик баз данных Access;
  • Setup Wizard — мастер создания дистрибутивных комплектов;
  • Win32 API Viewer — средство включения в приложение деклараций API-функций; к сожалению, оно не устанавливает связей между функциями и необходимыми для них переменными.

Подготовка

Создайте новый каталог и поместите в него копии базы данных, а также нужных библиотек и файлов. Запустите программу Setup Wizard — Мастер дистрибутивов.

Рис.1. Поскольку у вас еще нет ни одного файла шаблона, нужно создать новый

В первом окне Мастера (рис. 1) вам будет предложено создать новый файл шаблона или выбрать имеющийся (расширение mdt). Так как у вас еще нет шаблонов, выберите создание нового и нажмите кнопку Next.

Файлы и компоненты

В следующем окне (рис. 2) вы указываете, какие файлы нужно включить в дистрибутивный комплект. Обычно в него включаются:

Рис. 2. Укажите файлы, которые нужно включить в дистрибутивный комплект
  • файл базы данных (mdb или mda);
  • файл рабочих групп (mdw);
  • второй файл mdb или mda (в случае разделенных баз);
  • файлы пиктограмм (ico) и растровой графики (bmp);
  • справочные файлы (hlp);
  • текстовые файлы типа readme;
  • дополнительные файлы и файлы библиотек.

Добавить файл очень просто — достаточно нажать кнопку Add и выбрать нужный. Если вы, как рекомендовалось, скопировали все файлы для дистрибутива в отдельный каталог, вам не придется искать их по всему диску. Копирование поможет также избежать ошибок, вызванных тем, что включаемый файл во время работы Мастера используется самой программой Access.

Чтобы удалить файл из списка Мастера, выделите его и нажмите кнопку Delete. Помните, что вместе с файлом удаляются и все связанные с ним установки (сделанные, например, в предыдущих сеансах работы с Мастером).

Для каждого из добавляемых файлов указывается папка, в которую его следует установить (Destination Folder). Допустимые значения для этого параметра следующие:

  • $(AppPath) — папка, куда будет помещено приложение; это переменная, во время установки приложения вместо нее будет подставлен либо путь по умолчанию, либо путь, заданный пользователем;
  • $(AppPath)имя_подкаталога — подкаталог папки приложения (имя_ подкаталога задается разработчиком);
  • $(WinPath) — папка, в которой установлена система Windows;
  • $(WinSysPath) — папка System (вложенная в папку Windows).

Для файла базы данных, содержащего программы, установите флажок Set As Application?s Main File, для файла рабочих групп — флажок Set As Workgroup File.

Флажок Compress File задает сжатие файлов при создании дистрибутивного комплекта; это позволяет уменьшить число необходимых дискет. Флажок Include File On First Disk указывает, что файл требуется по возможности поместить на первую дискету дистрибутива.

Список Overwrite Existing File позволяет выбрать, что делать с файлами, уже имеющимися в системе пользователя, если в вашем дистрибутивном комплекте есть файлы с такими же названиями. Возможны три варианта:

  • always — имеющийся файл всегда заменяется файлом из дистрибутивного комплекта;
  • never — замена не производится никогда; файл из дистрибутивного комплекта копируется на пользовательский диск только при условии, что в месте установки нет файла с таким же именем;
  • older — файл на пользовательском диске подлежит замене, если он более ранний, чем содержащийся в дистрибутивном комплекте.

По умолчанию все файлы включаются в компонент Application. Чтобы добавить к дистрибутиву компонент, которого нет в списке Component Name, нажмите находящуюся рядом со списком кнопку и в открывшемся окне построителя компонентов (рис. 3) задайте свойства нового компонента, после чего щелкните по кнопке OK.

Рис. 3. Чтобы добавить к дистрибутиву новый компонент, воспользуйтесь построителем компонентов

Если вы создавали приложение в локализованной версии Access 7.0, внесите в список файлов библиотеки, перечисленные в начале статьи, предварительно скопировав их в отдельный каталог. Соответствующие библиотеки существуют и для Access 97.

Ярлыки

Включив в дистрибутив все необходимые файлы, нажмите кнопку Next и перейдите к следующему окну Мастера дистрибутивов.

Рис. 4. Чтобы пользователь мог открыть приложение, необходимо описать ярлыки, с помощью которых он будет это делать

В этом окне (рис. 4) описываются ярлыки Windows, которые ваша программа Setup будет создавать на пользовательских компьютерах при установке приложения. Необходимо описать хотя бы один ярлык — для открытия приложения.

Чтобы создать ярлык, нажмите кнопку Add, введите в поле Description подпись и задайте в комбинированном списке File To Open имя файла. Если это будет файл базы данных, то в поле Command Line автоматически появится строка запуска Access. Кнопки Database Shortcut Action Options позволяют уточнить, что нужно сделать с файлом; допустимые варианты — открыть, сжать, сжать и восстановить. Соответствующие ключи вставляются в поле Command Line автоматически. В списке Icon File укажите пиктограмму для каждого из ярлыков.

С помощью флажков группы Database Command-Line Options можно добавлять ключи к командной строке ярлыка. Флажок Workgroup привязывает приложение к выбранному на предыдущем шаге файлу рабочих групп для обеспечения защиты базы данных. Флажок Profile указывает, что настройки для выполнения приложения должны браться из конфигурации, записанной в Реестре Windows; соответствующий ключ сигнализирует только о включении этого режима, а сама информация вносится в Реестр на следующем шаге.

Можно написать командную строку и самостоятельно; чтобы получить доступ в поле Command Line, установите переключатель Command-Line Style в положение Specify My Own Custom Command Line.

Ключи Реестра

Закончив описание ярлыков, вы переходите к подготовке ключей для Реестра Windows (рис. 5). Сколько и каких именно ключей задать, зависит от приложения. Обратите внимание на то, что для приложений, работающих в run-time режиме, к пути ключа добавляется подстрока RunTime Options.

Рис. 5. Задайте ключи, которые нужно будет внести в Реестр при установке приложения

В качестве ключа, определяющего приложение (поле Top-Level for Key), целесообразно указать HKEY_LOCAL _MACHINE. Тогда запускать приложение смогут все пользователи того компьютера, на котором оно будет установлено.

Формат пути (поле Path to Key) для всех ваших ключей таков: SOFTWAREНазвание_вашей_фирмыНазвание_ приложенияВерсия_ приложенияRuntime Options

Например, для регистрации справочного файла приложения «Лес и трава 2.1» фирмы «Алиса» потребуется задать путь SoftwareАлисаЛес и трава2.1Run-time Options. В поле Value Name вы должны будете указать имя параметра — в данном случае AppHelpFile, — а в поле Base Value Data On File — имя самого справочного файла, который вы ранее включили в список файлов дистрибутива.

Мастер самостоятельно определит тип данных параметра (в данном случае — строковый) и установит в соответствующее положение переключатель Value Data Type, а также вставит значение в поле Value Data. Автоматически будет определено и имя компонента инсталляции.

Для регистрации заставки, которая станет появляться на экране при запуске приложения, создается (с тем же путем) параметр StartupScreen, значением которого служит имя нужного bmp-файла, для регистрации пиктограммы — параметр Icon с именем ico-файла в качестве значения.

Чтобы зарегистрировать название приложения, создайте параметр TitleBar, выберите в списке Base Value Data On File значение (none), установите переключатель Value Data Type в положение String и введите в поле Value Data нужное название (Лес и трава). В списке Component Name выберите Application.

Если приложение использует драйверы ISAM, экспортирует данные в другие программы Office и т.п., необходимо зарегистрировать используемые форматы обмена. Значения соответствующих параметров можно скопировать из Реестра своей машины. Путь к ним в случае Access 7.0 имеет следующий вид:

SOFTWAREНазвание_фирмыНазвание_приложения Версия_приложенияJet3.0ISAM FormatsRich Text Format

Например: Software АлисаЛес и трава2.1Jet 3.0ISAM FormatsRich Text Format

Для Microsoft Access 97 определите версию Jet по своему Реестру.

Подробнее о назначении ключей Реестра можно узнать из справки ADT, нажав кнопку Help в соответствующем окне, или из другой литературы.

Введя все необходимые ключи, нажмите кнопку Next.

Компоненты

Следующее окно позволяет задать компоненты Access, включаемые в дистрибутивный комплект (рис. 6). В нем вам предлагается список доступных компонентов; те, которые войдут в дистрибутив, помечены символом «х». Чтобы добавить или удалить какой-либо компонент, достаточно щелкнуть мышью в соответствующей строчке, но не забывайте, что каждый добавляемый компонент нужно зарегистрировать в Реестре Windows.

Рис. 6. Укажите, какие компоненты Access должны быть включены в дистрибутивный комплект

Необходимо знать, что список в окне не всегда является полным. Его состав зависит от того, какие компоненты установлены на вашем компьютере, какие ключи вы определили, задан ли режим Run-time, и от других факторов.

Если вас все устраивает, переходите к следующему окну, где определяется тип установки каждого компонента (рис. 7). Различных типов предусмотрено три: типичная установка, компактная и выборочная.

Рис. 7. Задайте для каждого компонента те типы установки, в которых он должен присутствовать

То, в каких типах установки будет появляться компонент, задается в поле Installed In Installation Types. Чтобы не показывать компонент в программе установки, сбросьте для него флажок Display In Component List. Однако хотя бы один компонент должен быть виден (тогда Мастер создаст программу установки с одной кнопкой «Установить»).

Если компонент должен присутствовать во всех случаях, включите для него флажок Require For All Installations. Тогда при попытке отказа от его установки пользователю будет выдано соответствующее сообщение.

Сделав необходимую настройку, нажмите кнопку Next.

Последние штрихи

В следующем окне (рис. 8) требуется в обязательном порядке ввести некоторые сведения о приложении, а именно:

Рис. 8. Дайте сведения о приложении: название, номер версии, кем разработано, куда должно устанавливаться по умолчанию
  • его название (то же, что в пути реестрового ключа);
  • номер версии (тот же, что в пути ключа и справочном файле);
  • название организации-разработчика (то же, что в пути реестрового ключа).

Оставшиеся два поля определяют папку, в которую программа Setup (предварительно создав ее) будет по умолчанию устанавливать приложение. В первом поле задается путь к этой папке для случая, когда разрешены длинные имена файлов, во втором — для случая, когда допускаются только короткие («досовские») имена. Лучше ввести в обоих полях одинаковые пути, используя имена, удовлетворяющие ограничениям DOS.

В следующем окне определяется приложение или файл, запускаемый (если это требуется) по завершении установки. Для файлов и приложений, включенных в шаблон Мастера, командная строка автоматически подставляется в соответствующее поле. Чтобы запустить программу или открыть текстовый файл, о котором вам точно известно, что он есть на компьютере пользователя, введите команду вручную, заключив ее в кавычки.

Нажав кнопку Next, вы попадете в последнее окно Мастера (рис. 9), служащее для определения типа дистрибутивного комплекта: на дискетах 1,44 Мбайт, в одной папке (для сетевой установки), в одной папке в сжатом виде.

Рис. 9. Последний шаг — задание типа дистрибутива и папки для его размещения

Здесь же вы указываете Мастеру папку для размещения вновь созданного дистрибутивного комплекта (в случае дистрибутива на дискетах образ каждой дискеты помещается в отдельный подкаталог этой папки). Если вам не нужно хранить сжатые копии файлов, снимите флажок Store Compressed Files.

Теперь подготовка завершена. Нажмите кнопку Finish. Мастер предложит вам сохранить введенные данные в виде шаблона — не пренебрегайте этим: для получения правильно работающего комплекта вам, вероятно, потребуется несколько попыток.

Затем программа перейдет к собственно формированию дистрибутивного комплекта. Продолжительность этой процедуры зависит от числа компонентов и производительности компьютера; в среднем она занимает несколько минут. Во время создания комплекта внимательно следите за появляющимися сообщениями: они могут содержать имена недостающих библиотек. В ответ на сообщение о том, что и вы, и Мастер включили в комплект одну и ту же библиотеку, просто нажмите OK: к ошибке работы приложения это не приведет.

По окончании работы Мастер выдаст соответствующее сообщение.

Скопируйте файлы из папки на дискеты и снимите с них атрибут «только для чтения».

К сожалению, возможности у Мастера дистрибутивов довольно ограниченные, но все же построенный с его помощью дистрибутивный комплект позволяет правильно установить приложение (так, что оно будет удаляться с компьютера стандартным для Windows способом).

В заключение отметим, что Мастер сам является приложением Access и его можно самостоятельно расширить, внеся дополнения или изменения в соответствующую программу (для Microsoft Access 7.0 она находится в файле Wzstp70.mdb).

Об авторе

Андрей Григорьевич Драпеко, e-mail:dagl@lvs.tc.svo.cbr.ru.