ぼやきごと/2009-09-27/VC++2005SP1再頒布可能パッケージの罠 のバックアップ差分(No.2)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#blog2navi()
*VC++2005SP1再頒布可能パッケージの罠 [#ha188909]

自作のC++/CLI製ライブラリ(ruche.aviutl.plugins.dll)が他の人のマシンで正常にロードされなかった。~
手持ちのネットブック(開発環境なし)で試してみたところ、同じようにうまくロードされなかった。

MicrosoftUpdateは一通り適用してあったので、VC++2005SP1のランタイムライブラリが入っていないだけだろうと思い、Microsoftからダウンロードしてインストールしたものの、状況変わらず。~
ネットで色々調べて、開発マシンのVisual Studio 2005 SP1に同梱されている再頒布可能パッケージをインストールしたところ、正常に動作するようになった。
MicrosoftUpdateは一通り適用してあったので、VC++2005SP1のランタイムライブラリが入っていないだけだろうと思い、Microsoftから次のファイルをダウンロード。

-[[Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)>http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=ja]]

そしてインストールしてみたものの、症状は変わらなかった。~
その後ネットで色々調べて、開発マシンのVisual Studio 2005 SP1に同梱されている再頒布可能パッケージをインストールしたところ、正常に動作するようになった。

ここまで終えた時点で「Microsoftが配布しているパッケージには必要なDLLが入っていないのか?」と考えたが、それは間違いだった。~
入っていないのではなく、バージョンが異なっていた。

私の開発マシンに入っていたランタイムライブラリのバージョンは ''8.0.50727.4053'' で、自作ライブラリもこのバージョンを要求していた。~
しかしMicrosoftが配布している再頒布可能パッケージ(VC++2005SP1用)内のランタイムライブラリのバージョンは ''8.0.50727.762'' だった。~
自作ライブラリのビルド時に自動生成される埋め込みmanifestファイルが要求しているバージョンは ''8.0.50727.4053'' だった。~
しかし、Microsoftが配布している再頒布可能パッケージ(VC++2005SP1用)内のランタイムライブラリのバージョンは ''8.0.50727.762'' だった。~
このためバージョンが合わず、「ファイルが見つからない」と言われてしまっていた。~
詳しくはWikipediaの[[分離アプリケーションとSide-by-Sideアセンブリ>wikipedia:分離アプリケーションとSide-by-Sideアセンブリ]]等を参照のこと。
詳しくはWikipediaの[[分離アプリケーションとSide-by-Sideアセンブリ>Wikipedia:分離アプリケーションとSide-by-Sideアセンブリ]]等を参照のこと。

「では、この ''8.0.50727.4053'' というバージョンは何なのか?」と思いもう少し調べてみたところ、こいつだった。

-[[Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ ATL のセキュリティ更新プログラム>http://www.microsoft.com/downloads/details.aspx?familyid=766A6AF7-EC73-40FF-B072-9112BAB119C2&displaylang=ja]]

「VC++2005SP1に同梱されている再頒布可能パッケージにはこいつが含まれているけど、Microsoftが配布している方には含まれていないので、アプリケーションのユーザはこいつもインストールしてね。~
 ''もちろんアプリケーションの配布者から指示されていることだと思うけど。''」~
ってことですか?MSさん!?
最初に配布していた前述のパッケージにセキュリティ上の問題があったので、それを修正した最新版を2009年7月末から配布していたようだ。~
Visual Studio 2005 SP1はMicrosoftUpdateで更新できるため、開発マシンではMicrosoftUpdateを行ったタイミングで更新されていたようだ。

つまり、最新のVisual C++ 2005 SP1で開発したアプリケーションの配布時には上記のページを教えておけばOKということ。~
でもこんなことで悩まされるなら、いっそのことVC++のランタイムライブラリもMicrosoftUpdateで取り扱って欲しいと思うのは私だけだろうか…。

RIGHT:Category: [[[Visual Studio>ぼやきごと/カテゴリ/Visual Studio]]][[[プログラミング>ぼやきごと/カテゴリ/プログラミング]]] - 2009-09-27 01:52:51
----
RIGHT:&blog2trackback();
#comment(above)
#blog2navi()