LoginSignup
11
12

More than 5 years have passed since last update.

スクリプトを利用したフォントのインストール

Last updated at Posted at 2016-03-16

概要

通常、Windowsでフォントをインストールする時には下記2パターンがあると思います。
1. %windir%\Fontsへ直接フォントファイルをドラッグ&ドロップ
2. フォントファイルをダブルクリックで開き、[インストール]ボタンをクリック(Windows7以降)

ただし、不特定多数のユーザへこの操作をやらせるのは難しい場合があります。
そこで、バッチファイルを叩かせてインストールしてやる方法がありますが、copyコマンドでフォントファイルをコピーするだけでは実は不十分だったりします。

ドラッグ&ドロップだとWindowsがフォントを認識して勝手にインストールしてくれるんですが、バッチで処理する場合、「copyコマンドでのコピー」=「インストールされる」ではないようです。
これが原因で過去に一度トラブりました。

参考サイトより引用

実際、「必要なのはフォントを Fonts フォルダーにコピーすることだけで、そのフォントは自動的にインストールされるんだな」とお考えかもしれません。ええ、そのとおりです。(中略)しかし、その場合はオペレーティング システムによってフォントが自動的にインストールされません。(中略)私たちが知る限りでは、プログラムを使用して、Fonts フォルダーに新しいフォントが追加されたことを Windows が認識し、Windows がそのフォントをインストールするようにできる唯一の方法は、(中略)なのです!!

という訳で、以下にスクリプトを使ったインストール方法を示します。

サンプルコード

とりあえずフォルダ構成はこんな感じで
(ユーザに配布する際は適宜工夫してね)
fontsample.jpg

FontInstall.bat
@echo off
rem フォントインストール用のスクリプト呼出
if not exist "%windir%\Fontfile.ttf" (cscript .\FontInstall.vbs Fontfile.ttf)
FontInstall.vbs
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

参考リンク

Hey, Scripting Guy! スクリプトを使用してフォントをインストールする方法はありますか

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12