2

私が作成したソフトウェアのインストール中に、ホストコンピューター (Windows を実行している) に TTF フォントをインストールしたいと考えています。Windows にフォントをインストールするということは、次の 2 つのことを意味します。

  • c:\windows\fonts にある TTF ファイルをコピーします。それは簡単です。
  • 次のフォントを登録します: Windows の Windows レジストリを更新して、そのフォント リストを更新します。私の質問は次のとおりです: install4j でこれを行うにはどうすればよいですか?

助けてくれてありがとう!

4

2 に答える 2

2

まあ、私はそれを「難しい方法」でやりましたが、うまくいきます。これが私のコードです:

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

最後に 3 つのこと:

  • これはスクリプトであり、インストーラーの[完了] 画面に配置したスクリプトの実行アクションです。

  • 他のシステムではインストーラーがクラッシュするため、このスクリプトは必ず Windows 環境でのみ実行してください。

  • これはWinXPでは不要のようですが、Win7ではインストール後にフォント リストでフォントにアクセスできるようにするために不可欠です。

于 2013-02-05T15:46:56.493 に答える
1

プログラムでフォントをインストールする方法については、このブログ投稿を参照してください。上記の「fontinst.exe」実行可能ファイルを「実行可能ファイルの実行」アクションで実行します。

于 2013-02-04T09:49:22.250 に答える