Open9
Zstd,lz4といった高性能なアルゴリズムを利用した自己解凍ファイルを作る
ファイルを配布するときにZstdやLZ4を使いたいが、利用する側の人間が対応したアーカイバを使っているとも限らないので、
汎用的なツールを作りたい
とりあえずGo で
embed を使ってアーカイブを埋め込んだバイナリを作成するツールを書いた
(まだバグがあるけど)
実験は成功ということで、使用するライブラリや仕様を考えていこう
Tarとlz4,zstdに対応したライブラリがあったが、
不要なファイルができるな
メモリに圧縮できない
それぞれでライブラリを確保したほうがいいかも
あとバイナリサイズを小さくできないだろうか
ビルドフラグでもう少し縮むかと思ったが思ったより縮まらないようだ。
未圧縮のファイル+5MBくらいになる
まぁそれが問題になるようなサイズのファイルを圧縮するなら自己解凍zipでいいと思う
ただ、メモリで圧縮とかの修正を行うなら
Rustか何かで書き直したほうがいいだろう。
Rustも言語機能で実行ファイルへのデータ埋め込みができるはずだ
Rustで自己解凍ファイルを作ってみたがいい感じだ
バイナリサイズは+500KBですむ
あとはこれを生成するコードを書くだけだ
ビルドスクリプトとしてアーカイブ生成プログラムを書いたら
思った以上に簡単に作れた。
引数とかを整備してリリースしよう