5

如何阻止 installshield 注册字体?

我有许多部署 Web 应用程序的 installshield 项目,它们都具有 GlyphIcons 和 FontAwesome 字体。Installshield 自动向操作系统注册这些文件(*.ttf、*.eot、*.otf)。

这是一个问题,因为无法删除该文件以进行卸载或升级。

此处此处的说明不起作用,因为这些字段根本不存在于我的 installshield/project 类型版本中。

是否有另一种方法可以在不重命名文件的情况下禁用此行为?

4

3 回答 3

6

在 Installshield论坛上找到了一个似乎可行的建议。

要禁用字体注册:

  1. 转到“自定义操作和序列”
  2. 在 Sequences 下找到“RegisterFonts”操作,执行
  3. 将“条件”设置为 0

禁用字体注册

于 2016-02-02T13:30:23.910 回答
0

我真的迟到了。

我在使用相同的字体(真棒和字形图标以及来自第 3 方的其他字体)时遇到了同样的问题,并且遇到了同样的问题,即它们被自动注册。

您必须从直接编辑器部分下的字体表中手动删除它们。

请参阅此 HOWTO: https ://flexeracommunity.force.com/customer/articles/en_US/HOWTO/Installing-Fonts-Without-Registering-Them-in-the-Registry

于 2019-02-27T20:15:27.447 回答
0

只想补充一点,您发布的 MSI 文件中字体表用于指定应在系统上注册的字体

此处添加的字体条目将在系统上注册字体。您可以尝试从该表中删除条目以禁用字体注册。检查您的最终发行版 MSI,而不是您的 ISM(Installshield 源文件)。

对字体表中列出的字体进行的注册反映了当您使用 Windows 资源管理器将字体粘贴到系统的字体文件夹中时发生的情况 - 然后该字体会自动在系统上注册。

字体注册也有可能通过您的 MSI 中的自定义操作进行(也许您从其他人那里接管了项目),如果是这种情况,您也必须禁用该自定义操作。


这里有一些关于字体注册过程的信息:http : //windowsitpro.com/scripting/trick-installing-fonts-vbscript-or-powershell-script(从 Wayback Machine 复活)。

本质上

  • 通过 Windows 资源管理器复制到“字体文件夹”的字体文件会自动注册(shell 复制操作会触发注册过程)。
  • 通过批处理文件或 VBScript 直接复制到“字体文件夹”的字体文件不会自动注册(使用 Shell.Application COM 对象注册它们)。
  • 更新2018 年 9 月- 不确定上述内容是否适用于所有新的操作系统版本?我没有花时间去测试。
  • 通过 MSI 安装到“字体文件夹”的字体文件只要在 MSI 的字体表中列出(或通过自定义操作注册),就会被注册。

让我复制示例 VBScript 以从上面的链接注册字体,以防链接失效:

Set sa = CreateObject("Shell.Application")
Set fonts  = sa.NameSpace(20)
fonts.CopyHere "C:\tmp\SomeFont.ttf"

在 PowerShell 中(十六进制 0x14 = 20 dec):

$sa =  new-object -comobject shell.application
$Fonts =  $sa.NameSpace(0x14)
$Fonts.CopyHere ("C:\tmp\SomeFont.ttf")

这么说,那些脚本并没有给我留下太多印象。但他们在那里:-)。

于 2017-10-24T19:10:25.230 回答