mfc42.dllを更新するには?


葉月  2004-03-04 01:55:35  No: 82378  IP: [192.*.*.*]

こんにちわ
今回ディストリビューションウィザードでSETUPを作成しました
そのセットアップをWIN98にインストールしたところ
「システムの一部のファイルが・・・」
というメッセージ後再起動を要求されます
そのときmfc42.dllを書き換えていると思われるのですが
再起動後
「最近実行したプログラムによって次のシステムが古いバージョンに置き換えられました」
と表示され、C:\Windows\SYSTEM\mfc42.dllのバージョンが元のままとなり
再度セットアップを動かしてもまた
「システムの一部のファイルが・・・」
となり繰り返すことになってしまっています

ライブラリアップデートというものを実行したのですが
その影響もあるのでしょうか?現段階まったくわからずなんです

この現象がなぜ起こっているのか?
と打開策ご存知の方いらっしゃいましたらご教授よろしくお願いします

セットアップ作成OS
Windows2000
WindowsXP(どちらもだめ)
セットアップ先OS
Windows98
WindowsMe
Windows2000
WindowsXp

開発言語VisualBasic6.0 & SP5
Access2000

編集    削除
IMA  2004-03-04 21:42:21  No: 82379  IP: [192.*.*.*]

葉月さん、こんにちは

同じ現象では無いかもしてませんが、私も以前Win2000でディストリビューション
ウィザードからSETUPを作成し、Win98SEにインストールしたものが似たような
エラー(その時はexplorer.exeのエラー?)でWin98SEが正常に起動できず、
Win98SEを再セットアップしても直らないと言う状況にはまりました。

原因は何らかのDLL(←今は覚えていない)が、新しいバージョンのDLLに置き換わり
何度最初のWin98SEの元のDLLにコピーし直しても、新しいものに置き換わって
しまう現象でした。⇒  どうやら\WINDOWS\SYSBCKUPに新しいバージョンのDLLが
SETUPのインストール時にコピーされて残っており、これが再起動の度にSYSTEM
フォルダーにコピーされるようでした。(記憶が定かではありません (^^;) )

よって解決策は、この\WINDOWS\SYSBCKUPにオリジナルのDLLをコピーして直した
と思います。(記録しておけば良かった)

このようなトラブルはDLLの上位互換性がMS本家の製品でも担保されない為に起こる
様です。
参考リンク:
http://www.microsoft.com/japan/developer/library/jptech/msdnnews/dll.htm

一度、mfc42.dllがどのディレクトリにどのバージョンのものが存在するのか
確かめてみて下さい。
(私の場合はDOSしか立ち上がらなくて苦労しました。)

このようなことが起こりやすいので、SETUPパッケージは配布先と同じバージョン
のWindowsで行うのが原則だそうです。

参考になれば幸いです。

編集    削除
葉月  2004-03-04 23:53:11  No: 82380  IP: [192.*.*.*]

IMAさん返答ありがとうございます
今参考リンク印刷して読んでます

私も最初Explorerエラーにかかりました
しかも私物パソコンにテスト環境を作り98SE  2000  XPのブート環境
のためXPなどから直接DLL復旧して直しましたが

msvcrt.dllが更新されてしまい、互換性がなくなり発生するエラーのようですね
確かに98はVER6.X
XPはVer7.X
しかもXpSp1なんたらバージョンなんてプロパティに説明書きもあったため
納得してしまいました

強硬手段ですが今のところ
セットアップの作成は2000で行い
WIN98SEのMFC42.DLLを2000にコピーし作成

インストール時バージョンチェックしているため
インストーラのバージョンが古ければ更新しないはずなので
それで作成中
とりあえずもう少しテストが必要のようです

編集    削除
葉月  2004-03-05 01:02:56  No: 82381  IP: [192.*.*.*]

相手先2000で
2000環境で作ったけどMSJET40.dllのバージョン非整合で
やはりリブートループに・・・
何か打開策はないかと思案中・・・

編集    削除
IMA  2004-03-05 05:19:05  No: 82382  IP: [192.*.*.*]

お疲れ様です。

どこかのHPで見た記憶ですが、MSJET40.dll関連のファミリー?DLLも正しく
セットアップされないとエラーが出るようです。

http://support.microsoft.com/default.aspx?scid=kb;JA;282010

等の最新版のJet 4.0アップデートしてはどうでしょうか?

残念ながら、Jetバージョン非整合でソフトがうまく動作しなくて困った経験は
ありますがリブートループの経験はありません。

あまり参考にならない話ですいません。

編集    削除
葉月  2004-03-05 19:55:18  No: 82383  IP: [192.*.*.*]

そうなんですよね・・・
アップデートしてうまくいきました

でも更新できないファイルを新しくない!なんて怒られてインストールできないのもどうかなぁとも思いますよね

バージョン戻されれてでもインストールさせてもらえないと困ったりしますよね
第一元に戻るならそれまでのモノは動くはずではあるし
エラーを吐き出しても更新してどうしても新しいDLLが必要だった場合の
自分のアプリという感じになるような気はするのですが・・・

IMAさん紹介のページより98SE以降の保護DLLやDLLHELLについて
調べる事が出来ましたのでそれだけでも自分の知識になり良かったです

編集    削除