Установка и запуск готового EXE

HomeFAQЧасто задаваемые вопросыУстановка и запуск готового EXE
Как перенести готовое приложение на машину клиента

Вопрос

Я написал (а) приложение на FoxPro и создал (а) исполняемый файл EXE. Однако при попытке запуска на машине клиента я получаю сообщение о том, что нет каких-то библиотек. Какие библиотеки он требует? Как правильно установить готовое приложение на машине клиента?

Ответ

Готовое приложение Visual FoxPro для своей работы требует несколько библиотек поддержки. О некоторых из них, Вы можете узнать непосредственно в HELP для Visual FoxPro в разделе с названием

Visual FoxPro Run-Time Libraries

Откройте HELP для Visual FoxPro и введите название раздела в кавычках в окно поиска. В этой статье приводится список некоторых библиотек. Более того, не все, приведенные в этом разделе библиотеки действительно нужно переносить на машину клиента.

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

До версии Visual FoxPro 6 включительно, для создания дистрибутивов использовался встроенный инструмент. Пункт главного меню Tools - Wizards - Setup. Однако, начиная с версии Visual FoxPro 7, используется внешняя программа, под названием "InstallShield". Эта программа (точнее, ее усеченная версия "Express") поставляется вместе с FoxPro на том же диске.

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

Также почитайте статью на данном сайте:

Как сделать exe файл

В качестве программы для создания инсталляционных пакетов (дистрибутивов) хорошо зарекомендовала себя программа InnoSetup. Вы можете скачать его с данного сайта из раздела "Файловый архив", подраздел "Installer"

Если все-таки решили переносить приложение путем копирования файлов, то список необходимых библиотек и куда их надо класть можно посмотреть здесь

VFP 7 Runtime Files
VFP 8 Runtime Files
VFP 9 Runtime Files

ОКНО FOXPRO МЕЛЬКАЕТ НА ЭКРАНЕ И ТУТ ЖЕ ЗАКРЫВАЕТСЯ

Проблема

При отладке приложения все в порядке. А когда запускаю готовый файл EXE, мое приложение мелькает на экране и тут же закрывается.

Причина

Скорее всего, Вы забыли сформировать режим ожидания событий, инициированных пользователем. Проще говоря, не указали программе, где она должна остановиться и подождать реакции пользователя. На этапе отладки приложения такой "точкой останова" является ранее запущенная среда FoxPro. Но в готовом приложении этого нет.

Решение
Необходимо сформировать режим ожидания событий, инициированных пользователем. Штатным средством для этого является команда

READ EVENTS

Более подробно этот вопрос рассматривается в статье:

Главный (стартовый) файл проекта

НЕ МОГУ ВЫЙТИ ИЗ FOXPRO. ЗАКРЫТЬ ПРИЛОЖЕНИЕ

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

Cann't quit Visual FoxPro

Или, в старших версиях без сокращений

Can not quit Visual FoxPro

Также возможна ситуация, когда приложение FoxPro закрывается, но остается "висеть" в списке запущенных процессов. Т.е. его не видно на панели задач, но можно увидеть в списке процессов (Ctrl+Shift+Esc, закладка "Процессы")

Причина

Скорее всего, Вы забыли прервать режим ожидания событий инициированных пользователем. Т.е. отменить действие команды READ EVENTS

Решение

Перед закрытием приложения надо дать команду

CLEAR EVENTS

Если закрытие приложения происходит по нажатию "крестика" в правом верхнем углу основного окна FoxPro, то это событие перехватывается настройкой

ON SHUTDOWN

Более подробно этот вопрос рассматривается в статье:

Главный (стартовый) файл проекта

Не могу изменить содержимое рабочих таблиц

ПроблемаПри отладке приложения все нормально. Но при запуске готового файла EXE при любой попытке изменить содержимое любой таблицы появляется сообщение

Cursor is read-only

 

Причина

Это надо понимать буквально. Где-то, как-то, Вы изменили статус своих рабочих таблиц таким образом, что они получили статус "Read-Only".

Решение
Решение зависит от причины, по которой таблицы получили статус Read-Only

Вы включили свои таблицы внутрь проекта

Чтобы убедится в этом, откройте окно вашего проекта и найдите нужную таблицу. Слева от имени таблицы должен стоять значок перечеркнутого кружочка. Если это не так, то щелкните правой кнопкой мыши по имени таблицы и в появившемся меню выберите пункт "Exclude". После этого перекомпилируйте проект (заново постройте EXE).

Включение какого-либо файла внутрь EXE осуществляется аналогично. Правой кнопкой мыши по имени и в открывшемся меню выбрать пункт "Include".

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

Соответственно, файл, включенный внутрь EXE не надо поставлять клиенту (он и так находится внутри EXE).

Перенос базы данных клиенту на лазерном диске

Дело в том, что в момент записи на лазерный диск всем файлам автоматически устанавливают признак Read-Only. Соответственно после копирования на жесткий диск у клиента этот признак необходимо снять.

Правой кнопкой мыши в "Проводнике" (Explorer-Windows) на имени файла, в появившемся меню выбрать пункт "Свойства" (Properties) и снять птичку "Только чтение" ("Read-Only"). Если предварительно выделить несколько файлов, то свойства будут распространены на все выделенные файлы.

Настройка прав доступа пользователей

Возможно, папка, в которой расположены файлы DBF администратором была выдана в общее пользование со статусом Read-Only. В этом случае необходимо обратится к администратору с просьбой изменить права доступа.

Не запускается файл помощи в CHM-формате

Проблема
На машине клиента не запускается HELP, написанный в CHM-формате.

Причина
Приложение, написанное на FoxPro для работы с файлами в CHM-формате использует как ряд системных библиотек операционной системы, так и специфические дополнительные библиотеки, для организации вызова справки именно из приложений FoxPro.

Соответственно, могут быть две причны:

При установке операционной системы Windows не были установлены библиотеки для работы с файлами в CHM-формате
При переносе приложения на машину клиента не были установлены дополнительные библиотеки для работы с файлами в CHM-формате

Решение

Способ решения зависит от причины.

При установке операционной системы Windows не были установлены библиотеки для работы с файлами в CHM-формате

Для коректной работы CHM-файлов непосредственно в операционной среде Windows нужны следующие файлы

HHCTRL.OCX - элемент управления ActiveX HTML help (требует регистрации)
ITSS.DLL - Модуль DLL для компилированного HTML (требует регистрации)
ITIRCL.DLL - Модуль DLL для выполнения операций текстового поиска (требует регистрации)
HH.EXE - Программа просмотра HTML-документа

Как правило, файлы OCX и DLL кладут в папку C:\Windows\System32, а файл HH.EXE непосредственно в папку C:\Windows

Обычно никакой специальной установки для этих файлов не требуется. Они и так уже установлены в Windows. Но если созданный Вами файл CHM не открывается в самой операционной среде Windows (например, из проводника), то это означает, что проблема связана именно с этими файлами.

Все эти четыре файла можно установить специальной программой HHUPD.EXE, поставляемой вместе с FoxPro в директории программы HTML Help Workshop. Или скачать ее с сайта Microsoft. Т.е. запуск программы HHUPD.EXE на машине клиента должен привести к установке этих четырех системных файлов.

Однако программа HHUPD.EXE поможет только в том случае, если на машине клиента либо вообще нет этих файлов, либо они имеет более старую версию.

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

regsvr32.exe C:\Windows\System32\HHCTRL.OCX

Следует только помнить, что поскольку речь идет об ActiveX-компонентах их регистрация должна производится в сенасе работы с правами администратора. Это может быть еще одной причиной не работающих файлов справки. Сами файлы OCX были скопированы, но зарегистрировать их не удалось, поскольку установка производилась в сеансе работы не с правами администратора.

При переносе приложения на машину клиента не были установлены дополнительные библиотеки для работы с файлами в CHM-формате

Для работы CHM-файлов в среде FoxPro требуются следующие файлы

Visual FoxPro 6 FOXHHELPPS.DLL 
FOXHHELP.EXE
Visual FoxPro 7 FOXHHELPPS7.DLL 
FOXHHELP7.EXE
Visual FoxPro 8 FOXHHELPPS8.DLL 
FOXHHELP8.EXE
Visual FoxPro 9 FOXHHELPPS9.DLL 
FOXHHELP9.EXE
При этом регистрация имеет вид
regsvr32.exe FOXHHELPPS.DLL 
FOXHHELP.EXE /regserver
Часть букв при вводе заменяются латинскими

Проблема
При отладке приложения все в порядке, а в готовом файле EXE в процессе ввода часть русских букв автоматически заменяются латинскими буквами

Причина
Причина в несовпадении кодовых страниц.

По умолчанию, если кодовая страница не указана явно, то до версии Visual FoxPro 6 включительно, и на этапе отладки приложения и в готовом файле EXE кодовая страница устанавливается такая же, как и кодовая страница Windows.

Однако, начиная с версии Visual FoxPro 7, на этапе отладки кодовая страница по-прежнему устанавливается как кодовая страница Windows, но в готовом файле EXE будет установлена кодовая страница 1252 (Windows ANSI)

Решение

Необходимо явно указать в какой кодовой странице следует работать. Это можно сделать одним единственным способом.
Надо создать файл конфигурации CONFIG.FPW. Это обычный текстовый файл. И написать в нем строчку

CODEPAGE=1251

Файл конфигурации можно подключить несколькими способами. Наиболее распространенными являются три варианта.

  1. Включить файл конфигурации внутрь файла EXE.

    Для этого добавьте файл конфигурации в Ваш проект на закладке "Other" в раздел "Text Files". И убедитесь, что слева от имени файла нет значка перечеркнутого кружка.

    Все. Теперь файл конфигурации станет частью готового файла EXE и поставлять его клиенту как отдельный файл нет необходимости. Однако следует понимать, что такой файл невозможно будет изменить у клиента.

  2. Положить файл конфигурации рядом с файлом EXE в ту же директорию

    По умолчанию, в момент запуска файла EXE, если файл конфигурации не включен внутрь файла EXE, то файл конфигурации будет подхвачен из той же директории, в которой находится файл EXE

  3. Использовать специальный ключ, для указания пути доступа к файлу конфигурации

    Для явного указания пути доступа к файлу конфигурации можно использовать специальный именованный параметр (ключ). Примерно в таком синтаксисе

     
    MyProg.EXE -C"C:\MyDir\Config.fpw"

    Подробнее о передаче параметров файл EXE читайте в статье:

    Главный (стартовый) файл. Передача параметров в EXE

Замечание

Для версий до Visual FoxPro 5 включительно, следует также поставлять клиенту файл

FOXPRO.INT

Не надо путать его с ini-файлом, расширение от слова "international". Этот файл поставлялся вместе с FoxPro в его корневой директории. Его необходимо класть рядом с файлом EXE на машине клиента. Включать его внутрь файла EXE нельзя. Начиная с версии VFP6, надобность в нем отпала. Он уже не нужен.

Дополнительную информацию о возможных ошибках связанных с кодовыми страницами можете почитать здесь

Неверное отображение отдельных символов или несовпадение кодовых страниц
Проблема CODEPAGE у VFPxT.DLL

Как прикрепить к файлу EXE свою иконку

Вопрос
Я создал EXE-файл. Однако в проводнике Windows и на рабочем столе связанная с моим файлом иконка - это либо лисья мордочка, либо иконка флага Windows. Как мне прикрепить к моему файлу EXE нужную мне иконку.

Ответ
Сам факт прикрепления иконки к EXE-файлу можно организовать двумя способами:

  1. Воспользоваться пунктом основного меню "Project" - "Project info" - закладка "Project" - поставить "птичку" в пункте "Attach icon" и выбрать нужную иконку
  2. Программно, в главном (стартовом) файле дать команду

    _SCREEN.icon = "MyIcon.ico"

Эти два способа не взаимозаменяемые, а взаимодополняющие.

Добавление иконки в свойствах проекта отвечает за отображение иконки в тех случаях, когда собственно программа не запускается. В проводнике Windows или ярлык на рабочем столе.

Указание иконки для объекта _SCREEN определяет изображение в левом верхнем углу основного окна приложения, если приложение использует окно _SCREEN в качестве основного окна приложения.

Замечание

Если Вы создаете приложение на базе форм со свойством Form.ShowWindow = 2 - As Top-Level, то необходимо будет прикрепить соответствующую иконку к свойству самой формы

Form.icon = "MyIcon.ico"

Поскольку в этом случае нет основного окна FoxPro с именем _SCREEN. Соответственно, не будут отображаться и иконки прикрепленные к этому окну. Вместо него отображается Ваша форма со свойством As Top-Level

Однако каким бы способом Вы ни воспользовались, необходимая иконка должна быть доступна к моменту ее использования. Лучше включить ее внутрь проекта. Т.е. добавить в сам проект на закладку "Other" в группу "Other Files"

Ассоциируемая иконка должна обладать следующими свойствами:

  • Иконка - это именно иконка. Т.е. файл с расширением "ico"
  • Иконка (сам файл ico) должна содержать в себе две картинки - 16х16 пикселей и 32х32 пикселей
  • Иконка должна иметь столько цветов, сколько поддерживает как текущая версия FoxPro, так и операционная система Windows.
  • Файл EXE должен быть собран (создан) в той версии операционной системы Windows, которая указана в системных требованиях к Вашей версии FoxPro.

    В принципе, FoxPro поддерживает отображение иконок 3 размеров: 16х16, 32х32 и 48х48. Однако размер 48х48 практически нигде не используется. Впрочем, можете также включить иконку размера 48х48 в свой файл ico. Хотя практического смысла это не имеет.

    Также FoxPro поддерживает изображение иконок в 4 наборах цветов: 16 Color, 256 Color, True Color (16 bit), True Color (24 bit). Для своей иконки лучше использовать минимальный цветовой набор - 16 Color или 256 Color. Мало ли, какие установки будут сделаны на машине клиента. А 256 Color поддерживают практически все видео карты.

    Если в системных требованиях для Вашей версии FoxPro указано, что разработка приложения должна осуществляться в версии Windows 2000 или Windows XP, то не стоит пытаться собрать готовый файл EXE в младшей версии. Например, в Windows 98. Вполне возможно, что Вы получите работоспособный файл EXE, но, скорее всего, "в комплекте" Вы получите массу глюков. Например, не будет отображаться присоединенная иконка.

Почему в готовом EXE не работает копирование по Ctrl+C, Ctrl+V

Проблема

На этапе разработки приложения работало копирование через буфер обмена (горячие клавиши Ctrl+C, Ctrl+V), но в готовом файле EXE эти комбинации клавиш не работают. Как можно исправить эту ситуацию?

Причина и решение проблемы приведены в разделе посвященном меню

Почему в готовом EXE не работает копирование по Ctrl+C, Ctrl+V

Как определить в каком VFP сделано приложение

А как определить в каком VFP сделанно приложение либо при установки последних библиотек это не имеет значения ?

Открываете файл EXE как текстовый файл (можно в блокноте Notepad) и где-то в самом начале этого файла должна быть строка "VisualFoxProRuntime". Сразу за ней после точки будет стоять цифра, обозначающая номер версии FoxPro в которой был скомпилирован данный EXE. Для VFP9 это будет строка "VisualFoxProRuntime.9"

Однако проблема в том, что таким образом можно узнать только собственно версию без определения ServicePack. А при запуске приложения нужны RunTime библиотеки с точностью именно до ServicePack. Например, если приложение было скомпилировано в VFP9SP1, то и RunTime библиотеки должны быть от VFP9SP1. Если будут установлены библиотеки VFP9SP2, то будет аналогичное сообщение об ошибке.

Вам придется либо поискать библиотеки и просто их скопировать в папку с EXE, либо действовать методом "научного тыка".

1. Установить "голый" VFP9. Проверить работоспособность
2. Если не работает, накатить SP1. Проверить
3. Если не работает, деинсталировать VFP9, снова установить и накатить SP2.

Накатить SP2 поверх SP1 - не получится. В рекомендациях по установке советуют деинсталировать VFP9SP1, а потом устанавливать отдельно VFP9 с последующей установкой SP2

Да, нужна еще сишная библиотека msvcr71.dll. Эту библиотеку надо регистрировать через regsvr32.

Для старта приложения необходимый "минимум": msvcr71.dll, vfp9r.dll, vfp9renu.dll

Авторизация
*
*
Генерация пароля