Просто хочу добавить, что таблица шрифтов в вашем выпуске файл MSI используется для указания шрифтов, которые должны быть зарегистрированы в системе.
Добавленные сюда записи шрифтов зарегистрируют шрифт в системе. Вы можете попытаться удалить записи из этой таблицы, чтобы отключить регистрацию шрифта. Проверьте свой окончательный выпуск MSI, а не ISM (исходный файл Installshield).
Регистрация, которая происходит со шрифтами, перечисленными в таблице шрифтов, отражает то, что происходит, когда вы вставляете шрифт в системную папку шрифтов с помощью проводника Windows — после этого шрифт автоматически регистрируется в системе.
Также возможно, что регистрация шрифта может происходить с помощью специального действия в вашем MSI (возможно, вы взяли проект у кого-то другого), и в этом случае вы также должны отключить это пользовательское действие.
Некоторая информация о процессе регистрации шрифта приведена здесь: https://web.archive.org/web/20170610101426/http://windowsitpro.com/scripting/trick-installing.-fonts-vbscript-or-powershell-script (воскрес из Wayback Machine ).
По существу:
- Файлы шрифтов, скопированные в папку Fonts через проводник Windows, регистрируются автоматически (операция копирования оболочки запускает процесс регистрации).
- Файлы шрифтов, скопированные непосредственно в папку Fonts с помощью пакетного файла или VBScript, не регистрируются автоматически (для их регистрации используйте COM-объект Shell.Application).
- ОБНОВЛЕНИЕ: сентябрь 2018 г.. Не уверены, что вышеизложенное относится ко всем новым версиям ОС? Я не тратил время на тест.
- Файлы шрифтов, установленные в папку «Шрифты» через MSI, регистрируются до тех пор, пока они перечислены в таблице шрифтов MSI (или они зарегистрированы с помощью настраиваемого действия).
Позвольте мне просто продублировать образец VBScript, чтобы зарегистрировать шрифт по приведенной выше ссылке на случай, если ссылка не работает:
Set sa = CreateObject("Shell.Application")
Set fonts = sa.NameSpace(20)
fonts.CopyHere "C:\tmp\SomeFont.ttf"
в PowerShell (шестнадцатеричный 0x14 = 20 дес):
$sa = new-object -comobject shell.application
$Fonts = $sa.NameSpace(0x14)
$Fonts.CopyHere ("C:\tmp\SomeFont.ttf")
Эти сценарии меня не очень впечатляют, если так можно выразиться. Но они есть :-).
person
Stein Åsmul
schedule
24.10.2017