[ILM/C Runtime] ILM を Windows Server 2008 にインストールすると 0x800736B1 発生!

みなさんごきげんよう。ういこです。

さて、最近 ILM ねたがちょいと少ないので、今回も ILM ねた…だけではなく、Visual C++ 2005 ランタイムも絡んだお話をさせてください。ILM を Windows Server 2008 にインストールすると、0x800736B1 エラーがインストールの最後で出てしまい、セットアップに支障をきたすという件です。

【今日の御題】
Windows Server 2008 に ILM 2007 をインストールしようとすると、インストールの最後の Encription Key の保存の箇所で以下のエラーが発生します。

“アプリケーションのコンポーネントで、バンドルされていない例外が発生しました。”

ファイルまたはアセンブリ 'mcrypt, Version=1.0.2854.1958, Culture=neutral, PublicKey Token=31bf3856ad364e35'、またはその依存関係の1つが読み込めませんでした。このアプリケーションのサイド バイ サイド構成が正しくないため、アプリケーションを開始できませんでした。詳細については、アプリケーションのイベントログを参照してください。 (HRESULTからの例外: 0x800736B1)

【ソリューション】
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージをインストールすることで解決します。

ダウンロード元 :
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)
https://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&displaylang=ja

サポート技術情報もこんなかんじで出ていました…。

Article ID: 949790 - Last Review: May 28, 2009 - Revision: 2.0
System.IO.FileLoadException in MIIS Key Management Utility
https://support.microsoft.com/default.aspx?scid=949790

【原因】
ILM は C ランタイム ライブラリ (CRT) msvcr80.dll を使用します。
この CRT は Visual C++ 2005 再頒布可能パッケージに含まれます。これを導入することで問題は解決します。
ILM のインストール前に、Visual Studio 2005 を事前にインストールしている場合はこのモジュールもシステムに導入しますので、その後 ILM をインストールしてもスムーズに処理が移行します。

なお、"Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86) " に含まれる CRT は、msvcr90.dll というもので、単純な CRT のバージョンアップではなく、ファイル自体が異なりますため、この現象に対処はできません。

C ランタイム ライブラリとは(※あくまでも イメージなので、厳密ではありません)
C++ で作成されたプログラムを実行するために必要な情報を含むファイル(ライブラリ)です。
Windows 上で動作する C++ アプリケーション実行時に共通する処理を、いちいち自分のプログラムに入れて行くと、起動時に必要な情報がすでに組み込んであることになるので高速ですが、できあがったプログラムのファイル(DLL もしくは Exe など)のサイズが膨大になります。ひとつひとつはちっちゃなサイズだからいいじゃん!と思いますか?…いえいえ、とんでもありません。ファイルでも、OS みたいな巨大なプログラム群ではちりもつもれば本来共通化できるはずの処理の分のサイズがどんどんかさみます。ちりつもです。
では、こうした共通の動作をひとつの「ライブラリ」にまとめて別に準備したファイルにしてシステムにおいておけば…、そう、ファイルサイズはコンパクトになりますよね。
こうした処理のカタマリのランタイムを実行時に自分のプロセスの中に呼び出し、必要な処理を順次行う体制にすることでプログラムは動作しています。

【CRT の "サポート OS" のなぞ】
上のリンクを見てみますと、ダウンロードセンターの "必要システム" の項、Windows Server 2008 がありません。

必要システム
サポートされているオペレーティング システム :
Windows 2000; Windows Server 2003; Windows Vista; Windows XP

image

管理者の皆様は、この方法大丈夫なの!?と懸念されるのではないでしょうか。
Visual C++ 開発チームに聞いてみました。結論からいうと、Windows Server 2008 はサポート対象になります。

ダウンロード センターは、モジュールの公開日時点でリリースされている OS を対象としてサポート対象を記述します。
上記パッケージの場合、リリース日が 2007/11/15 ですのでWindows Server 2008 は記述対象となりませんでした。
追記の予定は今のところないそうです。

【まとめ】
・Visual Studio 2005 をインストールする前に ILM を Windows Server 2008 に入れると Encription Key の保存でエラーが発生することがある (※)
・Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) をインストールし、再度インストールを実施すれば解決する
Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86) は Windows Server 2008 をサポート対象とします。 ダウンロード ページのサポート OS に Windows Server 2008 が含まれていないがこれはモジュールのリリース後に Windows Server 2008 がリリースされたため

(※) Visual Studio 2005 がインストールされていなくても、VC++ 2005 CRT がすでに導入されていれば問題ありません。

****

閑話休題みたいな何か
調布オフィスはマイクロソフトオフィスの中でも古いのに、何故か新宿と違ってなんというか、質実剛健というか、何もないところです。
新宿オフィスでカンパニーストアがオープンしました!というメールをキィー妬ましい!と往年の少女マンガのライバルのほうみたいにハンカチを噛みながら転げまわっていたのですが、先日から出張販売にちょこちょこ来ていただけるようになりました。
昨日もそんな出張販売日だったのですが、たま~にそういうのに出くわすと、なんか買わないといけない気分になっちゃって、私も息子に Windows 7 T シャツを買ってしまいました。ちなみにだんなはいまだに Visual C++ 5.0 (※ すでにサポートライフサイクルは切れております) のムラサキとショッキングピンクのタイダイ染めのビビッドで Windows Media Player の音声再生時のアレを想起させるすごい色彩の T シャツ(これ着て普通にヨ○バシとか行くし) を着てますので、まあおそろいでいいんじゃないでしょうか。

↓Windows Media Player の音声再生時の”アレ”。アタリ社のジャガーの CD プレーヤもこんなかんじだし、アメリカ人ってこういう感じの好きなのかな…。カウンターカルチャー万歳って?

image image  

それでは、また~

ういこう@クリスマスプレゼント選定中(去年はコレジャナイロボのソフビでした)