如何在Installshield(2011)基本msi项目中禁用字体注册?

时间:2015-05-06 15:14:59

标签: installshield installshield-2011

如何阻止installshield注册字体?

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

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

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

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

3 个答案:

答案 0 :(得分:5)

我找到了suggestion on the Installshield论坛似乎有用。

禁用字体注册:

  1. 转到"自定义操作和序列"
  2. 找到" RegisterFonts"序列下的操作,执行
  3. 设置"条件"到0
  4. Disable font registration

答案 1 :(得分:0)

只想在您的发布中添加 Font Table MSI文件用于指定应在系统上注册的字体

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

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

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

此处有字体注册流程的一些信息:http://windowsitpro.com/scripting/trick-installing-fonts-vbscript-or-powershell-script

<强>实质上

  • 将字体文件复制到&#34; Fonts文件夹&#34;通过Windows资源管理器自动注册(shell复制操作会触发注册过程)。
  • 将字体文件直接复制到&#34; Fonts文件夹&#34;通过批处理文件或VBScript不会自动注册(使用Shell.Application COM对象注册它们)。
    • 更新 2018年9月 - 不确定上述内容是否适用于所有新的操作系统版本?我还没有花时间去测试。
  • 安装在&#34; Fonts文件夹中的字体文件&#34;通过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")

这些剧本不会让我印象深刻,就像那样。但它们是: - )。

答案 2 :(得分:0)

我真的来晚了。

我一直在使用相同的字体(真棒和glyphicons以及来自第三方的其他字体)时遇到相同的问题,并且遇到了自动注册它们的相同问题。

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

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