scoopで独自パッケージを作成する

プログラミング

事前準備

bucket作成

公開することを考えて適当な名前でフォルダを作成し、その中で作業します。ここでは「C:\Users\polar-bear\scoop\buckets\scoop-polarbear-tools」で作業しました。

デバッグ用Alias設定

scoopはマニフェストファイルという設定ファイルからインストールすることができる機能があるようです。マニフェストファイルを上記bucketに置き、指定して実行します。このとき、入れたり消したりを繰り返すのを1つのコマンドで実施できるようにAliasを設定します。

scoop alias add reinstall 'scoop uninstall $args[0]; scoop install $args[0]' 'Uninstall and then install app'

使用例は以下の通りです。

scoop reinstall polarbear-tools/clibor

マニフェストファイル作成

最小構成

{
        "version": "2.1.2",
        "url": "https://dforest.watch.impress.co.jp/library/c/clibor/10713/clibor.zip",
        "bin": "Clibor/Clibor.exe"
}

スタートメニューに表示させる

{
        "version": "2.1.2",
        "url": "https://dforest.watch.impress.co.jp/library/c/clibor/10713/clibor.zip",
        "bin": "Clibor/Clibor.exe",
        "shortcuts": [
                [
                        "Clibor/Clibor.exe",
                        "Clibor"
                ]
        ]
}

ハッシュ値を設定する

ダウンロードしたものが正しいかを調べるためにハッシュ値を設定します。ちなみに、ここでは窓の杜からダウンロードしたものを調べました。

{
        "version": "2.1.2",
        "url": "https://dforest.watch.impress.co.jp/library/c/clibor/10713/clibor.zip",
        "hash": "7c904488a12f03e71b153aacaf3ae355cc5d19199799466370af2b8a5add17ce",
        "bin": "Clibor/Clibor.exe",    
        "shortcuts": [
                [
                        "Clibor/Clibor.exe",
                        "Clibor"
                ]
        ]
}

(参考)コマンドプロンプトでハッシュ値を調べる方法

certutil -hashfile clibor.zip SHA256

SHA256 hash of clibor.zip:
7c904488a12f03e71b153aacaf3ae355cc5d19199799466370af2b8a5add17ce
CertUtil: -hashfile command completed successfully.

GitHubで公開

今回作成したものは以下に公開しました。

https://github.com/takatamu/scoop-polarbear-tools

以下のようにコマンドを実行するとbucketを追加し、今回作成したソフトウェアをインストールすることができます。

scoop bucket add polarbear-tools https://github.com/takatamu/scoop-polarbear-tools.git
scoop install clibor

トラブルシューティング

Can't shim 'app_name': File doesn't exist.

マニフェストファイルの記載が間違っている可能性があります。このエラーが発生したとき、scoop配下以外の場所でマニフェストファイルを作成し、binの設定が「Clibor/Clibor.exe」でした。shimフォルダがscoop配下にあり、そこにexeが集約されているように見えますが、ここにzipから抽出したexeを置けなかったのが原因だと思われます。binの記述をそのままにするのであれば、マニフェストファイルの置き場所をscoop/bucket配下に置いたほうが良いかと思います。

参考

Scoopを使ったWindows環境構築のススメ - Super!!