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

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5584
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

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

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

Привет всем !

Дайджестом предыстория вопроса:
---------------------------------------------
Cо всеми этими установками и откатами из-за косяков C11.1 напоролся на проблему.
Если к программе собранной в C11 случайно подтянуться ClaRUN / ClaOLE DLL из C11.1 - то программа работает,
но возникают кракозябры в контекстных меню и AppFrame, как когда-то давно под WinXP.
Aж вздрогнул от ужаса, что этот косяк снова вернулся ! :(

Собственно вопрос:
-------------------------
Хотелось бы как-то на момент запуска проекта проверять адекватность и актуальность его компонент.
Со своими DLL разберусь добавив в них метод возвращающий дату сборки. А вот как быть с системными DLL Clarion ?
Можно как-то в них отжать принадлежность к конкретному релизу Clarion ?

1.jpg
«V» значит Вендетта !
kreator
✯ Ветеран ✯
Сообщения: 4324
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator »

При компиляции проекта кларионовские dll-ки копируются в каталог проекта. Разве нет? Наверно, чтобы было всё адекватно надо компилить всё (в смысле все App проекта).
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5584
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

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

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

kreator писал(а): 13 Октябрь 2021, 15:55 При компиляции проекта кларионовские dll-ки копируются в каталог проекта
Это даже Игорю понятно. :) Но жись всегда интересней теории кунг-фу.
Юзер пытался накатить обновление на запущенную программу - получил ошибку (файлы открыты).

Тогда он пошёл простым путём - вырубил программу через Диспетчер Задач Windows
и установил обновление. Но ClaRun / ClaOLE остались открытыми и потому не обновились.

При запуске он увидел кракозябры и стал наяривать в тех. поддержку про глючное обновление.
Тех. поддержка -> программистам, программисты -> мне. Разобрались, но осадок остался. ;)

Меня больше бы устроило, что если уж как-то там получилась мешанина DLL -> проверить и выдать
сообщение с рекомендацией выполнить переустановку приложения и всё.
«V» значит Вендетта !
kreator
✯ Ветеран ✯
Сообщения: 4324
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator »

У нас был механизм проверки dll. В базе лежали даты создания dll. И при запуске программы сравнивались эти даты с реальностью. Сейчас это не делаем. Видимо проблема ушла. В приведённом Вами случае Вы хотите уж совсем защиту от дурака. Если пользователь или админ не смог правильно обновить программу, что Вы можете сделать? Если ClaRun/ClaOLE остались открытыми (а это ещё и непонятно почему), то они не могли быть скопированы/перезаписаны. И если пользователь/админ этого не понимает...
Я так понимаю, есть надёжный способ срубить работающую программу со всеми её компонентами.
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2621
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

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

Сообщение Дед Пахом »

С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5584
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

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

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

kreator писал(а): 13 Октябрь 2021, 16:48 а это ещё и непонятно почему
По разному ведь бывает. Вспомнил, что несколько лет назад был похожий случай.
Где-то глубоко за МКАД у пользователя компьютер заели вирусы и чего-то там наудаляли.
Вызванный из райцентра сисадмин вируса поборол, а программу собрал по ошибкам "нет DLL ..." поиском из разных резервных папок.
Молодца ! Я тогда тоже не мог долго въехать почему этот Франкенштейн выдавал какие-то неведомые мне ошибки. :)
«V» значит Вендетта !
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5584
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

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

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

Дед Пахом писал(а): 13 Октябрь 2021, 16:51 https://stackoverflow.com/questions/940 ... r-exe-file
Спасибо ! Судя по описанию - прям то, что нужно (и для своих DLL тоже).
А нет ли у Вас попользоваться кларионовского описания прототипа функции и структуры ?

1.jpg
«V» значит Вендетта !
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2621
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

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

Сообщение Дед Пахом »

У меня нет, никогда не пользовался этим api.
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1216
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

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

Сообщение RaFaeL »

Игорь Столяров писал(а): 13 Октябрь 2021, 16:11 Но ClaRun / ClaOLE остались открытыми и потому не обновились.
Тут надо искать, почему они остались открыты. Вероятно, у вас несколько exe а проверяете занятость только одного
kreator
✯ Ветеран ✯
Сообщения: 4324
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator »

Легче проверить дату создания dll. В Кларионе есть функция. Ничем не отличается от версии.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5584
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

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

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

kreator писал(а): 13 Октябрь 2021, 19:04 Легче проверить дату создания dll
Это именно дата создания DLL ? Или просто дата файла с DLL ?
«V» значит Вендетта !
kreator
✯ Ветеран ✯
Сообщения: 4324
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator »

Посмотрите GetFileDate и GetFileTime. По-моему, именно создания. А что такое дата файла?
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4324
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator »

В справке неправильно. В прототипе функций есть переключатель (Дата/время последней записи в файл/создания/последнего обращения).
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4324
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator »

По умолчанию - 0. Для dll, думаю, параметр 0 и 1 одинаковы с точки зрения результата.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5584
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

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

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

kreator писал(а): 13 Октябрь 2021, 19:17 А что такое дата файла?
Я юзаю DIRECTORY() которая возвращает очередь с параметрами файлов, в которой есть поле Date, Time и т.д.
Как я понимаю, что Date - это дата ИЗМЕНЕНИЯ файла. Но она может меняться при установке программы, копировании и т.д.
«V» значит Вендетта !
Ответить