VS2005導入以降は、C#とVB.netばかり使っていた私ですが、タイプライブラリの無いCOMオブジェクトを使う必要があったため、止む無く、C++でラップしたCOMのDLLを作成しました。


ところが、配布テストの段階で、HRESULT -2147010895のインストールエラー。


即、ググると、ランタイムがパッケージに同梱されていないのが原因です。


ああ、なるほどね。


C#やVB.netだけの場合だと、.NET Frameworkが前提として存在するわけですが、そこらへんは、VSがセットアップを作成する際に、自動的に検出してくれるので、ほとんど気にすることもありませんでした。


C++の場合は、そこらへんは手作業でやらなくちゃいけないんですよね。


すっかり、失念していました。


ただ、C++のランタイムインストールパッケージ込みで配布するのアーカイブのサイズが大きくなって、嫌だなと思い、Dependency Walker(Depends.exe)で調べたところ、使っていたのは、atl80.dllとmsvcr80.dllのみ。


で、最低限必要なDLLとマニフェストファイルのみを同梱して、再度、配布テストです。


今度は、OK!


それにしても…


今回は、たまたま、クリーンなPCで配布テストができたらから気づいたのですが、クリーンなPCが無かったら、公開後、クレームの嵐になるところでした。


ホント、冷や汗モノです。


ちなみに…


Dependency Walkerの格納パスは、


(VSインストールパス)\Common7\Tools\Bin\


再配布可能なラインタイムについての情報は、


http://msdn.microsoft.com/ja-jp/library/ms235299.aspx


に記載されています。


とりあえず、参考までに。