Целостность multi-DLL проекта
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Целостность multi-DLL проекта
Привет всем !
Дайджестом предыстория вопроса:
---------------------------------------------
Cо всеми этими установками и откатами из-за косяков C11.1 напоролся на проблему.
Если к программе собранной в C11 случайно подтянуться ClaRUN / ClaOLE DLL из C11.1 - то программа работает,
но возникают кракозябры в контекстных меню и AppFrame, как когда-то давно под WinXP.
Aж вздрогнул от ужаса, что этот косяк снова вернулся !
Собственно вопрос:
-------------------------
Хотелось бы как-то на момент запуска проекта проверять адекватность и актуальность его компонент.
Со своими DLL разберусь добавив в них метод возвращающий дату сборки. А вот как быть с системными DLL Clarion ?
Можно как-то в них отжать принадлежность к конкретному релизу Clarion ?
Дайджестом предыстория вопроса:
---------------------------------------------
Cо всеми этими установками и откатами из-за косяков C11.1 напоролся на проблему.
Если к программе собранной в C11 случайно подтянуться ClaRUN / ClaOLE DLL из C11.1 - то программа работает,
но возникают кракозябры в контекстных меню и AppFrame, как когда-то давно под WinXP.
Aж вздрогнул от ужаса, что этот косяк снова вернулся !
Собственно вопрос:
-------------------------
Хотелось бы как-то на момент запуска проекта проверять адекватность и актуальность его компонент.
Со своими DLL разберусь добавив в них метод возвращающий дату сборки. А вот как быть с системными DLL Clarion ?
Можно как-то в них отжать принадлежность к конкретному релизу Clarion ?
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Целостность multi-DLL проекта
При компиляции проекта кларионовские dll-ки копируются в каталог проекта. Разве нет? Наверно, чтобы было всё адекватно надо компилить всё (в смысле все App проекта).
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Целостность multi-DLL проекта
Это даже Игорю понятно. Но жись всегда интересней теории кунг-фу.
Юзер пытался накатить обновление на запущенную программу - получил ошибку (файлы открыты).
Тогда он пошёл простым путём - вырубил программу через Диспетчер Задач Windows
и установил обновление. Но ClaRun / ClaOLE остались открытыми и потому не обновились.
При запуске он увидел кракозябры и стал наяривать в тех. поддержку про глючное обновление.
Тех. поддержка -> программистам, программисты -> мне. Разобрались, но осадок остался.
Меня больше бы устроило, что если уж как-то там получилась мешанина DLL -> проверить и выдать
сообщение с рекомендацией выполнить переустановку приложения и всё.
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Целостность multi-DLL проекта
У нас был механизм проверки dll. В базе лежали даты создания dll. И при запуске программы сравнивались эти даты с реальностью. Сейчас это не делаем. Видимо проблема ушла. В приведённом Вами случае Вы хотите уж совсем защиту от дурака. Если пользователь или админ не смог правильно обновить программу, что Вы можете сделать? Если ClaRun/ClaOLE остались открытыми (а это ещё и непонятно почему), то они не могли быть скопированы/перезаписаны. И если пользователь/админ этого не понимает...
Я так понимаю, есть надёжный способ срубить работающую программу со всеми её компонентами.
Я так понимаю, есть надёжный способ срубить работающую программу со всеми её компонентами.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Целостность multi-DLL проекта
По разному ведь бывает. Вспомнил, что несколько лет назад был похожий случай.
Где-то глубоко за МКАД у пользователя компьютер заели вирусы и чего-то там наудаляли.
Вызванный из райцентра сисадмин вируса поборол, а программу собрал по ошибкам "нет DLL ..." поиском из разных резервных папок.
Молодца ! Я тогда тоже не мог долго въехать почему этот Франкенштейн выдавал какие-то неведомые мне ошибки.
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Целостность multi-DLL проекта
Спасибо ! Судя по описанию - прям то, что нужно (и для своих DLL тоже).
А нет ли у Вас попользоваться кларионовского описания прототипа функции и структуры ?
За теми кто отстал - не возвращаться. (С) Кодекс
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1378
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Целостность multi-DLL проекта
Тут надо искать, почему они остались открыты. Вероятно, у вас несколько exe а проверяете занятость только одногоИгорь Столяров писал(а): ↑13 Октябрь 2021, 16:11 Но ClaRun / ClaOLE остались открытыми и потому не обновились.
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Целостность multi-DLL проекта
Легче проверить дату создания dll. В Кларионе есть функция. Ничем не отличается от версии.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Целостность multi-DLL проекта
Это именно дата создания DLL ? Или просто дата файла с DLL ?
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Целостность multi-DLL проекта
Посмотрите GetFileDate и GetFileTime. По-моему, именно создания. А что такое дата файла?
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Целостность multi-DLL проекта
В справке неправильно. В прототипе функций есть переключатель (Дата/время последней записи в файл/создания/последнего обращения).
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Целостность multi-DLL проекта
По умолчанию - 0. Для dll, думаю, параметр 0 и 1 одинаковы с точки зрения результата.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7419
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 16 раз
- Поблагодарили: 50 раз
Целостность multi-DLL проекта
Я юзаю DIRECTORY() которая возвращает очередь с параметрами файлов, в которой есть поле Date, Time и т.д.
Как я понимаю, что Date - это дата ИЗМЕНЕНИЯ файла. Но она может меняться при установке программы, копировании и т.д.
За теми кто отстал - не возвращаться. (С) Кодекс