PACKFILE編集の解説

フリーのWindowsプログラミングツール「HSP」(公式サイト「HSPTV!」)には、実行ファイル内に任意のファイルを埋め込むことができる「PACKFILE」(パックファイル)機能が用意されてます。

実際のところ、HSP3(HSP 3.x)については、プリプロセッサ命令「#pack」or「#epack」を利用した「実行ファイル自動作成」によるファイル埋め込みの方がとても楽なので推奨されてますが、ここではHSP2(HSP 2.x)時代から用意されてる旧式の「PACKFILE編集」の方の注意点などを挙げときますです。

無駄なファイルを実行ファイルにパックしてませんか?

HSPのPACKFILE(パックファイル)編集ダイアログ。くれぐれも無意味なファイルをパックしないよーに! まず、ここで必ず指定しなければならないのが「start.ax」ファイルです。
 これはソースコード(*.hsp/*.as)をHSPだけが理解できる中間コードのデータに変換したファイルで、HSPスクリプトエディタの[HSP]→[START.AXファイル作成]で出力できます。

さて・・・、まさかこれ以外のファイルを指定しちゃってる人がいないでしょうかね。「start.ax」ファイル以外で基本的に許されるのは、こちらのPACKFILE機能のページでも説明してる直利用が可能な「画像ファイル」「音楽ファイル」(WAVEファイルのみ)、「テキストファイル」だけです。

たとえば、HSPのソースコードファイルやモジュールファイル(拡張子が*.hsp/*.asのもの)、その他に「hsprt」、「hsptmp」、「obj」、「packfile」、「hsp3.exe」というようなHSP本体に存在するファイルを指定しちゃってる人・・・、確実にいますよね。(^^;

HSPの付属リファレンス『プログラミングマニュアル1・基本仕様ガイド (hspprog.htm)』の「1.プログラミングガイド」→「実行ファイルの作成方法」と「PACKFILEの編集について」の項目をよ〜く読んでください。これらのファイルを含めて!、なんてなことはいっさい書かれてないはずです。
 メリットがいっさいなく、実行ファイルがムダにでかくなる以外の何者でもないので、リストから外しましょー。(^o^

ちなみに、HSP拡張プラグイン(DLLファイル/HPIファイル)を実行ファイルに埋め込みたいと思ってる人がいるかもしれませんがムリです。配布する際は必ず実行ファイルと同封します。

パックする意味が皆無なファイル
*.hsp、*.as HSPのスクリプトファイル、HSP拡張プラグインのヘッダーファイル、モジュールファイルなど単なるテキストデータ
hsptmp HSPのスクリプトファイルの単なるバックアップ
obj コンパイルの一時データ
packfile 実行ファイル作成に必要な情報が書かれたテキストデータ
*.dll、*.hpi HSP拡張プラグイン
*.mp3、*.avi、*.wmv、
*.mpg、*.wma、*.mid
mmload命令やmci命令はPACKFILE内のメディアファイルの直利用不可 (例外はmmload命令+WAVEファイル

PACKFILE編集した後

HSPスクリプトエディタのPACKFILE編集で「start.ax」ファイルなどを指定したら、[ツール]→[EXEファイル作成]に進んで、出力する実行ファイル名や起動時のウィンドウサイズを指定、実行ファイルを出力します。

[起動時にメインウィンドゥを非表示にする]というオプションを有効にした場合は、スクリプト内でgsel命令を使ってウィンドウを表示する必要があります。具体的には第2パラメータでタイプ1かタイプ2を指定しないとウィンドウが現れません。
 裏ではプログラムが起動してるので、「Ctrl+Alt+Del」キーのタスクマネージャからでないとプログラムを終了させられなくなるので注意!

PACKFILE機能の暗号化

PACKFILE編集のダイアログには、[暗号化]というチェックボックスがあります。これを有効にしてファイルを指定すると、暗号化対象となったファイルはリストに「+」(プラス)マーク付きファイル名で表示されます。

これはパックするファイルを暗号化してHSP製実行ファイル(EXEファイル)に埋め込む機能ですが、具体的にどのような違いがあるのかというと、たとえば下のスクリプトをコンパイルして、「start.ax」ファイルを暗号化した実行ファイルと、暗号化してない実行ファイルをそれぞれ用意してみてください。

	mes "HSPさん、こんにちは〜"

そして、この実行ファイルをたとえばWindowsのメモ帳でわざと開いてみましょう。
 ぐちゃぐちゃと文字化けのようなデータが表示されますが、「start.ax」ファイルを暗号化してない実行ファイルの方は、最後あたりに「HSPさん、こんにちは〜」という文字列を発見できるかと思います。一方、暗号化した実行ファイルの方はこの文字列がいっさい出現しません。

暗号化してない実行ファイル(上)と暗号化した実行ファイル(下)をメモ帳で無理やり閲覧してみると・・・

たとえば、ゲームなどで話を進めていかないと現れない文章があったとすると、「start.ax」ファイルを暗号化してない実行ファイルはストーリーの文字列が丸バレになります。まあ、いきなりメモ帳(テキストエディタ)で実行ファイルを開いてしまう人はあまりいないとは思いますが・・・。

ちなみに、新式の実行ファイル自動作成機能を利用した場合は、start.axはデフォルトで暗号化パックされるようになってます。start.ax以外の個々のファイルは、プリプロセッサ命令「#epack」を利用します。

キーワード de HSP

HSPミニ講座

ポケモン バトリオ

★ Yahoo!経由用ページ : ファイル | フォルダ | メニュー | マウス | ウィンドウ | オブジェクト | 文字列 | システム | 関数 | sendmsg命令 | その他 | サイトマップ | リンク