Доброго времени суток!
Вот вкратце моя проблема:
Есть написанный на С++ инсталлятор. В процессе работы необходимо оттуда запустить установку BDE. запускаю стандартно:
if ( ! CreateProcess( NULL,
Path_BDE_SETUP,
NULL,
NULL,
TRUE,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&si,
&pi)
)
{
MessageBeep( MB_ICONERROR );
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hThread );
CloseHandle( pi.hProcess );
все бы хорошо, но на WaitForSingleObject — весь процесс замирает, пока не "срублю" поток инсталлятора, тогда и продолжается установка BDE. Я так понял, это происходит из-за того, что инсталшилд вначале стартует виртуальную дос-машину, зачем-то (я смотрел по pi.hProcess ) и WaitForSingleObject ловит его хендл и впадает в бесконечное ожидание...
Кто-нибудь сталкивался с подобным?
Решил сделать по-другому:
"Выковырял" BdeInst.dll, гружу и вызываю DllRegisterServer — и все-бы хорошо, но под WinXP SP3 — возникает ошибка во время регистрации, пишет, что не хватает места на диске и спрашивает, продолжить ли? Когда соглашаешься — то дальше все идет нормально. Но неприятно пугает пользователей. Может кто-нибудь и с этим сталкивался?
09.12.08 01:20: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт