VB6(sp5)で開発し、ディストリビューションウイザードを使って配布したソフトがW2000にインストールしようとすると「システムにある一部ファイルが最新ではないので再起動する必要があります」とのメッセージが出て何度やっても解決できません。 インストール先のOSsはW2000はSp4 Ver.5.00.2.195 で開発側はW-XP + VB6(SP5)です。なおW98やXPには問題無くインストールできております。 この問題について何かご存じの方がおられましたら原因、解決法などをご教示お願いします。
編集 削除[VB] システム ファイルの更新メッセージが繰り返し表示されるhttp://support.microsoft.com/default.aspx?scid=413232
を確認してみてください。
だい様 ありがとうございます。 「これで解決」とばかりに早速ご指摘のサイトを見てみました。 これによれば「Bootstrap Files」に含まれるシステムファイルのセットアップ用マクロの記述が正しくないのが原因と書かれていましたので当方の「Setup.lst」の記述を確かめてみました。 このサイトの資料ではWinSysPath」に指定してあるものを「WinSysPathSysFile」にせよと書いてありますが当方のLSTではVB6JP.DLL以外は全部WinSysPathSysFileになっていました。これが当方のBootstrapFile」です
[Bootstrap Files]
File1=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5/31/98 12:00:00 AM,22288,4.71.1460.1
File2=@VB6JP.DLL,$(WinSysPath),,$(Shared),10/2/00 12:00:00 AM,102160,6.0.89.88
File3=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,6/3/99 12:00:00 AM,17920,2.40.4275.1
File4=@ASYCFILT.DLL,$(WinSysPathSysFile),,,3/8/99 12:00:00 AM,147728,2.40.4275.1
File5=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,3/8/99 12:00:00 AM,164112,5.0.4275.1
File6=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,4/12/00 12:00:00 AM,598288,2.40.4275.1
File7=@msvbvm60.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,8/28/01 9:00:00 PM,1388544,6.0.92.37
File8=@VB6STKIT.DLL,$(WinSysPathSysFile),,,7/15/00 12:00:00 AM,101888,6.0.84.50
サポート情報では「この部分におけるシステムファイルとはVBのランタイム(Msvbvm60.dll, Vb6jp.dllVb6stkit.dll以外のファイルのこと」と書いてあります。 つまりこれでは直すところがないのでは? でも障害が発生している! ということで止ってしまいました。 どこをどう直すのか具体的に理解できておりませんのでこのあたりを宜しくご指導ください。
当方環境(Win2000SP4)で作成したSetup.lstの内容です。
[Bootstrap Files]
File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,7/15/00 12:00:00 AM,101888,6.0.84.50
File2=@VB6JP.DLL,$(WinSysPath),,$(Shared),10/2/00 1:24:50 PM,102160,6.0.89.88
File3=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5/31/98 12:00:00 AM,22288,4.71.1460.1
File4=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,6/3/99 12:00:00 AM,17920,2.40.4275.1
File5=@ASYCFILT.DLL,$(WinSysPathSysFile),,,3/8/99 12:00:00 AM,147728,2.40.4275.1
File6=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,3/8/99 12:00:00 AM,164112,5.0.4275.1
File7=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,4/12/00 12:00:00 AM,598288,2.40.4275.1
File8=@MSVBVM60.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,6/20/03 4:05:04 AM,1385744,6.0.96.90
差異はMSVBVM60.DLLのバージョンだけです。
下記URLの情報を見る限り、
Win2000SP4のMSVBVM60.DLLは
WinXPやVS6.0SP5のものよりも新しいようです。
DLL Help Database
http://support.microsoft.com/default.aspx?scid=http%3a%2f%2fsupport.microsoft.com%2fservicedesks%2ffileversion%2fdllinfo.asp&fp=1
VB6SP5をWin2000SP4環境にインストールしてディストリビューションを作成し、
問題のWin2000マシンにインストールできるか確認してみては如何でしょう?
だい様 具体的なアドバイスをありがとうございます。これで拝見すると「MSVBVM60.DLL」のタイムスタンプが新しければ可能性がありそうなのでVB6のSP6をダウンロードしてみました。そしたらこのDLLは2004/2/23でしたのでこれで試してみます。
W2000-SP4のマシンは遠方のユーザーのものですので簡単にテストできないのがじれったいところですが当方でVB6/SP6でウイザードを使用して配布ファイルを作成して一度ユーザーに試してもらうのが一番簡単で確実な方法かと思いました。
結果が出るのは数日掛かると思いますので「解決」ボタンはその後にさせていただきます。
それにしてもこのような問題解決にこんな素晴らしいサイトがあるとは知りませんでした。MicroSoftの技術情報とかDLL HelpDatabaseなどの活用方法も知りました。やはり一人で悩んでいても解決できないのが多数のベテランにヒントを貰い、助けられて成長するものだと納得しました。 お礼申し上げます。
SP6にしてMSVBVM60.DLLを新しくしたものでウィザードを使用してSETUP.EXEを作成し、問題のW2000のSP4のクライアントに送りました。 その結果インストールに成功したと報告がありました。 まずは本当にありがとうございました。
(残る疑問)
1.当方でも問題発生のあったW2000+sp4の環境を作って問題のソフトをインストールしてみましたが問題無くインストールできてしまいました。どうしてなのでしょうか?
2.MSのサポートサイトでは障害の原因は「セットアップ用マクロの記述が正しくない」と書いてあります(http://support.microsoft.com/default.aspx?scid=413232)が実際には新しいDLLを入れることで解決できました。 通常であれば「タイムスタンプ、またはバージョンの古いものはインストールしない」ことで対応しているはずだと思うのですが今回の障害は「古い場合はエラーとなってしまう」ことに問題が発生したと理解されます。 根本的解決法はやはり「古いバージョンのものはインストールしない」というように直すべきかと思いますが如何でしょうか?
向学の為に教えてください。
回答になっていないかもしれませんが、
>1.
成功/不成功の2つのPC環境の差異(インストールされてるアプリやそのインストール順、DLL、OCXびバージョン等)を精査すれば何かわかるかもしれません。
再現性がつかめれば、それをMS社にフィードバックすることでサービスパックが出て、直る可能性があります。
>2.
先述の技術情報と同じメッセージを出す別の不具合の疑いもあります。
こちらも、1.と同様です。
また、インストーラに関しては、
Win2000/XPへは、
VisualStudioInstaller
http://www.microsoft.com/japan/msdn/vstudio/downloads/vsi/default.asp
のほうが推奨されている雰囲気があります。
インストーラに関しては以下のURLが詳しいです。
http://dobon.net/vb/installer/
DLLが古くなる場合はもちろん、
新しくなる事でも、
ユーザーの環境を壊してしまう可能性がゼロではないですよね。
こんな問題をDLL-HELLと呼ぶようです。
ディストリビューションウィザードでは、
DLLのインストール先が、
デフォルトで<SysPath>とかになっていると思いましたが、
これを全て<アプリケーションフォルダ>に変更の上、
アプリケーションフォルダに、
『プログラム名.local』という名前の空ファイルをセットで配布してください。
Win2K以降であれば、解決のひとつの方法となるでしょう。
#プログラム名が『Project1.exe』ならば、『Project1.exe.local』
詳しい事は下のページを見てください。
http://www.galliver.co.jp/writing/vmx/sxs2k/