VB6.0で作ったプログラムを配布するためにウィザードを使用することを教えていただきました。が、たかだか20k程度のプログラムがDLL等を含ませる為か、2M程度の容量に化けてしまいました。そんなもんなのでしょうか?CAB以外で削除できるファイルはあるのでしょうか?素人に教えていただけませんか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

おそらく追加コンポーネントを多く使ってませんか?それらのコンポーネントの必要とするもの全てを、セットアップファイルに含んでいるはずです。


「要VB6SP5ランタイム」の仕様制限を行う事で、多くのCABファイルの中身を略すことができます。
以下に別のインストーラを照会しますが、そちらも同様の方法で略すことができます。

ちなみにぼくはディストリヴューションウィザードを、しばらく触れておりません。
扱いづらいからです。それにインストーラが大きくなりやすい・・・


[Visual Studio Installer]
http://www.microsoft.com/japan/developer/vstudio …
最近はこちらの方が、多用されていると思います。これの欠点はWindows Installer(2.5MB)が含まれるため、ネット配布には適してないかも?。しかしメンテはしやすいです。それにインストール画面が、ちょっとカッコがよいですし、初心者にやさしいセットアップを作成する事ができます。
インストールしたPCには、コントロールの追加と削除から、再セットアップを選択させることも出来るようにもなります。
ぼくは、こちらをよく使います。


[簡単インストーラ]
http://www5a.biglobe.ne.jp/~nobukich/index_j.htm
こちらはディストリヴューションウィザードとほとんど同じ機能にみえますが、インストール対象PCを限定させたりするのに便利です。ディストリヴューションウィザードを使うなら、こちらの方をお勧めします。
    • good
    • 0
この回答へのお礼

詳しく教えていただきましてどうもありがとうございます。
早速試してみようと思います。

お礼日時:2002/01/08 19:22

VBの場合、使用しているコントロールに応じて、


ランタイムも含まなければいけないので結構でかくなりますよ。
    • good
    • 0
この回答へのお礼

やはり、でかくなってしまうんですね。
ありがとうございました。

お礼日時:2002/01/08 19:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qディストリビューションウィザードを使って配布するプログラムが読み込むDataFileの場所について

例えば住所録のファィルを読み込むときに
ソースにOpen "c:\adress\adress.txt" For Input As #DataFileNum
と書くと、
ディストリビューションウィザードで配布・セットアップされたプログラムは当然c:\adress\adress.txtを探しに行きますよね。
1.配布されてセットアップされたプログラムが探しに行くc:\adress\この場所に、adress.txtがあるようにする方法はありますか?
 手作業なしでセットアップと同時に、その場所にadress.txtがあるようにする方法です。
2.またはadress.exeがインストールされた場所にadress.txtがコピーされてしまった場合には、
Open "c:\adress\adress.txt" For Input As #DataFileNum
これのソースをどう書き換えれば゛いいのでしょうか
Open "\????\????\adress\adress.txt" For Input As #DataFileNum
以上の2つの方法について教えていただきたいのです。

例えば住所録のファィルを読み込むときに
ソースにOpen "c:\adress\adress.txt" For Input As #DataFileNum
と書くと、
ディストリビューションウィザードで配布・セットアップされたプログラムは当然c:\adress\adress.txtを探しに行きますよね。
1.配布されてセットアップされたプログラムが探しに行くc:\adress\この場所に、adress.txtがあるようにする方法はありますか?
 手作業なしでセットアップと同時に、その場所にadress.txtがあるようにする方法です。
2.またはadress.exeがインストールされた場...続きを読む

Aベストアンサー

あまりうまく表現する自身がありません。すみません。
ディストリビューションウィザードの機能で、
セットアップするファイルの位置(address.txt)を
決めることができます。
但し、c:\xxx\ と決められず、
(インストールフォルダ)\address\address.txt や
(windowsディレクトリ)\address\address.txt
と指定できます。

また、このファイルを扱うexeファイルのソースの中でも
open app.path & "\address\address.txt"(VBなら)
など自分自身が起動されたフォルダを知ることが
できるので、この2つで何とかならないですか?

QVB6.0で、DLLを動的に参照したい

VB6.0では、DLLを利用する際の宣言部分で、パスを""で括った静的な記載でなく、動的な記載にできるのでしょうか。
色々と調べてみたのですが、イマイチピンとくるものがなかったので質問させていただきました。

例:Public Declare Function Ztest Lib "C:\Test1\Test2" Alias "Test3" (ByVal data1 As Long) As Long
                          ↓動的に変更したい
  Public Declare Function Ztest Lib "○○:\Test1\Test2" Alias "Test3" (ByVal data1 As Long) As Long

Aベストアンサー

できません。
Declareの場所は大域変数の宣言、つまり定数などを定義する
領域です。これをプログラム実行中に変更しようという行為
ですから、ダメな理由は分かると思います。
Basicではポインタを使用してメソッドを呼び出す手段が
ありません。よって、動的なDLLのロードを行い、関数の
アドレスを得ることはできますが、そこへ制御を移す手段が
無いのです。

但し、同じファイル名のDLL(中身は異なる)を別フォルダに
保存しておき、動的にどちらのフォルダからロードさせるかを
決めることはできます。方法はクラスオブジェクトを使います。
例えば、Class1に以下のような定義をします。
Private Declare Function Ztest Lib "Test1\Test2" _
Alias "Test3" (ByVal data1 As Long) As Long
Public Function ZCall(ByVal data1 As Long) As Long
ZCall = Ztest(data1)
End Function

呼び出し側は次のようにします。
Dim C As Class1
Dim A1 As Long, A2 As Long
SetCurrentDirectory "C:\AAA" 'カレント切り替え
Set C = New Class1 'インスタンス生成
A1 = C.ZCall(0) 'メソッド実行
Set C = Nothing 'インスタンス消滅
SetCurrentDirectory "C:\BBB" 'カレント切り替え
Set C = New Class1 'インスタンス生成
A2 = C.ZCall(0) 'メソッド実行
Set C = Nothing 'インスタンス消滅

DLLがシステムディレクトリになければカレントを探します。
クラスオブジェクトはインスタンス生成の度にDLLをロード
しますので、その時にカレントを切り替えておくと似たような
処理にすることができます。標準モジュールは静的な空間なので、
ここでDLLを定義すると、ロードされたDLLを解放できません。

できません。
Declareの場所は大域変数の宣言、つまり定数などを定義する
領域です。これをプログラム実行中に変更しようという行為
ですから、ダメな理由は分かると思います。
Basicではポインタを使用してメソッドを呼び出す手段が
ありません。よって、動的なDLLのロードを行い、関数の
アドレスを得ることはできますが、そこへ制御を移す手段が
無いのです。

但し、同じファイル名のDLL(中身は異なる)を別フォルダに
保存しておき、動的にどちらのフォルダからロードさせるかを
決めることはできます。方法...続きを読む

Q特殊文字含むdll参照方法

こんにちは
visual studio 2010 vb環境で開発を行なっているのですが
本当は、
Private Declare Function AqKanji2Koe_Create Lib "AqKanji2Koe" _
(ByVal Koe As String, ByVal pint As Integer) As Integer
としたいのですが、
これだと、エントリ ポイントが見つかりませんでエラーが出てしまい、
検索したところ、下記情報があり
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1256891532

これになぞって、試しに@8を入れてみたのですが、
Private Declare Function AqKanji2Koe_Create@8 Lib "AqKanji2Koe" _
(ByVal Koe As String, ByVal pint As Integer) As Integer
@は使えないとエラーが出てしまいます。
何か対応する方法はありますでしょうか?

こんにちは
visual studio 2010 vb環境で開発を行なっているのですが
本当は、
Private Declare Function AqKanji2Koe_Create Lib "AqKanji2Koe" _
(ByVal Koe As String, ByVal pint As Integer) As Integer
としたいのですが、
これだと、エントリ ポイントが見つかりませんでエラーが出てしまい、
検索したところ、下記情報があり
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1256891532

これになぞって、試しに@8を入れてみたのですが、
Private Declare Function AqKanji2Ko...続きを読む

Aベストアンサー

名前の解決だけならAliasだけで済む話ですが、
エントリ名に引数や戻り値の型記号などが付く
ということはVBから呼び出されることを意識
して作られたものか疑問です。
先ず、定義ファイルを使ってリンクされて
いないことは一目瞭然ですし、stdcall型に
なっているかも怪しい。
これはCのスタティックリンクライブラリの
感じです。これを作った人はDLLの開発経験が
あるのでしょうか?

QVB6.0 ExeとDllの違い

いつもお世話になっております。

今更ながらなのですがVB6.0について質問させて下さい。

新規でVB6.0を起動すると、「標準Exe」・「ActiveXExe」・「ActiveXDll」・「ActiveXコントロール」等がでてきますよね?

普段アプリを開発する時は「標準Exe」しか使用しないのですが、「ActiveXExe」・「ActiveXDll」・「ActiveXコントロール」の違いは何なのでしょうか?(どういうときに使い分けるのでしょうか?)

ActiveXDll・・・ソースコードのみ?参照設定する?(クラスやモジュールと何が違うのでしょうか?)
ActiveXコントロール・・・独自のコンポーネント(部品)を作る?(OCXのようなものでしょうか?)
ActiveXExe・・・(一番分かりません)

どなたかご教示お願いします。

Aベストアンサー

ActiveXDll・・・Cのライブラリのようなもの。ADOのDLL(DLLを参照してテーブルやレコードセットが使えるようになる)が近いイメージ。
ActiveXコントロール・・・OCXそのもの。オリジナルのコントロールの作成。
ActiveXExe・・・別アプリから操作するインターフェースを持ったアプリが作れる。ExcelやWordが近いイメージ。

QVB6.0(SP5)で作成したアプリの配布について

”VB6.0(SP5)” で作成したアプリケーションの配布にあたって、お伺いしたいことがあります。

客先から「今回のアプリのインストール後に、既存のVBシステム等に障害が発生しないように」と厳しく通達されています。(当然ですが…)
しかし、インストールするPCは千差万別。
どのようなシステムが既存しているかはそれぞれに違いますし
すべてのPCに完璧な動作保障は無理なのでは?と考えます。
(こんなことは言ってはいけないんですけど…)


そこで「このファイルがある場合はインストールしないように」という制限事項を付けられれば、とは思うのですが
そのような判断は可能でしょうか?
”○○.DLLがあるからこれはVB4.0のシステムが入ってる!”等と
判断できるものなのでしょうか?

なにかご存知の方、良い案をお持ちの方
いらっしゃいましたらご教示いただけないでしょうか?
よろしくお願いいたします。

Aベストアンサー

>すべての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を見て配布される予定のファイルとその種類、レジストリ登録の有無を調査してからになると思います。

>すべてのPCに完璧な動作保障は無理なのでは?と考えます。

おっしゃる通りだと思います。

ただ、極力既存のVBシステムに影響を与えない方向でインストールすることは可能かもしれません。
(ただし、今回インストールするアプリケーションの動作は保証されないでしょうけど)

配布メディアをディストリビューションウィザードで作る場合は、setup.lstを弄ったりディストリビューションウィザード自体を弄ったりすることでカスタマイズが可能です。
...\Microsoft Visual Studio\VB98\Wizards\PDWizard...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報