概要
通常、Windowsでフォントをインストールする時には下記2パターンがあると思います。
-
%windir%\Fonts
へ直接フォントファイルをドラッグ&ドロップ - フォントファイルをダブルクリックで開き、[インストール]ボタンをクリック(Windows7以降)
ただし、不特定多数のユーザへこの操作をやらせるのは難しい場合があります。
そこで、バッチファイルを叩かせてインストールしてやる方法がありますが、copy
コマンドでフォントファイルをコピーするだけでは実は不十分だったりします。
ドラッグ&ドロップだとWindowsがフォントを認識して勝手にインストールしてくれるんですが、バッチで処理する場合、「copy
コマンドでのコピー」=「インストールされる」ではないようです。
これが原因で過去に一度トラブりました。
参考サイトより引用
実際、「必要なのはフォントを Fonts フォルダーにコピーすることだけで、そのフォントは自動的にインストールされるんだな」とお考えかもしれません。ええ、そのとおりです。(中略)しかし、その場合はオペレーティング システムによってフォントが自動的にインストールされません。(中略)私たちが知る限りでは、プログラムを使用して、Fonts フォルダーに新しいフォントが追加されたことを Windows が認識し、Windows がそのフォントをインストールするようにできる唯一の方法は、(中略)なのです!!
という訳で、以下にスクリプトを使ったインストール方法を示します。
サンプルコード
とりあえずフォルダ構成はこんな感じで
(ユーザに配布する際は適宜工夫してね)
@echo off
rem フォントインストール用のスクリプト呼出
if not exist "%windir%\Fontfile.ttf" (cscript .\FontInstall.vbs Fontfile.ttf)
Const FONTS = &H14&
fontfile = WScript.Arguments(0) '第一引数:フォントファイル名
Set objShell = CreateObject("Shell.Application")
Set objWshShell = CreateObject("WScript.Shell")
Set objFolder = objShell.Namespace(FONTS)
'WScript.echo "現在の作業ディレクトリ= " & objWshShell.CurrentDirectory
objFolder.CopyHere objWshShell.CurrentDirectory & "\Fonts\" & fontfile