インストーラーのカスタム動作と普通に実行の違い
現在、はまり中です。Virtual PCで、空っぽなWindowsXPの環境を作ってインストーラーのテスト中なんですけど。
インストールの最中にIEを全部閉じるって処理をカスタム動作で入れてるんですね。
カスタム動作で実行するアプリケーションを作って、そいつを実行するとIEを閉じるっていうやつ。
どうも、そこでエラーになってるんですよね。
タイトルが「Microsoft Visual C++ Runtime Library」。内容が
This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.ってな感じ。
最初から入ってるDLLじゃないのを呼んでしまったのかなぁ・・・と思いつつも、そのEXEだけもってきて実行。
・・・・普通に動く・・・・IEも終了する・・・ちゃんと。
なにが違うんだ?権限かな??
IShellWindowsPtr m_spSHWinds; m_spSHWinds.CreateInstance(__uuidof(ShellWindows)); long nCount, i, j; m_spSHWinds->get_Count(&nCount);↑どうも、このget_Countでエラーになっているらしい。
てことは、CreateInstanceが実は失敗しているのではなかろうか?
うーむぅ・・・とりあえず調べよう。。。
投稿日時 : 2005年7月25日 20:09
Tweet

コメントを追加
# re: インストーラーのカスタム動作と普通に実行の違い 2005年7月25日 21:44 社本@ワック
きちんとHRESULTをチェックしましょう。。COMの初期化し忘れてるとかありません?
# re: インストーラーのカスタム動作と普通に実行の違い 2005年7月25日 22:06 渋木宏明(ひどり)
同じく、CoInitialize() を忘れているに1票。# re: インストーラーのカスタム動作と普通に実行の違い 2005年7月25日 22:16 みゃみゅ玉子
コメントありがとうございます。HRESULT取ってなかったですね。。。
HRESULT hr = m_spSHWinds.CreateInstance(__uuidof(ShellWindows));
に変更します。
それで、SUCCEEDED(hr)でチェックすればCreateInstanceがOKかどうかわかりますね。
CoInitialize(NULL);
入れてます。。。
あ!ひょっとしてここでNGとか・・・
調べてみます。
# re: インストーラーのカスタム動作と普通に実行の違い 2005年7月25日 22:57 みゃみゅ玉子
エラー取れた!取れました!!CreateInstanceでエラーが出ていて、
「クラスが登録されていません」
・・・・?
EXEを持ってきて実行したときはうまくいく。
インストーラーのカスタム動作のときは「クラスが登録されていません」。
開発PCではうまくいく。
・・・・????
CoInitialize();が失敗しているわけじゃないっぽいし。。。
# re: インストーラーのカスタム動作と普通に実行の違い 2006年9月29日 2:50 Array
Array