Вверх ↑
Этот топик читают: Гость
Главный модератор
Ответов: 2999
Рейтинг: 396
#46: 2008-06-09 01:20:46 ЛС | профиль | цитата
nesco, Как сделать Uninstall шрифта, который был инсталлирован из стрима и локально его файла не существует? И ещё как-нибудь просигнализировать об успехе/неуспехе Unistall'а.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#47: 2008-06-09 01:29:31 ЛС | профиль | цитата
Nic писал(а):
который был инсталлирован из стрима и локально его файла не существует

Интересно, а куда он девался, он же создается из стрима во временной папке винды и удаляется командой Uninstall
Страшного конечно мало, при перезагрузке фонт исчезнет, он же временный.
Я почему не стал делать ответ от Uninstall'a, потому, что ошибок по удалению временного файла не должно быть, тк как все окна получают команду на перечитывания шрифтов, а файл "так просто" недоступен.
карма: 22

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#48: 2008-06-09 01:31:09 ЛС | профиль | цитата
И как быть с множеством таких шрифтов, инталлированных из потока? Надо бы придумать как быть с именами файлов во временной директории.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 3655
Рейтинг: 69
#49: 2008-06-09 01:33:18 ЛС | профиль | цитата
копировать их на диск и удалять как файл.
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#50: 2008-06-09 01:37:41 ЛС | профиль | цитата
Nic писал(а):
Надо бы придумать как быть с именами файлов во временной директории.

Не надо ничего придумывать, если не знаете как все это работает -- во временной директории каждый файл создается с уникальным именем методом CreateTempFile, все новые файлы проверяются на наличии на диске, и если они там есть, пытается назначить другое имя, и так, пока его не найдет. При создании файла учитывается суффикс файла fnt

Вячеслав писал(а):
копировать их на диск и удалять как файл

Они сами там создаются, и удаляются командой Uninstall, или при загрузке другого шрифта, перед его инсталляцией.
карма: 22

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#51: 2008-06-09 01:42:08 ЛС | профиль | цитата
И почему надо делать Uninstall шрифта именно тем экземпляром компонента, который его создал? Логичнее, мне кажется, сделать это универсальным.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 3655
Рейтинг: 69
#52: 2008-06-09 01:46:33 ЛС | профиль | цитата
nesco писал(а):
Они сами там создаются

я имел ввиду копировать в стандартную папку windows.(со шрифтами)
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#53: 2008-06-09 01:50:35 ЛС | профиль | цитата
Nic писал(а):
Логичнее, мне кажется, сделать это универсальным

Откуда другому компоненту будет известно, сколько ты установил шрифтов в системе
------------ Дoбавленo:

Вячеслав писал(а):
я имел ввиду копировать в стандартную папку windows.(со шрифтами)

Это уже другой компонент, с возможностью регистрации в ситемном реестре. Я не предполагал его в данный момент делать.
карма: 22

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#54: 2008-06-09 01:52:21 ЛС | профиль | цитата
Пусть на нижнюю точку выдает имя временного файла
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#55: 2008-06-09 01:55:57 ЛС | профиль | цитата
Все это можно сделать и при помощи этого компонента с небольшим довеском из других компонентов. Певый раз он загрузится как временный, а при перезагрузке считает реестр и запустится как основной

------------ Дoбавленo:


Nic писал(а):
Пусть на нижнюю точку выдает имя временного файла

Ну выдам, и дальше что, удалишь ты его, а деинсталлировать как будешь, шрифт же удаляется по внутреннему имени файла? Я никак не могу понять, зачем весь этот геморрой
карма: 22

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#56: 2008-06-09 02:00:39 ЛС | профиль | цитата


      RemoveFontResource(PChar(fFontFile));
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#57: 2008-06-09 02:09:49 ЛС | профиль | цитата
Nic, а я тебе про что -- переменная fFontFile -- внутренняя
------------ Дoбавленo:

Это надо тогда добавлять метод UninstallByFileName. Обясни мне -- зачем все это
------------ Дoбавленo:

Еще раз -- добавит не проблема, но зачем, зачем удалять шрифт из другого компонента
карма: 22

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#58: 2008-06-09 02:21:44 ЛС | профиль | цитата
Ситуация из жизни:

FontManager загрузил из Database список N-го количества шрифтов из которого оператор временно исталлировал некоторое их количество. Естественно для инсталляции применить MultiElementEx. Теперь он выключает часть шрифтов, чтобы подключить другую часть (поверь на слово, это приходится делать часто из-за полной не разберихи с версионностью неизвестно откуда взявшихся шрифтов заказчиков). Перебирать все экземпляры MultiElementEx не рационально. Есть таблица загруженных и исталлированных в данный момент шрифтов. Из таблицы получаем Имя Шрифта для Install/Uninstall и запомненное в таблице имя временного файла подаем в потоке компоненту на метод Uninstall.

Примерно так пока это мыслится.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Разработчик
Ответов: 26113
Рейтинг: 2126
#59: 2008-06-09 02:35:31 ЛС | профиль | цитата
Nic, так что тебе надо -- препроцессор временных шрифтов со своим списком (млин, похоже на то), или просто добавить точки для удаления по имени.
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#60: 2008-06-09 02:36:53 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-05-22 08:08:05
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)