.msi ファイルを Linux で扱うツールです.
Ubuntu だととりあえず apt で入りますが, 最新版をビルドして使いたいときもあります.
たとえば, 最新 Windows SDK の展開には msitools v0.100 がいります. Ubuntu 20.04 は v0.100 ですが, 18.04 は v0.97 どまりです.
ただ, v0.100 でも一部壊れるファイルがありました. lessmsi を使うのがよいでしょう.
WINE で lessmsi で msi ファイルを展開する
https://qiita.com/syoyo/items/520bd0fe19c44afeda8b
環境
Ubuntu 18.04(x86_64) を想定します.
手順
何故か無駄に GNOME 関連のライブラリに依存していてつらい
msitools は libgfs-1 に依存しています.
ただ, これはなぜか x86 では apt には存在しません
(apt search libgfs だと, fluid flow solver が選ばれてしまう)
まずは libgfs をビルドします.
gtkdocize, autopoint を求められるので, まずこれらを apt で入れます.
(gtkdocize はドキュメント関連用っぽいので無視できそうだが, 細かく調べるのめんどいのでとりあえずおとなしく使うようにする)
$ sudo apt install gtk-doc-tools
$ sudo apt install autopoint
$HOME/local
にインストールするものとします.
$ ./autogen.sh
$ ./configure --prefix=$HOME/local
$ make
$ make install
msitools
から 0.100 の tar.gz を取得します.
いくつか依存パッケージを先に apt で入れます.
msitools を一度 configure してから依存パッケージいれると,
./configure: line 13820: `GOBJECT_INTROSPECTION_CHECK(0.9.4)'
などとうまくいかないので注意です.
$ sudo apt install uuid-dev libgcab-dev
$ sudo apt install gobject-introspection
libgfs をインストールしたパスの lib/pkgconfig
に PKG_CONFIG_PATH
を通します.
$ PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig ./configure --prefix=$HOME/local
$ make
$ make install
あとは $HOME/local/bin
に PATH を通して完成です
git repo からビルド
git repo では, ビルドシステムが meson に移行しています(そしてビルドドキュメントがない!)
とりあえず meson でセットアップして, いろいろ依存するものを apt で入れればコンパイルできます.
ただ, meson install だと libmsi.so をコピーしてくれませんので, 手動でコピーしておきます.