У меня есть приложение, созданное с помощью пакетов времени выполнения. Когда исполняемый файл запускается, он автоматически загружает необходимые пакеты (.bpl).
Недавно мы установили сервер Windows 2008 R2 для использования в качестве служб терминалов.
Мы храним некоторые старые скомпилированные версии нашего приложения по разным путям, например:
c:\app\version_1\common.bpl
c:\app\version_1\app.exe
c:\app\version_2\common.bpl
c:\app\version_2\app.exe
Common.bpl — это пакет времени выполнения, от которого зависит app.exe.
ЭТА ПРОБЛЕМА:
Я запускаю "c:\app\version_2\app.exe"
, а загружается "c:\app\version_2\common.bpl"
. Когда я запускаю "c:\app\version_1\app.exe"
, он загружает НЕПРАВИЛЬНЫЙ bpl (из версии_2).
Путь "c:\app\version_2\"
не входит в путь системного поиска.
На сервере Windows2003 этой проблемы не возникает.
Что я могу сделать, чтобы решить эту проблему?
Спасибо!
Я скачал Process Explorer (Microsoft sysinternals) и проверил загруженные модули каждого исполняемого файла, все они правильные!
Но я заметил другую проблему. После запуска второй версии возникает ошибка «запись не найдена», сообщающая мне, что не удалось найти точку входа инициализации модуля, который существует только в одной из версий.
Что-то очень странно. ProcessExplorer сообщает мне, что процесс загружает правильные модули, но когда они работают, этого не происходит.
Кажется, приложения совместно используют загруженные модули.
РЕШЕНО
Был MouseHook с использованием FindVCLWindow, он генерировал AV.
Извините за неудобства, ребята, и спасибо!