うどん戦争

体は麺で出来ている。血潮は出汁で、心は醤油。

Windowsでインストーラーを作る(下調べ)

Windows上で使えるインストーラーファイルには、大きく分けて以下の3種類ある。

  • EXEファイル
  • MSIファイル
  • MSIXファイル

(1) EXEファイルのインストーラ

昔ながらのEXEファイルのインストーラー。よく使われている作成方法は、

NSISを使って作る

公式サイト

OSSや商用で広く使われている。一番メジャーっぽい。スクリプトにかなりクセがあって使うのが面倒くさい (関数呼び出し時は引数をPUSH/POP命令で渡すなど)。

スクリプトプラグインを使えばかなり複雑なことができる。例えば、最初はユーザー権限で起動しておいて、インストール先に応じて管理者権限に昇格したりなど。

Inno Setupを使って作る

公式サイト

VSCodeインストーラー作成に使われている。NSISに比べるとスクリプトにクセがなく使いやすそう。

ちなみにVSCodeの自動アップデートは inno-updater というツールで行っているっぽい。VSCode以外の自動アップデートにも利用できるかどうか不明。

Install Shieldを使って作る

有料。昔はよく使われていた。今はマイナーっぽい?

Qt Installer Framework (Qt IFW)を使って作る

Qt SDKインストーラー作成に使われているインストーラーツール。Qtで作ったプログラム以外でも使えるっぽい?自動アップデートに対応している。

イチから自分で作る

インストーラーのプログラムを自社で書いて作ったら、HDDの中身を消しちゃうバグを混入させて騒ぎになったゲームがあったらしい (https://castaneai.hatenablog.com/entry/mizuiro-uninstaller)。使いにくくても既存のインストーラー作成ツールを使った方が良さそう。

自動アップデートや修正パッチインストーラーみたいな特殊なものを作る場合は、自分で作っている所が多いっぽい?でもアップデート処理にバグがあってHDDの中身を消しちゃうゲームもあったらしい (https://www.4gamer.net/games/120/G012075/20130906098/)。

(2) MSIファイル

広く使われているMSIファイルのインストーラー。Windows 2000の頃から使われている。拡張子には .msi (インストーラー)と .msp (修正パッチインストーラー) がある。

資料: The Definitive Guide to Windows Installer (洋書 / 米Amazon)

WiX Toolkitを使って作る

公式サイト

インストーラー作成のためのCLIツール群。インストーラーの設定は拡張子 ".wxs" のXMLファイルで記述する。WiX Toolkitをインストールしたら、インストール先の bin フォルダ (%WIX%\bin) に自分でパスを通して使う。

このサイトがすごく詳しい (http://www.02.246.ne.jp/~torutk/windows/wixandwixedit.html)。

WinEditを使って作る

公式サイト

WiX Toolkit用のXMLを作成するためのGUIツール。事前にWiX Toolkitをインストールしてから使う。

(3) MSIXファイル

公式サイト

Windows 10 バージョン1709以降でサポートされた新しいインストーラーファイル形式。UWPアプリ/ネイティブアプリどちらのインストールも可能。アプリはユーザーがアクセスできない特殊フォルダ %ProgramFiles%/WindowsApps/ の下にインストールされる。

インストーラー作成時にコードサイニング証明書が必要だが、証明書は通常は法人でないと発行できないのと、取得・維持に年間数万の費用が必要になる (通常は企業の部門ごとに証明書を1つ用意しておき、その部門で作成するアプリは全て同じ証明書で署名する)。個人やOSS、小規模なビジネスの場合は通常は自己署名で作成することになり、インストール時にSmartScreenで警告が表示される(ある程度ダウンロード数が増えると消えるらしい)。有名な無料SSL認証局Let's Encryptはコードサイニング証明書には対応しない(参照: Let's Encrypt - Do you support Code Signing)。

一応Windows 7~8.1でも、MSIXファイルを実行するための MSIX Coreというアプリをインストールすれば使うことができるらしい。でもインストール方法をユーザーに説明するのが面倒くさい。

MSIX Packaging Toolを使って作る

MSIXファイルを作るためのツール (https://docs.microsoft.com/ja-jp/windows/msix/packaging-tool/create-app-package)。

Visual Studio 2019で作る

Visual Studio 2019でアプリのビルド時にMSIXパッケージを作成することもできる (https://docs.microsoft.com/ja-jp/windows/msix/package/packaging-uwp-apps)。

参考動画: How to create an MSIX package with Visual Studio - YouTube