Почему MSI Patching TTF-файл шрифта всегда вызывает перезагрузку?

Мы создаем исправление MSP, которое обновляет файл шрифта TrueType (.TTF), но вызывает 1603 (перезагрузка требуется после установки.) Вот журнал MSI:

MSI (s) (5C:48) [23:33:56:432]: Executing op: FileCopy(SourceName=TestFont.ttf,SourceCabKey=testfont.ttf,DestName=TestFont.ttf,Attributes=20480,FileSize=34880,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,Version=1.3.0.0,,InstallMode=58982400,HashOptions=0,HashPart1=1022639218,HashPart2=1170530421,HashPart3=1359995143,HashPart4=-948212544,,)
MSI (s) (5C:48) [23:33:56:432]: File: C:\Program Files (x86)\TESTDIR\TestFont.ttf;  Overwrite;  Won't patch;    Existing file is a lower version
MSI (s) (5C:48) [23:33:56:433]: Source for file 'passtrue.ttf' is compressed
InstallFiles: File: TestFont.ttf,  Directory: C:\Program Files (x86)\TESTDIR\,  Size: 34880
MSI (s) (5C:48) [23:33:56:434]: Re-applying security from existing file.
Info 1603. The file C:\Program Files (x86)\TESTDIR\TestFont.ttf is being held in use.  Close that application and retry.
MSI (s) (5C:48) [23:33:57:765]: Verifying accessibility of file: TestFont.ttf

Я уверен, что файл не используется. (перезагрузил машину перед применением этого патча.)

Спасибо!

1 ответ

Решение

Наиболее вероятной причиной является то, что шрифт установлен как постоянный шрифт, т. Е. Он указан в реестре. Соответствующий раздел реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

Как описано в разделе "Установка и удаление шрифтов":

Шрифт, установленный из папки, отличной от папки%windir%\fonts, не может быть изменен при загрузке в любом активном сеансе, включая сеанс 0. Поэтому любая попытка изменить, заменить или удалить будет заблокирована. [...] Постоянные шрифты остаются установленными после перезагрузки и загружаются всеми созданными сеансами.

Вы можете решить проблему, установив шрифт в %windir%\fonts каталог или сделав его временным шрифтом.

(Обратите внимание, что это поведение относительно недавно, появившееся в обновлении безопасности MS14-045.)

Другие вопросы по тегам