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
に記載されています。
とりあえず、参考までに。