SAK 図書館
VB 環境編 (その一) セットアップディスク、配布パッケージ作成
■配布パッケージ作成 ・VB6 開発プログラムを FPD、CD-ROM、CD-R、インターネットで配布するには、 プログラム単体を LZH 書庫にパッケージする方法もあるが、VB6 の場合、 ランタイムライブラリと言うプログラム実行に不可欠なモジュールがある。 VB6 のランタイムは細かくわかれており、相互依存関係を含めたランタイム モジュールを手作業でパッケージするのは難しい。 標準的なコンポネーントや DLL しか使用していないなら、雑誌やインター ネット上の VB6 ランタイムを別途入手してセットアップしてもらう方法が 配布パッケージの容量的に有利である。 ・コモンダイヤログ以外のコンポーネントを使用したプログラムについては、 独自にランタイムを含めたパッケージを用意した方が無難である。 このとき、ランタイムを含めたフルパッケージとプログラム固有のモジュー ルを含めたパッケージのふたつを用意すると、バージョンアップ時にプログ ラムモジュールパッケージだけを再配布できるので便利である。 ■ディストリビューションウィザード ・VB6 開発環境に付属している「ディストリビューションウィザード」で、配 布パッケージは作成できる。 尚、スタートメニューの登録、OLE DLL のレジストリセットアップなどを行 う必要のないプログラム単体ベースの配布なら、LHA を単純に使用する方が、 遙かに効率的である。 ディストリビューションウィザードが作成する配布パッケージは、VB6 の動 作環境設定やアンインストールなど市販ソフトレベルの機能を有している。 ・ディストリビューションウィザードでは、通常配布パッケージ(setup.exe を実行するもの) とインタネットからブラウザでダウンロードするものが 作成できる。インタネット配布パッケージは、少しクセがあるように思う。 HTML 上に ActiveX コンポーネントを配置するなど、ウェブ連携では、この 機能は便利である。 しかし、単純にインタネットでパッケージダウンロードを実施するなら、 通常配布パッケージを作成し、LHA でひとつにまとめてアップロードする方 が良い。 ■通常配布パッケージの作り方 1. ディストリビューションウィザードに目的のプロジェクトファイルを指定 して、「パッケージ」ボタンを押す。 2. パッケージスクリプトは、標準のまま次へ。 3. パッケージの形式は、「標準セットアップパッケージ」で、次へ。 4. パッケージフォルダは、作業場所なので、新規フォルダを指定して、次へ。 5. 「含まれるファイル」は、フルパッケージなら、このままである。 手動で特別なファイルを追加することもできる。 もし、VB6 ランタイムを除くのであれば、下の方のリストにある VB6 ランタイムおよび OLE オートメーション VB6JP.DLL はチェックをはずせる。(劇的に容量が小さくなる) 但し、VB6 ランタイムをはずした場合は、事前に VB6 ランタイムがインス トールされていなければ、setup.exe 実行でエラーになる。 ドキュメントに「事前に VB6 基本ランタイムをインストールのこと」と明 記しておくと良いです。 6. Cab ファイルのオプションでは、FPD を使う場合に分割ファイルにできる。 現在は、CD-R や MO、インターネットでの配布が主流なので、標準の単一 の Cab ファイルにするで、次へ。 7. インストール時のタイトルは、setup.exe 実行中のタイトル表示です。 8. スタートメニュー項目では、目的のスタートメニューにプログラムを登録 することができます。 もし、スタートメニューに登録したくないなら、削除ボタンで消せます。 9. セットアップ先は、標準のままで問題ないはずですが、特別に配置を変え る場合は、変更できます。 但し、$(AddPath) のような指定が良いです。 固定ドライブ、フォルダを指定すると、その環境と違う PC にインストー ルできない可能性が高くなります。 10. 共有ファイルは、DLL などアンイストール時に削除するかに関係あります。 他のソフトも使っているモジュールを共有指定しておかないと、アンイン ストール時に削除されてしまい、他のソフトも動かなくなる可能性があり ます。よくわからなければ、標準の設定のまま次へ。 11. 作業フォルダに Support\ ??????.CAB setup.exe Setup.lst ができています。 setup.exe を実行して、セットアップとアンインストールのテストを必ず 実行して下さい。たまにですが、使用コンポーネントの組み合わせによっ て、配布パッケージが正常に作れないバグがあるようです。 12. ??????.CAB、setup.exe、Setup.lst の 3 つのファイルが配布に必要なも のです。インターネット上で配布するには、LHA でワンパッケージにしま す。自己解凍書庫にすれば、更に親切かもしれません。 ■Windows2000、WindowsXP での Path or File Not Found 障害対策 ・管理者ユーザID に日本語が含まれていると、標準のディストリビューショ ンウィザードで作成したインストーラがこけます。 対処法としては、 1. 管理者ユーザID を半角英数字にする 2. TMP 環境変数で半角英数字のフォルダを指定する 3. setup1.exe を日本語フォルダ対応版にコンパイルし直す があります。 ・setup1.exe の修正内容は、マイクロソフトにも公開されていましたが、 うちの setup1.frm ソースと少しオリジナルが違いました。 そこで、うちのオリジナルから次のように修正しました。 (setup1.frm は、検索で見つけると良いです。) '使用する一時ディレクトリを取得します。 gsTEMPDIR = String$(255, 0) lChar = GetTempPath(255, gsTEMPDIR) Dim s As String '** 追加 s = StrConv(gsTEMPDIR, vbFromUnicode) '** 追加 s = LeftB(s, lChar) '** 追加 gsTEMPDIR = StrConv(s, vbUnicode) '** 追加 'gsTEMPDIR = Left(gsTEMPDIR, lChar) ** 注釈 AddDirSep gstrSrcPath gsCABNAME = gstrSrcPath & ReadIniFile(gstrSetupInfoFile, gstrINI_BOOT, gstrINI_CABNAME) gsCABNAME = GetShortPathName(gsCABNAME) gsCABNAME = gstrWinDir & BaseName(gsCABNAME) gsTEMPDIR = gsTEMPDIR & ReadIniFile(gstrSetupInfoFile, gstrINI_BOOT, gsINI_TEMPDIR) AddDirSep gsTEMPDIR ・setup1.frm を修正したら、setup1.vbp を VB6 でオープンしてコンパイル します。(もちろん、VB6 上で setup1.frm を修正しても良いのですが。) このとき、デフォルトのコンパイル先が違いました。 現在、setup1.exe がある場所にコンパイルしないとダメです。 ・新しい setup1.exe が出来たら、配布パッケージそのものも作り直さないと いけません。かなり手間のかかる作業でした。 一応、新配布パッケージのインストールテストは、半角英数字ユーザID と 日本語ユーザID で検証しました。 修正版で VB のセットアップそのものは問題がありません。 但し、条件によって梱包されるデータアクセスコンポーネントのインストーラ に障害がでる場合があります。(これは開発者サイドでは修正不能) 結論として、管理者ユーザID は半角英数字が好ましいと言うより、 そうでないと問題が発生しやすいです。 WindowsXP をお使いの方が今後増えると思いますが、各種ソフトのインスト ールには、半角英数字の管理者ユーザID 使用した方が良いです。 やはり、administrator が馴染んでてベストです。 ■VB 環境編資料
■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料
■VB テクニック編資料