我想在安装我制作的软件期间在主机(运行 Windows)上安装 TTF 字体。在 Windows 上安装字体意味着两件事:
- 复制 c:\windows\fonts 中的 TTF 文件。这很容易做到。
- 注册字体是:更新 Windows 注册表以更新其字体列表。我的问题是:如何使用 install4j 做到这一点?
提前感谢您的帮助!
好吧,我已经“艰难地”做到了,但它确实有效。这是我的代码:
String fontRegKey;
if (Util.isWindows9X())
{ fontRegKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Fonts"; }
else
{ fontRegKey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts"; }
String [] fontFilesNames = new String[]
{"braille_tbfr2007_b-2.ttf","BrailleTBFr2007INSHEAb_thermo.ttf","LouisLouis.ttf","LouisLouisThermo.ttf"};
String [] fontNames = new String[]
{"Braille TBFr2007 INS HEA (TrueType)","Braille TBFr2007 INS HEA thermo (TrueType)",
"LouisLouis Braille (TrueType)","LouisLouis Braille Thermo (TrueType)"};
for (int i=0 ; i<fontNames.length ; i++)
{
boolean write = WinRegistry.setValue(RegistryRoot.HKEY_LOCAL_MACHINE, fontRegKey,fontNames[i], fontFilesNames[i]);
}
if (Util.isAtLeastWindowsXP()) //security : delete system font cache
{
File sd = WinFileSystem.getSystemDirectory();
File f = new File (sd.getAbsoluteFile()+"\\FNTCACHE.dat") ;
if (f.exists()) {f.delete();}
}
return true; //mandatory for the script
最后三件事:
这是脚本是我在安装程序的完成屏幕中放置的运行脚本操作。
请务必仅在 Windows 环境中运行此脚本,因为您的安装程序会在其他系统下崩溃。
这对于 WinXP来说似乎是不必要的,但对于 Win7 来说是必不可少的,因为安装后可以在字体列表中访问字体。
请参阅此博客文章,了解如何以编程方式安装字体。您将使用“运行可执行文件”操作执行上述“fontinst.exe”可执行文件。