[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/01/27(Thu) 11:34
投稿者名:玉之丞
Eメール:
URL :
タイトル:
VBアプリの必須ファイル
VBで作成したアプリケーションに必ず含まれるファイルってあるんでしょうか?

これからVBで作成したアプリケーションをインストールするにあたり
インストール先のPCに、既存のVBシステムがあるかどうかを調べたいのです。
(配布するアプリと他のアプリをできるだけ共存させたくないので…)

判別方法をご存知の方、ご教授ください。
よろしくお願いします。

投稿時間:2005/01/27(Thu) 12:13
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: VBアプリの必須ファイル
> (配布するアプリと他のアプリをできるだけ共存させたくないので…)

何の為にそのような事が必要なのですか?
共存 とは何を指しているのでしょうか?
VBを使っている人なら当然無数のVBのアプリが同一パソコン内にあるはずですが?

投稿時間:2005/01/27(Thu) 12:18
投稿者名:たけ
Eメール:
URL :
タイトル:
Re: VBアプリの必須ファイル
> VBで作成したアプリケーションに必ず含まれるファイルってあるんでしょうか?
これが知りたいのは、他のVBアプリケーションがインストールされているかどうかを知るため?
VBランタイムのファイルがシステムフォルダに存在してもVBアプリケーションがインストール
されているとは限りませんが。

投稿時間:2005/01/27(Thu) 12:37
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: VBアプリの必須ファイル
> VBで作成したアプリケーションに必ず含まれるファイルってあるんでしょうか?
一番重要なのは、『そのアプリ自体のexe』でしょうね。

次に、それを利用するためのランタイム「MSVBVM60.DLL」が、最低限必要です。(VB6の場合)
また、古い環境(Win95など)では、上記とは別に、OLE関係のアップデート(Oleaut32.dll等)が
必要とされる場合があります。最近の環境は更新不要ですけれども。


なお、VB製のexeかどうかは、そのexeを「Dependency Walker」というツールにかけて、
内部で MSVBVM60.DLL を呼び出しているかを調べれば確認できます。
hhttp://www.dependencywalker.com/

# Dependency Walkerは、Microsoft Platform SDK等にも付属しています。


さらに実際には、MSVBVM60.DLL だけだと、メッセージ等が英語版のような動作に
なってしまうので、日本語を表示するためのサテライトDLLとして、「VB6JP.DLL」が
インストールされている事が多いと思います。(ただ、VB6JP.DLLは必須ではありません)

もちろん、VB製exe内で利用しているコンポーネント(ADOとか、RichTextBoxとか)があれば、
それらに対応したDLLやOCX等が必要になりますが、このあたりは exe 次第でしょうね。


VBが必要としているファイルについては、VB6のヘルプの

[Visual Basic ドキュメント]
+[Visual Basic の使用方法]
  +[プログラミング ガイド]
   +[Visual Basic を使ってできること]
     +[作成したアプリケーションの配布]
       +[セットアップ ツールキット]
         +[配布するファイル]

あたりに書かれていますので、よく目を通しておいてください。

ただ、ランタイムがインストールされていたからといって、既存のVBアプリが
インストール済みであるという証拠にはなりませんよ。


> これからVBで作成したアプリケーションをインストールするにあたり
> インストール先のPCに、既存のVBシステムがあるかどうかを調べたいのです。
市販の製品の中にも、VB6で作られた物はありますよ。
(以前購入したSonyのDVD-RW製品に付属していたライティングソフトが、VB6製でした)


ただ、「ディストリビューション ウィザード」や「VisualStudio Installer」などを使って
インストール作業を行えば、既存のDLLが無い(もしくは古い)時に、自動的に更新作業を
行ってくれますから、あえて自分で調べる必要は無いかと思いますよ。

もし、手動でセットアップ作業を行いたいのであれば、新しいバージョンのDLLを、
古いバージョンのDLLで置き換えないように注意してください。また、ActiveX関係は、
dllのコピーするだけでは動作しませんので、レジストリへの登録も必要ですよね。


> (配布するアプリと他のアプリをできるだけ共存させたくないので…)
OS自身が持っているアプリにも、VC製、VB製、FoxPro製のコンポーネントなどが
含まれている事があるので、完全に排他させるのは難しいかも。

もし、異なるDLLバージョンのアプリを共存させたいという事であれば、
サイドバイサイド(Side-by-side)について調べてみてください。

投稿時間:2005/01/28(Fri) 14:13
投稿者名:玉之丞
Eメール:
URL :
タイトル:
必須ファイルが知りたい理由
皆様、ありがとうございます。
VB初心者で、周りにもVBに詳しい人がいなくて
途方にくれているのです。
すばやく回答してくださり本当に感謝しています。
御礼が遅くなって申し訳ありませんでした。

VB6.0でアプリを作成し配布することになったのですが(仮に”Aアプリ”)
配布先のPCに他のVBアプリ(仮に”Bアプリ”)があった場合
Aアプリをインストールしたことで
Bアプリの動作が不完全にならないようにとの厳命を受けています。
(当然のことですが…)
今回は当方からAアプリを納めた顧客が配布元になり各所へ配布します。
そのためBアプリに何かあったら顧客が責めを負うため
予防案として「BアプリがあるPCへのインストールは避ける」という
方法を顧客から提示されたのです。
インストールするPCがどのような環境のものかは当然わかりませんし
配布先でそのPCの環境を把握している人がいない場合もあります。
そのため「このファイルがあるからAアプリはインストールしないほうがいい」という基準がほしいと
要望され
ましたが
私には判断がつかず、こちらに掲載した次第です。


顧客が心配する理由は、実際にBアプリの動作が怪しくなったという現象が起きたからです。

Aアプリがほぼ出来上がったところで、テストしていただくようお願いしました。
その際に、AアプリをアンインストールしたらBアプリが動作しなくなり
Aアプリをインストールしていたフォルダと同名のフォルダを作ったら
動作が安定した、という現象でした。
配布メディアはディストリビューションウィザードで作成しました。
DLL等のセットアップ先は顧客要望もあり
($AppPath)に設定していたので
それが原因かとも思うのですが、確信は持てません。


「VBランタイムがあるからVBアプリがあるとは限らない」とはわかります。
でもとにかく「安全策として基準として提示できるもの」が
知りたいのです。


面倒なお願いを言って申し訳ありません。
よろしくお願いいたします。

投稿時間:2005/01/28(Fri) 15:10
投稿者名:たけ
Eメール:
URL :
タイトル:
Re: 必須ファイルが知りたい理由
> 「VBランタイムがあるからVBアプリがあるとは限らない」とはわかります。
> でもとにかく「安全策として基準として提示できるもの」が
> 知りたいのです。

私ならBアプリを作っている人(会社)にAアプリで使用するファイルはこれだけあって
このバージョンのファイルをシステムファイルに入れることがありますが何か問題がありますか?
と聞きます。

Bアプリ側でこのファイルはこのバージョンでなければならないというような回答を得られれば
対策も打ちやすいのではないでしょうか。

投稿時間:2005/01/28(Fri) 17:08
投稿者名:玉之丞
Eメール:
URL :
タイトル:
Re^2: 必須ファイルが知りたい理由
> 私ならBアプリを作っている人(会社)にAアプリで使用するファイルはこれだけあって
> このバージョンのファイルをシステムファイルに入れることがありますが何か問題がありますか?
> と聞きます。

たけさん、ありがとうございます。

私自身が配布先の環境をチェックできればいいんですが、それができません。
配布元となる顧客の担当者が配布先へ出向き
そこで初めてインストールするPCとご対面するわけです。
その場でBアプリが入っている等を確認することになります。
事前に配布先の担当者なりに問合せをしても
確実な回答は得られないことが多いと聞いています。

Bアプリの製造元に問合せができたら
対策はほんっとに立てやすいと思います。

投稿時間:2005/01/29(Sat) 06:17
投稿者名:だい
Eメール:dee_bassist@hotmail.com
URL :
タイトル:
Re: 必須ファイルが知りたい理由
> VB6.0でアプリを作成し配布することになったのですが(仮に”Aアプリ”)

このアプリのSetup.lstがどうなっているか見せてもらえませんか?

> 配布先のPCに他のVBアプリ(仮に”Bアプリ”)があった場合

このアプリはVB6製でしょうか?それともVB5やそれ以前のものですか?
(もし、これのSetup.lstだけでも入手できれば対策が可能になるかもしれません)

もし、双方でコモンダイアログコントロールを使用しているなら、
VB5アプリとVB6アプリで同名別バージョンのOCXを互いに必要としてしまうケースがあります。
(他にも同様の問題があるコントロールがあったような記憶がありますが...当方は詳しくないです

投稿時間:2005/01/29(Sat) 16:54
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^2: 必須ファイルが知りたい理由
> (他にも同様の問題があるコントロールがあったような記憶がありますが...当方は詳しくないです)

たとえ VB6 同士であったとしても、Service Pack の違いで問題になる事があります。

たとえば、ListViewの列順を変更可能な設定にしてあった VB6 SP5 製 EXE の場合、
VB6 SP6 のランタイムを入れた途端、列順変更ができなくなる、なんて事もありえます。


正直なところ、試してみないと何とも言えないと思いますよ。
問題になりそうな条件を、可能な限り列挙するといっても、ちょっと無理がありますし……。

投稿時間:2005/01/31(Mon) 00:00
投稿者名:玉之丞
Eメール:
URL :
タイトル:
ありがとうございます
皆様、いろいろなご指導ありがとうございます。

配布先のPCにはどんなアプリ等が入っているのかは全くわかりません。
”Bアプリ”はVB4.0製なのか
それともVB6.0SP3なのか
はたまたアプリは一切入っていないのか
入っていても実際に使っているのかいないのか
事前調査は出来ない状態です。

このような状態で、すべてのアプリの動作を保障してくれ…というのは
正直言って、現在の私の技術&知識では無理だと思っています。

魔界の仮面弁士さまが仰るように
> 正直なところ、試してみないと何とも言えないと思いますよ。
> 問題になりそうな条件を、可能な限り列挙するといっても、ちょっと無理がありますし……。
本当にそう思います。
でもこういう事情を一般の方に判っていただくよう説明するのって難しいんですよね。

ケースバイケースで対応するよう
極力トラブル発生しないよう何とか頑張ってみます。