Windows
C#

フォントをインストールする

More than 1 year has passed since last update.

仕事で自作のセットアッププログラムの中から Windows にフォントをインストールする必要が出てきた。
最近はフォントフォルダにコピーするだけではダメで、レジストリに登録する必要があるみたい。とりあえず見よう見まねでレジストリに登録するようコードを書いてみたけど何故だか上手くいかず、結局、Shell.Application をOLEオートメーション(って今でも言うの?)で操作する方法で何とか解決できた。

以下はそのサンプル。

sample.cs
var font_path = @"C:\PATH\TO\FONT.TTF";
if (File.Exists(font_path))
{
  Type instanceType = Type.GetTypeFromProgID("Shell.Application");
  dynamic shellApplicaition = Activator.CreateInstance(instanceType);
  dynamic folder = shellApplicaition.Namespace(Path.GetDirectoryName(font_path));
  dynamic folderItem = folder.ParseName(Path.GetFileName(font_path));
  folderItem.InvokeVerb("Install");
}
else
  MessageBox.Show("File not exist");