none
[MS07-043]でWindowsバージョンごとに異なったoleaut32.dllが必要になったことについて RRS feed

  • 質問

  • 外池と申します。

     

    2007年8月17日に標記の件の新しいセキュリティーアップデートがリリースされましたが、かなり以前にVisual Basic 6.0のディストリビューション・ウィザードで配布パッケージを作って、それを最終版として配布し続けている開発者にとっては、結構インパクトが大きいと思います。

     

    私も、ひとつ、ふたつ、そのようなものがあるのですが、一方で、最近は、Visual Basic 6.0の開発環境自体を使わなくなってしまったので、配布パッケージの作り直しもままなりません。

     

    質問は二つあります。いずれも、古い配布パッケージの形で入手したVB6アプリをインストールする利用者のマシンでの挙動についてですが、

    • 初めてVB6アプリを導入する利用者にとっては、一旦古いoleaut32.dllが導入されることになるかもしれませんが、その状態で動作はするのでしょうか?(MS07-043の文章を読むと、これでは動作しないように理解できるのですが、そうなると、大変です・・・。) おそらく、その後に最初にめぐってくるセキュリティー・アップデートのチャンスで、新しいoleaut32.dllに自動的に差し替えられるものと思いますが。
    • 一方で、既にoleaut32.dllが入っている、しかも、適切にセキュリティー・アップデートができているマシン、つまり、最新のoleaut32.dllに維持されているマシンに対して、古いVB6の配布パッケージでVB6アプリのインストール作業をすると、配布パッケージ内の古いoleaut32.dllは使われないままになる、ということになりますでしょうか?

    「そもそも」、最近のマシンって、最初からoleaut32.dllがVB6とは無関係に入っているものなのでしょうか? そうすれば、後者のパターンが多いということで、多少、安心なのですが。

     

    要するに、古い配布パッケージが今でも何とか使えるものなのか、まったく、使い物にならなくなったのか、そこを見極められれば嬉しいです。

    2007年8月22日 1:50

回答

  •  外池 さんからの引用

    したがって、まったくoleaut32.dllが入っていないマシンに対して、この古いパッケージを使ってインストールすると、古いoleaut32.dllが入ってしまうと思います。

    ここで質問したかったのは、この古いoleaut32.dllで、とりあえず、動作するのか? ということ。

    動く動かないは互換性の問題なのでOSごとに実体が異なっていても

    アプリが期待しているI/Fに互換性があれば問題無いと思います。

    2007年8月22日 4:45
  • 外池です。そうですよね・・・。

     

    アプリとoleaut32.dllの間のI/Fには、互換性はあると思うのですが、ただ、oleaut32.dllとWindows側のいろんなモジュールとの間のI/Fが変更になっちゃっているとアウトになりそうで怖いところです。Windowsのバージョンごとに異なったファイルが用意されたところから見て、もしかして? と思っちゃいました。

     

    まぁ、私のケースに限れば、大規模な配布をしているわけではないので、何か問題が発生したら可能な範囲で個別に対応する、ということにします。

     

    ありがとうございました。

     

    2007年8月22日 5:04

すべての返信

  •  外池 さんからの引用

    要するに、古い配布パッケージが今でも何とか使えるものなのか、まったく、使い物にならなくなったのか、そこを見極められれば嬉しいです。

    パッケージが2つあるということは、バージョンが2つあるということです。

    パッケージにはそのバージョンで正常動作するために必要なものがそろっています。

     

    つまりパッケージの中身が正常動作することは当然であり、

    「今でも何とか使えるものなのか」はそのバージョンの動作要件と異なる環境で動作確認した結果として得られる事柄です。

     

    したがって、動作しなかった場合は動作させたい環境で再コンパイルおよび必要な修正をおこない、再配布となるでしょう。

     

    パッケージ動作ですが、バージョン比較しますので上書きダイアログで「はい」を選択しない限り

    新しいものを古いもので勝手に上書きはされないはずです。

    2007年8月22日 3:20
  • 外池です。

     

    いや、パッケージは一つのバージョンのものしかありません。要するに先日セキュリティーアップデードでリリースされたものより古いoleaut32.dllが入ったものしかないのです。さらに、そのパッケージはVB6のディストリビューション・ウィザードを使って作ったものなので、先日のセキュリティーアップデートで示された「インストール先のWindowsのバージョンを識別して、適切なoleaut32.dllを選択してコピーする」というような機能もありません。

     

    したがって、まったくoleaut32.dllが入っていないマシンに対して、この古いパッケージを使ってインストールすると、古いoleaut32.dllが入ってしまうと思います。ここで質問したかったのは、この古いoleaut32.dllで、とりあえず、動作するのか? ということ。(もちろん、セキュリティーの穴を抱え込んでいるわけですが。) まぁ・・・、保証の限りではないんでしょうなぁ。動いたらラッキーという程度で。

     

    一方で、古いパッケージでも、バージョン比較がなされる、ということは、了解です。

     

    「必要な修正をおこない、再配布」というのは、私も、正論だと思います。ただ、もともとのVB6に附属のディストリビューション・ウィザードでは、インストール先のWindowsのバージョンを識別してコピーするファイルを選ぶ(その選択肢を開発者が柔軟に指定する)機能はないと思うので・・・、まったく別のインストーラーを使うようにするしかないですよね。それができないなら、今後のサービスの提供を断念するしかないのかな、と思っています。

     

     

     

    2007年8月22日 4:02
  •  外池 さんからの引用

    したがって、まったくoleaut32.dllが入っていないマシンに対して、この古いパッケージを使ってインストールすると、古いoleaut32.dllが入ってしまうと思います。

    ここで質問したかったのは、この古いoleaut32.dllで、とりあえず、動作するのか? ということ。

    動く動かないは互換性の問題なのでOSごとに実体が異なっていても

    アプリが期待しているI/Fに互換性があれば問題無いと思います。

    2007年8月22日 4:45
  • 外池です。そうですよね・・・。

     

    アプリとoleaut32.dllの間のI/Fには、互換性はあると思うのですが、ただ、oleaut32.dllとWindows側のいろんなモジュールとの間のI/Fが変更になっちゃっているとアウトになりそうで怖いところです。Windowsのバージョンごとに異なったファイルが用意されたところから見て、もしかして? と思っちゃいました。

     

    まぁ、私のケースに限れば、大規模な配布をしているわけではないので、何か問題が発生したら可能な範囲で個別に対応する、ということにします。

     

    ありがとうございました。

     

    2007年8月22日 5:04