Целостность multi-DLL проекта

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Целостность multi-DLL проекта

Сообщение finsoftrz »

Логично, что такие заголовки надо и в свои exe/dll включать. По моему, когда-то давно обсуждалось.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Целостность multi-DLL проекта

Сообщение Игорь Столяров »

finsoftrz писал(а): 10 Ноябрь 2021, 9:16 Логично, что такие заголовки надо и в свои exe/dll включать
Да. Для этого есть штатный шаблон cwVersionRes. Это как бы культура оформления проектов. А по факту пока вот так:

1.jpg
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Целостность multi-DLL проекта

Сообщение finsoftrz »

Посмотрел cwVersionRes. Механизм понятный, но требует адаптации, чтобы часть информации определялась как общая для всех dll проекта, а часть индивидуально для каждой dll. Плюс корректно отрабатывалось при хитрых пересборках проекта.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Целостность multi-DLL проекта

Сообщение Игорь Столяров »

1. Во все примерах ниже, значения возвращаются в Unicode.
Поэтому если (вдруг) у кого-то данные внутри DLL/EXE на национальном языке - надо конвертить в ANSY.

2. Есть смежная задача, и я даже не знаю решаема ли она в принципе ...
Получить реальный список DLL (с местом их расположения) которые подгружены к EXE.
Ведь DLL может подключаться не только в папке программы, но и в папке Windows, папках прописанных в PATH ...

Если есть идеи к обсуждению на эту тему - буду благодарен. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Целостность multi-DLL проекта

Сообщение finsoftrz »

Посмотрел шаблон cwVersionRes повнимательнее, там есть нужный функционал в готовом виде. Для multy dll проекта можно подцепить шаблон к каждому app, задав один раз нужные настройки. А информацию о проекте в целом подгружать из внешнего файла. То есть один раз генерим файл версий полностью, а затем во всех app ставим ссылку на него в разделе шаблона информация о проекте. Перед сборкой проекта меняем в нем номер версии продукта и запускаем менеджер компиляции. Нумерацию версий файлов можно не вести, вместо него достаточно даты и времени сборки. Могут быть, конечно, и другие сценарии.
Тогда мы в каждой dll включаем подробную информацию, как и для exe. Соответственно, можем увидеть в списке компонен и использовать при проверке целостности.
Единственный момент, как я понял, кириллицу шаблон не поддерживает.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Целостность multi-DLL проекта

Сообщение finsoftrz »

Игорь Столяров писал(а): 10 Ноябрь 2021, 9:34
finsoftrz писал(а): 10 Ноябрь 2021, 9:16 Логично, что такие заголовки надо и в свои exe/dll включать
Да. Для этого есть штатный шаблон cwVersionRes. Это как бы культура оформления проектов. А по факту пока вот так:


1.jpg
Библиотеки в проекте обычно все известные. Если для каких-то чужих не задано описание, то можно прилепить свое. Только корректность версий уже не проконтролируешь.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Целостность multi-DLL проекта

Сообщение finsoftrz »

Игорь Столяров писал(а): 10 Ноябрь 2021, 17:23 2. Есть смежная задача, и я даже не знаю решаема ли она в принципе ...
Получить реальный список DLL (с местом их расположения) которые подгружены к EXE.
Ведь DLL может подключаться не только в папке программы, но и в папке Windows, папках прописанных в PATH ...

Если есть идеи к обсуждению на эту тему - буду благодарен. :)
Мне кажется, это дебри. Можно проверять по требованию, чтобы все dll проекта лежали в его папке. Иначе легко получить конфликт при работе разных приложений.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Целостность multi-DLL проекта

Сообщение Игорь Столяров »

finsoftrz писал(а): 10 Ноябрь 2021, 18:54 Посмотрел шаблон cwVersionRes повнимательнее
Сейчас не вспомню сразу, но что-то там было не просто с этим шаблоном ...
Он у меня в списке проклятых. То ли с выгрузкой процедур в файл, то ли с конвертацией APP в C11 ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Целостность multi-DLL проекта

Сообщение Игорь Столяров »

finsoftrz писал(а): 10 Ноябрь 2021, 19:06 Иначе легко получить конфликт при работе разных приложений.
Опция проверить, что все ли DLL дома (в папке) - это хорошая идея.
Но общем-то с этим проблем нет - пока всё хорошо. Но когда начинаются какие-то беды
с копированием, установкой, вирусами (и особо шаровыми антивирусами), восстановлением -
то и возникают ситуации, когда при запуске программа притягивает чужую DLL, особенно из
разряда популярных вроде SQLite или ZLib. И последствия могут быть непредсказуемы.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Целостность multi-DLL проекта

Сообщение finsoftrz »

Решил я тоже подписать все свои dll и делать контроль целостности. Не уверен, что это даст практический выхлоп, но с точки зрения системы плюс, не требующий особых затрат на поддержку (прибил глобальный экстеншен в apps и только номер версии приложения в текстовом файле менять перед полной сборкой приложения). Шаблон VERSIONRES.TPL немного модифицировал, чтобы в номере версии файла сохранять не абстрактный номер, а дату сборки. Может, это не совсем по правилам, но мне кажется, что так информативнее, дата самого файла может быть модифицирована.
ver1.jpg
ver2.jpg
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Целостность multi-DLL проекта

Сообщение Игорь Столяров »

Красота ! Какая-нибудь гиена огненная предусмотрена, если в дружной семье обнаружится DLL другой версии ?
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Целостность multi-DLL проекта

Сообщение finsoftrz »

Будет вызов функции проверки при запуске программы и своих dll, и кларионовских. Пока не успел сделать.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Целостность multi-DLL проекта

Сообщение finsoftrz »

Включил проверку. Всплыли некоторые особенности. В частности, у меня версии дополнительных драйверов не совпадают с версией других кларионовских библиотек. Пришлось их исключить из проверки целостности. Ну и есть некоторые библиотеки без подписи. Проверить их тоже не получится, а в список используемых, наверно, есть смысл вывести, снабдив комментарием, что это такое.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Целостность multi-DLL проекта

Сообщение Игорь Столяров »

finsoftrz писал(а): 16 Ноябрь 2021, 18:37 версии дополнительных драйверов не совпадают с версией других кларионовских библиотек
У меня такой треш был, когда использовали библиотеку iqXML. Она использовала DLL Clarion и
и обновлялись, чем дальше - тем реже ... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Целостность multi-DLL проекта

Сообщение finsoftrz »

В с6 с ip драйвером проблемы были, приходилось искать работоспособную версию. Поэтому и разница.
C6/C11, ШВС, tps/btrieve.
Ответить