Chiharu の日記

絵描き C/C++ プログラマーの日記です。

Side by side にハマる

今日はちょこっと仕事の話。
業務で、Windows XP 以降に導入されたという Side by side にハマる。開発環境では、MSVC2005 でバイナリ作るとデフォルトで使用される。断言していいけど、新たな DLL-Hell の仕組みだよ、これ。致命的なのが、システムにインストールされている DLL とビルド時にリンクした DLL のバージョンが違うと異なるモジュールと認識され、当該 DLL にリンクした exe が起動してくれないこと。本来はこれがウリらしいのだが、現状、開発環境だけバージョンアップして、ユーザ環境へのアップデータは一切無配布という MS の姿勢はどうなのか (最低限、Windows Update で当該 DLL を強制アップデートさせるとかする必要があると思う。) これを開発者の責任でバージョン合わせろというのは、ちょっと OS ベンダとして無責任な気がする。たぶん、今、MSVC2005 SP1 でビルドしてる人は軒並みハマるんじゃないかな。開発環境では動作するのに、テスト環境で動作しないって。それとも一通りハマった後なのかな。
あと、ランタイムに付随した問題で、再頒布パッケージの MSM。MSI に MSM 形式のランタイムインストーラを組み込むのは良いのだけれど、例えばインストーラ起動中に当該ランタイムを使用するカスタムアクションの起動やら、サービス起動をしたい場合、ランタイムインストールとのタイミング問題はどうすればよいのか。
上記 2 点は根の異なる問題だけど、こんな面倒なことになるなら、COM じゃないけど、system32 フォルダの下にインストールする共有ライブラリは一度リリースしたら I/F を変えないとか、そういう規約を設けるを設けて、従来どおり『アバウトなリンク』で昔の DLL を名前を変えずにアップデートしてくれた方が良かったと思う。
まぁ、何かにつけて Windows は面倒だな、と。あぁ。ハマるハマる。ホント、前者は理解すればなんとかなるけど、後者はハマったまま。解決しないと。