0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

msitools の Ubuntu 18.04 でのビルドメモ

Last updated at Posted at 2020-06-12

.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 関連のライブラリに依存していてつらい :cry:

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/pkgconfigPKG_CONFIG_PATH を通します.

$ PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig ./configure --prefix=$HOME/local
$ make
$ make install

あとは $HOME/local/bin に PATH を通して完成です :tada:

git repo からビルド

git repo では, ビルドシステムが meson に移行しています(そしてビルドドキュメントがない!)
とりあえず meson でセットアップして, いろいろ依存するものを apt で入れればコンパイルできます.
ただ, meson install だと libmsi.so をコピーしてくれませんので, 手動でコピーしておきます.

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?