DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

5.おまけのアーカイバ選び

インストーラにはそれ自体で単一のEXEパッケージを作成し、それを実行することでインストールが行えるというものも少なくありません。しかしインストーラ自体にそのような機能がなかったとしても、適当なアーカイバを使うことにより、同じようなことができるようになります。そのために必要なアーカイバの機能には次のようなものがあげられるでしょう。

  1. 自己解凍(展開)書庫が作成できる。
  2. 一時フォルダに解凍できる。
  3. 指定したファイルを実行し、終了後、解凍したファイルを自動的に削除する。

これらのことができるアーカイバで作成された自己解凍書庫であれば、エンドユーザが意識することなく、自然に単一のEXEファイルのみでインストールをすることが可能となるでしょう。

次にこれらの機能を持ったアーカイバを紹介します。

IExpress 2.0 (Microsoft作)

CAB書庫を作成するツールで、Windows 2000、Windows XPに標準でインストールされているようです。Windowsのシステムディレクトリにある"iexpress.exe"という名前のものがそれです。意外と多機能なため、なかなか使えます。実行するには「ファイル名を指定して実行」で「iexpress」と入力し「OK」をクリックします。

設定はウィザード形式で行われます。メッセージは英語で表示されますが、入力やファイル名には日本語が問題なく使えるようです。

日本語版は、Internet Explorer 管理者キットに含まれているようです。(2010/3/26 追記)

次に簡単な使用例を示します。

  1. "Create new SelfExtraction Directive file."を選び、「次へ」をクリック。
  2. "Extract files and run an installation command"を選び、「次へ」をクリック。
  3. Package title(「○○のインストール」など、ダイアログウィンドウのキャプションに使われる)を入力し、「次へ」をクリック。
  4. Confirmation promptを使うかを決める。解凍前に「○○をインストールします。よろしいですか?」のようなメッセージボックスを表示させたければ"Prompt user with:"を選び、表示させる文章を入力する。表示させない時は"No prompt"を選ぶ。
  5. License agreement(使用許諾契約)を表示させる時は"License agreement"で"Display a license:"を選び、その内容が書かれたテキストファイル名を入力する。表示させない時は"Do not display a license."を選ぶ。
  6. Packaged filesで書庫に入れるファイルを選択する。"Add"でファイルをリストに追加する。
  7. Installer Program to Launchの"Install Program"で解凍後に実行するインストーラのファイル名を指定します("Setup.exe"など)。"Post Install Command"ではインストール終了後実行するコマンドを入力します。
  8. Show windowsではインストーラのウインドウをどの状態で表示するか指定しますが、Defaultを選べば問題ないでしょう。
  9. Finished messageではインストール終了後表示されるメッセージを指定します。"No message."で問題ないでしょう。
  10. Package Name and Optionsで作成する書庫ファイル名を指定します。Optionsは指定しなくて問題はないでしょう。
  11. Configure restartではインストール後システムを再起動するかを指定します。その必要がなければ"No restart"を選択します。
  12. 今までの設定をファイルにセーブするには"Save SelfExtraction Directive (SED) file:"を選択し、そのファイル名を指定します。SEDファイルをセーブしておくと次回からはそのファイルを使って簡単に書庫を作成することが出来ます。
  13. 最後にCreate packageで自己解凍書庫が作成されます。
  14. 一度SEDファイルを作成すると次回からはこのファイルを使って書庫の作成が可能です。IExpress起動直後の画面で"Open existing SelfExtraction Directive file:"にそのファイルを指定し、次の画面で"Create Package"を選ぶことにより簡単に書庫が作れます。また、"iexpress /N (SEDファイル名)"という風にIExpressを起動することによりすぐに書庫の作成が可能となります。

7-Zip (Igor Pavlovさん作) - フリーウェア

高い圧縮率で注目されている7z形式に対応したアーカイバ。7z形式の自己解凍書庫の作成が可能。

現在の7-Zip(バージョン2.30Beta23)では、インストーラ用の自己解凍書庫を作成するには7z形式の書庫を作成した後に専用のSFX modulesと設定を書いたテキストファイルをこの書庫に結合させる必要があり、かなりめんどくさいことになります。その方法を簡単に説明しておきます。

  1. 7-Zipで7z形式の書庫を作成する。
  2. 下記のようなテキストファイルを作成する。 文字コードはUTF-8で保存する。Titleでダイアログのタイトル、BeginPromptで解凍前に表示するメッセージ、RunProgramで起動させるインストーラのファイル名を入力する。RunProgramで"%%T"という文字を使うとファイルが解凍された一時ディレクトリ名に置き換えられる。

    ;!@Install@!UTF-8!
    Title="○○のインストール"
    BeginPrompt="○○のインストールを開始します。よろしいですか?"
    RunProgram="Setup.exe"
    ;!@InstallEnd@!

  3. コマンドプロンプトで次のようなコマンドを実行し、3つのファイルを結合する。7zS.sfxは7-Zipをインストールしたフォルダにある。(7zS.sfxのファイル名)は (7zSD.sfxのファイル名)でもよい。 7zS.sfxはMSVCRT.dllを使用しないが、7zSD.sfxは使用する。

    copy /b (7zS.sfxのファイル名) + (2で作成したテキストファイル名) + (1で作成した書庫ファイル名) (作成する自己解凍書庫名)

SFX modulesはUPXにより圧縮可能ということで、さらにサイズを小さくすることも出来ます。一応7zS.sfxと7zSD.sfx(ver 2.30.23.0)をUPXにより圧縮したものをこちらにおいておきます(ファイル名はそれぞれ7zSC.sfx、7zSDC.sfxとなっています)。

なお、7-zip32.dllを使用すれば、上記のような面倒なことをすることなく、簡単にタイトル、開始メッセージ、実行コマンドなどを設定できます。Explzhなどの統合アーカイバDLL対応のアーカイバを使用して圧縮するときに、自己解凍形式に「7-ZIP32.DLL内蔵版」を選択すれば、SFX設定ダイアログが表示されますので、ここで入力できます。なお、「実行コマンド」が「RunProgram」で、「実行ファイル」が「ExecuteFile」です。(2010/3/26 追記)

Cab32.dll(宮内邦昭さん作) - フリーウェア

「標準の解凍先フォルダ」に"%temp%"、「解凍時に解凍先フォルダを問い合わせない」にチェックを入れ、「解凍後、実行または開くファイル名」にインストーラのファイル名(例えば"setup.exe")、「プログラム終了後、解凍されたファイルを削除する」にチェックを入れて、自己解凍形式書庫を作成します。

参考:ディストリビューションウィザードで作成した「勝手にビューア Ver 0.62 フルセット版」(全ファイル合計2,277,768バイト)を圧縮した時のファイルサイズ = 2,245,772バイト

WinRar(Eugene Roshalさん作) - シェアウェア(4,200円)

WinRarはシェアウェアですが、かなり優れたアーカイバです。圧縮率も高いです。

「書庫にコメントを付加」で次のような文を入力して、自己解凍書庫を作成します。

TempMode
Setup=インストーラのファイル名(例えば"setup.exe")

注意:"Setup=setup.exe"とした場合、アーカイブと同じフォルダに"setup.exe"というファイルがあると、その"setup.exe"が実行されてしまいます。

参考:ディストリビューションウィザードで作成した「勝手にビューア Ver 0.62 フルセット版」(全ファイル合計2,277,768バイト)を圧縮した時のファイルサイズ = 2,209,316バイト

GCA(鶴田真一さん作) - フリーウェア

あまり知られていないアーカイバだと思いますが、かなりの優れものです。

「自己展開オプション」の「詳細設定を有効」にチェックを入れ、さらに「詳細設定」で「GCAを非表示」にチェックを入れ、「起動させる実行ファイルとコマンドの指定」でインストーラのファイル名(例えば"setup.exe")を指定し、「自動的に作業領域を作成して・・・」にチェックを入れて自己展開形式書庫を作成します。

注意:「起動させる実行ファイルとコマンドの指定」を"setup.exe"とした場合、アーカイブと同じフォルダに"setup.exe"というファイルがあると、その"setup.exe"が実行されてしまいます。

(04/12/31追記:DGCAというのが新しくできたようです。)

参考:ディストリビューションウィザードで作成した「勝手にビューア Ver 0.62 フルセット版」(全ファイル合計2,277,768バイト)を圧縮した時のファイルサイズ = 2,308,790バイト(LZX Lebel21)

SFX Maker(David Cornishさん作) - フリーウェア

開発とサポートを終了したということです。(04/12/31 追記)

これはZIP書庫を自己解凍書庫に変換するためのソフトです(新しくZIPファイルを作ることも可能です)。さすがそれ専用ということがあって、機能が多彩です(ファイルの分割なども可能)。

設定は複雑になりますが、「User Interface」でダイアログが表示しないようにし、「Archive Extraction」の「Default Extraction Path」に"%temp%\"を入力し、「Automatically extract files」を有効にし、「Existing Files」で「Always overwrite」を選択し、「Post-Extraction」では「Show success message after extraction」を無効、「Run command line after extraction」に「{P}\setup.exe」などと入力し、「Remove extracted files when program terminates」を有効にしておけば、大丈夫なのではないかと思います。

このソフトは基本的に日本語が使えません。このソフトにはレジストリからフォルダ名を読み込んでそのフォルダにファイルを展開出来るという、ソフトのバージョンアップの際にはとても使える機能があるのですが、残念ながらレジストリのキーが日本語のときは読み取ることが出来ないようです。しかし日本語のフォルダに展開することは問題なく出来るようです(文字は化けます)。(01/9/6追加)

参考:ディストリビューションウィザードで作成した「勝手にビューア Ver 0.62 フルセット版」(全ファイル合計2,277,768バイト)を圧縮した時のファイルサイズ = 2,229,051バイト

7.その他

そのほかにWinZip Self-ExtractorやWinAceのようなソフトでもできるのかもしれませんが、使ったことがないので分かりません。


トップページに戻る

メニューに戻る