Re: Windows Installer
От: sharpcell  
Дата: 19.09.06 07:35
Оценка:
Здравствуйте, tantrum, Вы писали:

T>Доброго времени суток, увожаемый All!

T>Возникла проблема, об которую набиваю себе большую шишку на голове.
T>Проблема такая :
T>Есть msi инсталляция, которая вызывает метод из DLL-ки (кустом акшэном).
T>Этот метод из DLL-ки делает следующие вещи :

T>//1)Получает хендл открытой базы.

T>hopenbase=MsiGetActiveDatabase(hInstall);

T>//2)Получает хендл view..


T>MsiDatabaseOpenView(hopenbase,

T> __T("INSERT into `Property` (`Property`.`Property`, `Property`.`Value`) VALUES('propDummy', 'valDummy')")

T> ,&hview));


T>//3)Пытается его запустить...

T>MsiViewExecute(hview,0)

T>Ну.. в этом случае возвращается код ошибки ERROR_FUNCTION_FAILED


T>..В общем, полный облом.

T>Проблема в правах доступа к базе :
T>//MSDN :
T>For read-only access to the current database obtain the database handle by calling MsiGetActiveDatabase


T>Как это можно обойти? Как из кустом акшн процедуры получить доступ для записи в базу???

T>Если у кого-то есть решения — плиз помогите.
T>Функция MsiOpenDatabase может получить хендл с доступом на запись... Но не могу представить, как её можно
T>использовать из кустом-акшн DLL-процедуры?

T>Извините за такой экспрессивный мессадж... Буду благодарен за любую помощь!



Да, можно обойти. У меня к примеру добавляются custom action на лету. Нужно в конце SQL запроса просто дописать VALUES(.ля..ля..) TEMPORARY. Но изменения будут только в памяти, вроде то что нужно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.