2022-08-01

Linux 上で Windows アプリのインストーラ作成

Wine は、オープンソースの Windows API 実装を通じて、主として x86 アーキテクチャ上の Unix 系オペレーティングシステム(POSIX 準拠 OS)において Windows 用アプリケーションをネイティブ動作させることを目標とするプログラム群です。X Window System を利用して、16 / 32 / 64 ビット Windows 向け GUI アプリケーションを動作させることができるほか、MS-DOS 用アプリケーションも動作します

Wikipedia より引用、編集

インストーラ無しで配布されている、とある Windows アプリに対して、Inno Setup を利用してインストーラを作ろうとしたのですが、事情があってこのケースでは Windows PC 上に Inno Setup をインストールできません。やむなく Linux 上の Wine の環境で Inno Setup を動かして、Windows アプリのインストーラを作成しました。

なお Inno Setup は、Jordan Russell 氏によって開発されたフリーソフトウェアのスクリプト駆動型の Windows 向けインストーラ作成システムです [1]

インストーラを作成する際、Inno Setup で使用するスクリプト(.iss が拡張子のファイル。以降、iss ファイルと呼びます。)を用意する必要があるのですが、アプリのファイル数が膨大だったので、手作業ではとてもできません。もちろん *(アスタリスク)でワイルドカード指定はできますが、管理上、使用したくありません。

そこで、Inno Setup を Wine 上で動作させることを前提に、iss ファイルを作成する GUI プログラム (innosetup_utils) を Python/PySide6 で作りました。

下記の環境で動作確認をしています。

Fedora Linux 36 x86_64
wine 7.12-2.fc36.x86_64
Inno Setup 6.2.1 (innosetup-6.2.1.exe)
python3 3.10.5-2.fc36.x86_64
PySide6 6.3.1

このプログラム (innosetup_utils) は、Linux 上で動作するのですが、生成した iss ファイルを Wine で起動した Inno Setup で使用するので、ドライブ番号 Z にあるものとして処理し、さらにパスの区切りを / から \ に変更する必要があります。

Wine から見た Linux のファイルシステムのドライブ番号

Windows アプリのフォルダと必要事項を入力すれば、インストール作成に必要な iss ファイルを出力してくれます。

innosetup_utils の実行例

Inno Setup を起動、作成した iss ファイルを読み込んでコンパイルすれば、対象の Windows アプリのインストーラが出来上がります。

Inno Setup でインストーラ作成(コンパイル)例
Inno Setup 用の iss ファイルと作成してコンパイラ例

作成したインストーラは、Wine 上で動作確認をすることができます。ただし、対象の Windows アプリが Wine 上で動作するかどうかは別の話です。😅

作成したインストーラを Wine で起動した例

こんなマイナーな用途のプログラムですが、Github にレポジトリを作りました。

現在のところ、このプログラム (innosetup_utils) には最低限の機能しかありませんが、マイナーな用途とは言え、個人的にはニーズがあるので、すこしずつ使い勝手の良いものに改善していくつもりです。

参考サイト

  1. Inno Setup

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

0 件のコメント: