2012年1月24日火曜日

Windows 7 における Visual Basic 6.0 のサポート状況についての備忘録


Windows 7 における Visual Basic 6.0 のサポート状況についての備忘録

Windows 7で VB6 製のアプリを実行する場合の、備忘録について

アプリの仮想化でやはりニーズの高いのは、
VB6 製のアプリを Windows 7で実行したい。というのがあります。

Windows 7 では VB6 のアプリの実行自体はサポートされているので仮想化しなくても、動作する物も多いですが。

・展開やインストールに手間がかかる
・UAC の影響で正しくセットアップされない、実行できない
・一般ユーザーでは実行できない ( 管理者権限での実行が前提の物)
等々

サポート(する・しない)、とは違う所で問題があります。

Microsoft の公式なアナウンスと情報はこちらが詳しいです。
http://msdn.microsoft.com/ja-jp/vstudio/ms788708.aspx


詳しくは上記のリンクを参照することをお勧めしますが、
その中でも、備忘録的な私なりの重要な部分について、ここに書いておきます。

------宣伝-----
※VMware ThinApp (アプリケーション仮想化)に興味のある方は、こちらを
御覧ください。

[VMware ThinApp 製品概要と活用 解説書 (日本語 SoftBankBB製) の紹介]

http://tunemicky.blogspot.jp/2013/08/vmware-thinapp-softbankbb.html
------宣伝-----



【まとめ】
結論から言うと、Windows 7にはある程度、VB6 のランタイムが入っていますが
別途、VB6 のランタイムパッケージをVector等のサイトでダウンロードして
インストールした方が良いということです。
アプリ仮想化の場合は、VB6 のランタイムのインストールまでをキャプチャして
パッケージに収めるようにします。(%Systemsystem%等に)

Visual Basic 6.0 SP6 ランタイムライブラリ 第4版
http://www.vector.co.jp/soft/win95/util/se188840.html


Visual Basic 6.0 SP6 ランタイムファイル 3.40 
http://www.vector.co.jp/soft/win95/util/se342080.html

※2012-08-13 追加
MSVBVM60.dllは、実行するOSに存在するものを利用する方が良さそうです。
Windows7の場合は、標準で入っています。
古いMSVBVM60.dllを使った場合に、SendKeysファンクションで エラー70 書き込み出来ません。が発生する場合があります。
詳しくは、以下のリンクを参照ください。
http://tunemicky.blogspot.jp/2012/08/windows7-vb6-vba-sendkeys-70.html



【アプリケーションと共に配布するサポート対象のランタイム】
※Windows 7には標準では存在しないので、別途インストールが必要な物
 アプリ仮想化で言えば、パッケージに含める必要があるもの。
 仮想化対象のアプリが利用している場合なので、全てを入れる必要はありません。(念のため)
comct232.ocx
comct332.ocx
comctl32.ocx
comdlg32.ocx
dbadapt.dll
dbgrid32.ocx
dblist32.ocx
mci32.ocx
msadodc.ocx
msbind.dll
mscdrun.dll
mschrt20.ocx
mscomct2.ocx
mscomctl.ocx
mscomm32.ocx
msdatgrd.ocx
msdatlst.ocx
msdatrep.ocx
msdbrptr.dll
msflxgrd.ocx
mshflxgd.ocx
mshtmpgr.dll
msinet.ocx
msmapi32.ocx
msmask32.ocx
msrdc20.ocx
msrdo20.dll
msstdfmt.dll
msstkprp.dll
mswcrun.dll
mswinsck.ocx
picclp32.ocx
richtx32.ocx
sysinfo.ocx
tabctl32.ocx

【日本語のサポートに必要なバイナリ】
※Windows 7には標準では存在しないので、別途インストールが必要な物
 アプリ仮想化で言えば、パッケージに含める必要があるもの。
 仮想化対象のアプリが利用している場合なので、全てを入れる必要はありません。(念のため)
mfc42jpn.dll
scrrnjp.dll
vb6jp.dll
cmct2jp.dll
cmct3jp.dll
mscc2jp.dll
cmctljp.dll
cmdlgjp.dll
mscmcjp.dll
dbgrdjp.dll
dblstjp.dll
mcijp.dll
msadnjp.dll
adodcjp.dll
mschtjp.dll
msch2jp.dll
mscomjp.dll
datgdjp.dll
datlsjp.dll
datrpjp.dll
dbrprjp.dll
flxgdjp.dll
mshfgjpn.dll
htmprjp.dll
inetjp.dll
msmpijp.dll
msmskjp.dll
rdc20jp.dll
rdo20jp.dll
stdftjp.dll
mswcrjp.dll
winskjp.dll
pcclpjp.dll
rchtxjp.dll
sysinjp.dll
tabctjp.dll