みゃみゅ玉子 Blog

ほのぼの開発メモ

AILight Banner
AILight Blog

プロフィール

みゃみゅ玉子 Blog

目次

Blog 利用状況

記事分類

過去の記事

タグ

インストーラーのカスタム動作と普通に実行の違い

現在、はまり中です。
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


コメントを追加

#  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
タイトル
名前
URL
コメント