新旧Versionが同居する環境で、旧Ver.をアンインストールすると新Ver.でCOMが動作しなくなる

ColdFusionは、1台のサーバーに複数のバージョンのColdFusionをインストールすることが可能です。ですので、例えばColdFusionをバージョンアップする時は、新しいバージョンのColdFusionをインストールして、プログラムや設定の移行を行った後に古いバージョンのColdFusionをアンインストールする事などがあります。

その際、古いバージョンのColdFusionをアンインストールした後、新しいバージョンのColdFusionでCOMの呼び出し時にエラーが発生して処理が失敗することが報告されています。これは、古いバージョンのColdFusionをアンインストールする際に、COMの呼び出しで利用するDLLライブラリの削除が正しく行われないことが原因となります。

この問題は、各バージョンのColdFusionオンラインマニュアルにも記載されています。

 

こちらの環境では、下記の手順を行ったことで、この問題を確認しました。

  1. ColdFusion 9 をインストール
  2. ColdFusion 10 と最新のアップデートをインストール
  3. ColdFusion 9 をアンインストール
  4. OSを再起動
  5. アンインストール後も残っていたColdFusion 9フォルダを削除(または別名に変更)
  6. ColdFusion 10 でCOMを利用するプログラムを呼び出す
  7. エラーが発生

 

上記の手順で出力されたエラーは、以下となります。

  • [cf10_root]/[instance_name]/logs/coldfusion-out.log
    (既定: c:\ColdFusion10\cfusion\logs\coldfusion-out.log)

    Error [catalina-exec-1] - COM  object のインスタンスを生成する際に、例外が発生しました。
    この例外の原因 : AutomationException: 0x8007007e - 。 インクルードまたは処理されたファイルの特定のシーケンス :C:\ColdFusion10\cfusion\wwwroot\com.cfm, line: 1
     

上記のエラーが発生した原因は、Microsoft Type Viewer(TypeViewer.dll)ファイルです。手順3のColdFusion 9アンインストール時、後からインストールしたColdFusion10のTypeViewer.dllを削除してしまうためです。これは、ColdFusion 9 も10も同じCOMコンポーネント(TypeViewer.dll)をシステムに登録して使用するため、システム上では後から指定されたTypeViewer.dllの情報をもとにアンインストールが行われます。

対応としては、ColdFusion10に削除されたTypeViwer.dllファイルを再び配置して、システムに再度登録し直すことで、再びCOMが使用可能になりました。その時の手順を参考情報として紹介します。

参考手順

  1. TypeViwer.dllがColdFusion10のlibフォルダ(c:\ColdFusion10\cfusion\lib)内から削除されている事を確認します。
  2. TypeViewer.dllはColdFusion 9 も10 も同じファイルであったため、ColdFusion9をアンインストール後に残っていたフォルダから、(c:\ColdFusion9\libで)TypeViewer.dllを見つけて、そのファイルをColdFusion10のlibフォルダにコピー(移動)しました。
    • アンインストール後にフォルダを削除してTypeVierer.dllが残っていない場合は、別のPCにColdFusion10の評価版をインストールして、そこからTypeVierer.dllをコピーしてくる方法をお試し下さい。
  3. コマンドプロンプトを開きます。
  4. regsvr32コマンドを実行して、システムに登録を行いました。
    • regsvr32.exe "C:\ColdFusion10\cfusion\lib\TypeViewer.dll"
  5. システムに登録が行われたかを確認します。
  6. ColdFusion 10 で再びCOMを呼び出すプログラムを実行します。

 

 


記事公開日:2013年04月24日
最終更新日:2013年04月24日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.