nesco, Как сделать Uninstall шрифта, который был инсталлирован из стрима и локально его файла не существует? И ещё как-нибудь просигнализировать об успехе/неуспехе Unistall'а.
Этот топик читают: Гость
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
карма: 6 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Nic писал(а): который был инсталлирован из стрима и локально его файла не существуетИнтересно, а куда он девался, он же создается из стрима во временной папке винды и удаляется командой Uninstall Страшного конечно мало, при перезагрузке фонт исчезнет, он же временный. Я почему не стал делать ответ от Uninstall'a, потому, что ошибок по удалению временного файла не должно быть, тк как все окна получают команду на перечитывания шрифтов, а файл "так просто" недоступен. |
|||
карма: 22 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
И как быть с множеством таких шрифтов, инталлированных из потока? Надо бы придумать как быть с именами файлов во временной директории.
|
|||
карма: 6 |
|
Ответов: 3655
Рейтинг: 69
|
|||
копировать их на диск и удалять как файл.
|
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Nic писал(а): Надо бы придумать как быть с именами файлов во временной директории.Не надо ничего придумывать, если не знаете как все это работает -- во временной директории каждый файл создается с уникальным именем методом CreateTempFile, все новые файлы проверяются на наличии на диске, и если они там есть, пытается назначить другое имя, и так, пока его не найдет. При создании файла учитывается суффикс файла fnt Вячеслав писал(а): копировать их на диск и удалять как файлОни сами там создаются, и удаляются командой Uninstall, или при загрузке другого шрифта, перед его инсталляцией. |
|||
карма: 22 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
И почему надо делать Uninstall шрифта именно тем экземпляром компонента, который его создал? Логичнее, мне кажется, сделать это универсальным.
|
|||
карма: 6 |
|
Ответов: 3655
Рейтинг: 69
|
|||
nesco писал(а): Они сами там создаютсяя имел ввиду копировать в стандартную папку windows.(со шрифтами) |
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Nic писал(а): Логичнее, мне кажется, сделать это универсальнымОткуда другому компоненту будет известно, сколько ты установил шрифтов в системе ------------ Дoбавленo: Вячеслав писал(а): я имел ввиду копировать в стандартную папку windows.(со шрифтами)Это уже другой компонент, с возможностью регистрации в ситемном реестре. Я не предполагал его в данный момент делать. |
|||
карма: 22 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Пусть на нижнюю точку выдает имя временного файла
|
|||
карма: 6 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Все это можно сделать и при помощи этого компонента с небольшим довеском из других компонентов. Певый раз он загрузится как временный, а при перезагрузке считает реестр и запустится как основной
------------ Дoбавленo: Nic писал(а): Пусть на нижнюю точку выдает имя временного файлаНу выдам, и дальше что, удалишь ты его, а деинсталлировать как будешь, шрифт же удаляется по внутреннему имени файла? Я никак не могу понять, зачем весь этот геморрой |
|||
карма: 22 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
|
|||
карма: 6 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Nic, а я тебе про что -- переменная fFontFile -- внутренняя
------------ Дoбавленo: Это надо тогда добавлять метод UninstallByFileName. Обясни мне -- зачем все это ------------ Дoбавленo: Еще раз -- добавит не проблема, но зачем, зачем удалять шрифт из другого компонента |
|||
карма: 22 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Ситуация из жизни:
FontManager загрузил из Database список N-го количества шрифтов из которого оператор временно исталлировал некоторое их количество. Естественно для инсталляции применить MultiElementEx. Теперь он выключает часть шрифтов, чтобы подключить другую часть (поверь на слово, это приходится делать часто из-за полной не разберихи с версионностью неизвестно откуда взявшихся шрифтов заказчиков). Перебирать все экземпляры MultiElementEx не рационально. Есть таблица загруженных и исталлированных в данный момент шрифтов. Из таблицы получаем Имя Шрифта для Install/Uninstall и запомненное в таблице имя временного файла подаем в потоке компоненту на метод Uninstall. Примерно так пока это мыслится. |
|||
карма: 6 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Nic, так что тебе надо -- препроцессор временных шрифтов со своим списком (млин, похоже на то), или просто добавить точки для удаления по имени.
|
|||
карма: 22 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 5 раз(а), последний 2021-05-22 08:08:05 |
|||
карма: 0 |
|