![見出し画像](https://assets.st-note.com/production/uploads/images/156388467/rectangle_large_type_2_7a6c8a639b13cefd62f273cc9adbf5ac.png?width=1200)
7-ZipのSFX(自己解凍形式)ファイル作成忘備録
7-Zipは、無料でオープンソースの高性能なファイル圧縮・解凍ソフトとして知られています。その機能のひとつに、SFX(Self-Extracting Archive:自己解凍形式)の作成があります。SFXファイルは、解凍ソフトをインストールしていない環境でも実行でき、解凍後に特定のプログラムを自動実行することが可能です。ただし、ソフト上で作成できるのは自己解凍する形式のみでダイアログや解凍後のプログラムの自動実行などは特別な操作が必要です。
この記事では、7-Zipを使ったSFXファイルの作成方法と、その設定方法について解説します。
1. SFX(自己解凍形式)とは?
SFXファイルは、自己解凍形式の圧縮ファイルで、受け取ったユーザーが解凍ソフトを持っていなくてもダブルクリックで解凍できる特徴を持ちます。例えば、インストーラを作成する際や、自動実行プログラムを含むパッケージの配布などで非常に便利です。
自己解凍形式の種類
自己解凍形式には、単純に解凍ソフトが不要な形式から、解凍後にショートカットを作成したり、プログラムを自動実行できる形式までさまざまです。圧縮するソフトによって機能が異なり、インストーラのような動作をするものもあれば、単にファイルを展開するだけのものも存在します。
例えば、7-Zipでは自己解凍形式を作成することが可能ですが、その機能はソフトの持つSFXヘッダーファイルに依存します。7-Zipのソフトでは標準的な自己解凍形式ファイルを作成できますが、SFXヘッダーファイルを変更することで、インストール後に特定のプログラムを自動実行させたり、ダイアログを表示させるなどのカスタマイズも可能です。
7-ZipでのSFXヘッダーとLZMA SDK
7-Zipには、基本的な自己解凍形式を作成するためのSFXモジュールである「7z.sfx」が同封されています。しかし、このモジュールは単純な自己解凍形式を作成するためのもので、複雑なカスタマイズや、Config.txtファイルを用いたダイアログや実行ファイルの指定には対応していません。
カスタマイズを行いたい場合は、7-Zipの公式サイトから「LZMA SDK」の中にあるSFXファイルをダウンロードする必要があります。LZMA SDKには、より高度なSFXモジュールが含まれており、これを使うことで柔軟な設定が可能です。
主なSFXモジュール
モジュール名 説明
7z.sfx:SFXモジュール(GUI版)。7-Zipに同封されている標準の自己解凍形式。
7zCon.sfx:SFXモジュール(コンソール版)
7zSD.sfx:インストーラ用SFXモジュール(GUI版)
7zS2.sfx:小型のインストーラ用SFXモジュール(GUI版)
7zS2con.sfx:小型のインストーラ用SFXモジュール(コンソール版)
これらのモジュールは、LZMA SDKからダウンロード可能です。詳細は7-Zip SDKの公式サイトで確認できます。
2. 7-ZipでのSFXファイル作成手順
7-ZipでSFXファイルを作成するには、次の手順を行います。
2.1. 必要なもの
7-Zip: 最新版をダウンロード・インストールしてください。
7zSD.sfx: 自己解凍形式ファイルを作成するために必要なファイル。これはLZMA SDKの中のbinフォルダの中にあります
Config.txt: SFXファイルの挙動を制御するための設定ファイル。
解凍したい7zファイル:あらかじめ実行したいファイルも含めて7z形式で圧縮しておきます。
2.2. SFXファイルに含めるファイルの準備
SFXファイルに含めたい7zファイルを用意しておきます。例えば、解凍後に自動実行するスクリプトやプログラム、インストールファイルなどです。
2.3. Config.txtの作成
SFXファイルの動作を制御するために、Config.txt という設定ファイルを作成します。ここでは、解凍先や解凍後の処理を指定できます。
Config.txtのサンプル
以下は、ファイルを C:\temp\Chrome に解凍し、解凍後に setting.ini ファイルを実行する設定例です。
;!@Install@!UTF-8!
Title="インストーラ"
BeginPrompt="インストールしますか?"
RunProgram="setup.exe"
;!@InstallEnd@!
Title: SFXウィンドウのタイトルを指定します。
BeginPrompt: 解凍開始前に表示するメッセージを指定します。
RunProgram: 解凍後に実行するプログラムやコマンドを指定します。なお、特殊な置換文字列 %%T を使用すると、一時フォルダ(ファイルが解凍された場所)のパスに置き換わります。解凍パスならなにも指定する必要はありません。
2.4. 7-Zipでファイルを圧縮
次に、圧縮するファイルを準備し、7-Zipで .7z 形式に圧縮します。
圧縮は7-zipのソフトを利用して作成します。
2.5. SFXファイルの作成
圧縮ファイル(例ではarchive.7z)が作成できたら、7-ZipのSFXファイルと結合して自己解凍形式の実行ファイルを作成します。
copy /b 7zSD.sfx + Config.txt + archive.7z Installer.exe
ここがわかりにくいところ
このコマンドが動作する仕組み
copy /b コマンドは、ファイルをバイナリ形式で連結するために使用されます。このコマンドを使用することで、自己解凍形式(SFX)の実行ファイル(Installer.exe)を作成します。
7zSD.sfx: これはSFXヘッダーファイルで、実行可能なプログラム部分を含んでいます。自己解凍形式ファイルを実行した際に、どのように動作するかを決定するコードが含まれています。
Config.txt: これは自己解凍形式ファイルの挙動を制御する設定ファイルです。copy コマンドで 7z.sfx に連結することにより、この設定が実行ファイルに組み込まれ、解凍後の動作が制御されます。
archive.7z: これは圧縮されたファイルそのもので、実行時に解凍されるコンテンツです。このファイルも copy コマンドで 7z.sfx と連結され、最終的な実行可能ファイル(Installer.exe)に組み込まれます。
copy /b コマンドで3つのファイル(7zSD.sfx、Config.txt、archive.7z)をバイナリ形式で結合することにより、1つの自己解凍形式の実行ファイルが完成します。これにより、ユーザーが Installer.exe を実行すると、7zSD.sfxが起動し、Config.txtに記載された挙動を基にarchive.7zの中身を解凍し、必要な処理を実行するという流れになります。
2.6. 実行
作成した Installer.exe をダブルクリックで実行すると、指定したフォルダにファイルが解凍され、解凍後に指定したプログラム(setup.exe)が自動で実行されます。
3. 7-Zip SFX Config.txt 設定項目の詳細
7-Zip SFXにおける Config.txt の各設定項目について、公式リファレンスに基づいて解説します。
![](https://assets.st-note.com/img/1727787876-eQhXFEUTBmcg19HuyMskW3Yn.png?width=1200)
ポイント
RunProgram と ExecuteFile の違い: RunProgram はコマンド全体を指定できるのに対し、ExecuteFile は実行ファイル名のみを指定するシンプルな設定です。両者とも、ファイル解凍後に何らかの処理を自動実行する際に使います。
%%T の特殊な役割: RunProgram で使用できる %%T は、解凍されたファイルが一時的に保存されたフォルダのパスに自動で置き換わります。これにより、解凍したファイルがどこにあるか明示的に指定せずとも、プログラムを実行できます。
解凍先を指定するのはできない?のではと思います。
まとめ
7-ZipのSFX機能は、Config.txtを使って簡単な自己解凍形式ファイルを作成し、解凍後にプログラムを自動実行するなどの基本的な機能を持っています。圧縮されたファイル、SFXヘッダー、Config.txtをバイナリ形式で連結することで、SFX形式の実行可能ファイルが作成されます。
これにより、ファイルの解凍と自動実行を手軽に設定することが可能です。また、より高度なカスタマイズが必要であれば、7-Zipの公式サイトで確認ください。