LoginSignup
7
9

More than 3 years have passed since last update.

Scoopで管理者権限なしにフォントをインストールすることが出来るbucketを作る

Last updated at Posted at 2020-09-28

scoopでWindowsの環境構築を目論んでいるのでいて、プログラミング用のフォントファイルもScoop経由でインストールしたかったのですが、公式のBucketには日本語をサポートしているコーディング向け等幅フォントSource Han code JPがありません。

そこでGitHubで公開されている非公式Bucketなどを見ていたのですが、フォントのインストールについては、どれも管理者権限が必要なものばかりでした。今回は、管理者権限なしでフォントをインストールしたかったので、自分でbucketを作ることにしました。

なお、本記事ではbucketの作り方については、詳しく説明しないので、App Manifests · lukesampson/scoop Wiki · GitHub等を参考にしてください。

TL;DR

  • フォントファイルは、C:\Users\<Username>\AppData\Local\Microsoft\Windows\Fontsに置く
  • レジストリは、HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Fontsに上記フォントファイルのパスを追加する

フォントファイルのコピー先

Windowsでフォントをインストールする場合、全ユーザで使えるフォントファイルはC:\Windows\Fontsに置く必要がありますが、その時に管理者権限が必要です。ログインユーザのみで、使用できれば良い場合は、インストール先にC:\Users\<Username>\AppData\Local\Microsoft\Windows\Fontsが使えます。こちらの場合は管理者権限が不要なので、Scoopでminifestを作る時に、installerでフォントファイルをこちらにコピーするよう記載します。

なので、今回の注意点としては、scoopの実行ユーザしかインストールしたフォントが使えません。

レジストリの登録

フォントファイルを、C:\Users\<Username>\AppData\Local\Microsoft\Windows\Fontsに置いただけでは、フォントは使えません。レジストリに登録する必要があります。よく見るHKLM:\Software\Microsoft\Windows NT\CurrentVersion\Fontsでは、管理者権限が必要になりつかえません。代わりにHKCU:\Software\Microsoft\Windows NT\CurrentVersion\Fontsに書き込みます。HKEY_LOCAL_MACHINE(HKLM)ではなく、HKEY_CURRENT_USER(HKCU)を使うのです。こちらは、管理者権限なしで書き込みが可能でした。

また、レジストリに登録する際の値(Value)は、フォントファイル名ではうまくいかず、インストール先のパスを指定することで上手くいきました。

作ったmanifestファイル

ということで、上記フォントファイルのコピー先レジストリの登録に注意して作ったSource Han code JPのmanifestがこちらになります。uninstallerでは、installerで実施したことの反対をしているだけで、C:\Users\<Username>\AppData\Local\Microsoft\Windows\Fontsからフォントファイルを削除し、レジストリからも削除しています。

source-han-code-jp.json
{
    "homepage": "https://github.com/adobe-fonts/source-han-code-jp",
    "license": "OFL-1.1",

    "version": "2.011",
    "url": "https://github.com/adobe-fonts/source-han-code-jp/archive/2.011R.zip",
    "hash": "0f98beb0a381d9d19067f9b58f65d2dd65c808a3012ac9cb9866e575ad6d2e7f",

    "extract_dir": "source-han-code-jp-2.011R",
    "installer": {
        "script": [
            "Get-ChildItem $dir\\OTF -filter '*.otf' | ForEach-Object {",
            "   $fontdir = \"$env:LocalAppData\\Microsoft\\Windows\\Fonts\"",
            "   New-ItemProperty -Path 'HKCU:\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts' -Name $_.Name.Replace($_.Extension, ' (TrueType)') -Value \"$fontdir\\$($_.Name)\" -Force | Out-Null",
            "   Copy-Item $_.Fullname -destination \"$fontdir\"",
            "}"
        ]
    },
    "uninstaller": {
        "script": [
            "Get-ChildItem $dir\\OTF -filter '*.otf' | ForEach-Object {",
            "   $fontdir = \"$env:LocalAppData\\Microsoft\\Windows\\Fonts\"",
            "   Remove-ItemProperty -Path 'HKCU:\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts' -Name $_.Name.Replace($_.Extension, ' (TrueType)') -Force -ErrorAction SilentlyContinue",
            "   Remove-Item \"$fontdir\\$($_.Name)\" -Force -ErrorAction SilentlyContinue",
            "}"
        ]
    }
}

Scoopでインストールする

あとは、作ったmanifestがあるリポジトリを

> scoop bucket add my-bucket <location of git repo>

で、バケットとして登録し、

> scoop install my-source-han-code-jp

で、インストールが出来るとおもいます。

7
9
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
7
9