- 追加された行はこの色です。
- 削除された行はこの色です。
#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()