自己解凍書庫の作り方

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
popkou

自己解凍書庫の作り方

#1 投稿記事 by popkou »

誰か、自己解凍書庫の作り方を教えてください。
C1000

#2 投稿記事 by C1000 »

hiraさんの"OrangeArchiver"が参考になると思います。(ソースコードが付いています。)
http://hira.hopto.org/ab.htm
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

#3 投稿記事 by hira »

OrangeArchiverには自己解凍書庫のソースは付いてません(^^;;
Oar32.dll のほうには付いています(自己解凍書庫の実質的な内容は同じ)。

ところで、自己解凍書庫を自作するときには解凍部分のアルゴリズムを書かなければなりません(ライブラリを使ってもかまいませんが、別途外部DLL等を必要とするものであってはいけません。環境依存しない、Windowsプレインストール時に入っているようなDLLならOK)。
アルゴリズム部分はここでは省いて、流れだけ解説しておきます。
(自己解凍書庫は基本的に EXEの部分 + 書庫の部分 に分けることができます)

●自己解凍書庫のEXEの部分を作成する
1. GUIでもCUIでもOKなので、解凍先のパスを入力してもらえるようにコーディング。
2. 解凍がリクエストされたら
 a. 自分自身のファイル名を GetModuleFileName() で取得し、それを引数に指定して GetEXESize() を呼び出す(自分自身のEXE部分だけのサイズが得られる)。  b. 自分自身を CreateFile() 等を使ってオープンし、aで取得したサイズ分だけ SetFilePointer() でファイルポインタを進めた後(このときファイルポインタは書庫の先頭を指している)、解凍処理。

●自己解凍書庫の作成
EXE部分と目的の書庫を結合するだけです。
結合部分のコードは省略します。

簡単な流れはこんな感じです。
返信する