- ベストアンサー
VB6.0(SP5)で作成したアプリの配布について
”VB6.0(SP5)” で作成したアプリケーションの配布にあたって、お伺いしたいことがあります。 客先から「今回のアプリのインストール後に、既存のVBシステム等に障害が発生しないように」と厳しく通達されています。(当然ですが…) しかし、インストールするPCは千差万別。 どのようなシステムが既存しているかはそれぞれに違いますし すべてのPCに完璧な動作保障は無理なのでは?と考えます。 (こんなことは言ってはいけないんですけど…) そこで「このファイルがある場合はインストールしないように」という制限事項を付けられれば、とは思うのですが そのような判断は可能でしょうか? ”○○.DLLがあるからこれはVB4.0のシステムが入ってる!”等と 判断できるものなのでしょうか? なにかご存知の方、良い案をお持ちの方 いらっしゃいましたらご教示いただけないでしょうか? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>すべてのPCに完璧な動作保障は無理なのでは?と考えます。 おっしゃる通りだと思います。 ただ、極力既存のVBシステムに影響を与えない方向でインストールすることは可能かもしれません。 (ただし、今回インストールするアプリケーションの動作は保証されないでしょうけど) 配布メディアをディストリビューションウィザードで作る場合は、setup.lstを弄ったりディストリビューションウィザード自体を弄ったりすることでカスタマイズが可能です。 ...\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1 がディストリビューションウィザードの本体です。 (カスタマイズする時はフォルダごとバックアップを取った上でやりましょう) >”○○.DLLがあるからこれはVB4.0のシステムが入ってる!”等と判断できるものなのでしょうか? も(やろうと思えば)可能ですし、所謂"DLL Hell"を極力避けるなら、必要なDLLを全てEXEと同じフォルダ(アプリケーションフォルダ)に配置すればいいだけですね。 これは、DLLの検索順がアプリケーションフォルダ→システムフォルダとなっているためで、これを利用してパッチを当てているソフトも多いのです。 詳しくはLoadLibrary()のヘルプを読んでみてください。 問題はActiveX DLLやOCXなどレジストリに登録する必要があり、かつ下位やバージョン違いのモジュールを配布する必要がある場合ですね。 とにかく、配布メディアのsetup.lstを見て配布される予定のファイルとその種類、レジストリ登録の有無を調査してからになると思います。
その他の回答 (1)
- neKo_deux
- ベストアンサー率44% (5541/12319)
昔からの"DLL Hell"と言われている問題ですね。 > ”○○.DLLがあるからこれはVB4.0のシステムが入ってる!”等と > 判断できるものなのでしょうか? これは非常に難しいです。 上位互換という大義のために、違うバージョンの部品が同じファイル名で配布されています。 システムに尋ねてみるにしても、インストーラ経由でシステムディレクトリに入っている分は検出できますが、オンラインソフトなどであちこちに置かれたものは対象外で、そちらがシステムに読み込まれる/読み込まれないのも、その時々のアプリケーションの起動順によって決まったりします。 Vectorなどで配布されるオンラインソフトですと、 「このソフトを使用するには、VB6.0のランタイムが必要です。」 と注意書きを施して、ユーザーに自己責任でランタイムのインストールを行ってもらう方法が主流です。 製品の場合は動作環境にでも書いてしまうとかしか逃げ道が無いかも。
お礼
ありがとうございます。 > 注意書きを施して、ユーザーに自己責任でランタイムのインストールを行ってもらう方法が主流です。 本当にその通りなのです。 ですが、諸般の事情により「ユーザーの自己責任」が問えないんですよ(泣) 「開発元責任」が重視されてしまって 何か問題があったら当方へ苦情がきちゃうんですよね~。 うまい逃げ道が見つかればいいんですが…
お礼
ありがとうございます。大変勉強になります。 配布メディアはディストリビューションウィザードで作成します。 ウィザードで設定できるDLL等のセットアップ先は(AppPath)としているのですが… > 問題はActiveX DLLやOCXなどレジストリに登録する必要があり、かつ下位やバージョン違いのモジュールを配布する必要がある場合ですね。 そこなんです! > とにかく、配布メディアのsetup.lstを見て配布される予定のファイルとその種類、レジストリ登録の有無を調査してからになると思います。 setup.lstを見てみます。 …と言ってもぱっと見てもよく判らないのですが f(^_^;) がんばって調べてみます。 そしてレジストリ登録要のファイルがインストールするPCに 「既存してたらインストール不可!」 とでもするしかないのでしょうかねぇ…。ふぅ~