Как отключить регистрацию шрифтов в базовом msi-проекте Installshield (2011)?

Как запретить installshield регистрировать шрифты?

У меня есть несколько проектов installshield, в которых развертываются веб-приложения, и все они содержат шрифты GlyphIcons и FontAwesome. Installshield автоматически регистрирует эти файлы (*.ttf, *.eot, *.otf) в операционной системе.

Это проблема, потому что файл нельзя удалить для удаления или обновления.

Инструкции здесь или здесь не работает, так как эти поля просто не существуют в моей версии типа installshield/project.

Есть ли другой способ отключить это поведение без переименования файлов?


person reckface    schedule 06.05.2015    source источник
comment
Настоящей проблемой здесь является отказ Windows разрешить вам удалить файлы шрифтов. Мне пришлось загрузиться в командную строку восстановления, чтобы удалить их.   -  person Colin Young    schedule 07.07.2015
comment
FWIW, отключение действия RegisterFonts не решает проблему.   -  person Colin Young    schedule 21.07.2015
comment
Если вы удалите шрифт из Windows, вы можете переименовать файл в папке шрифтов вашего приложения или переместить его, но, как вы сказали, вы не можете удалить его до перезагрузки.   -  person reckface    schedule 25.07.2015
comment
В нашей ситуации мы не смогли удалить шрифты. Это действительно требовало консоли восстановления (нет разрешения на выполнение параметров удаления при перезагрузке). Однако мне удалось его устранить. Выяснилось, что проблемные шрифты находились в папках, которые были удалены, но остались в артефактах сервера сборки (таким образом, они были включены в установщик), и имело место пользовательское действие, которое не выполнялось, из-за чего они оставались позади. Исправление обоих из них заставило проблему уйти.   -  person Colin Young    schedule 25.07.2015
comment
Я только что добавил дополнительный ответ. Одна вещь, которую стоит попробовать, — это проверить таблицу шрифтов в MSI-файле вашей версии, чтобы узнать, перечислены ли в ней какие-либо шрифты, которые нужно зарегистрировать в системе. Если это так, удалите шрифты из этой таблицы и проверьте, решает ли это проблему.   -  person Stein Åsmul    schedule 24.10.2017


Ответы (3)


Я нашел предложение на форумах Installshield, которое, похоже, работает.

Чтобы отключить регистрацию шрифта:

  1. Перейдите в «Пользовательские действия и последовательности».
  2. Найдите действие «RegisterFonts» в разделе «Последовательности», «Выполнить».
  3. Установите «Условия» на 0

Отключить регистрацию шрифта

person reckface    schedule 02.02.2016
comment
спасая жизни, одну за другой - person Griknok; 28.09.2016

Я действительно опаздываю на игру.

У меня были те же проблемы с теми же шрифтами (потрясающие, глификоны и другие от сторонних производителей), и у меня была такая же проблема с их автоматической регистрацией.

Вы должны вручную удалить их из таблицы шрифтов в разделе Direct Editor.

См. HOWTO: https://flexeracommunity.force.com/customer/articles/en_US/HOWTO/Installing-Fonts-Without-Registering-Them-in-the-Registry

person Max    schedule 27.02.2019

Просто хочу добавить, что таблица шрифтов в вашем выпуске файл 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