Мне нужно обновить столбец атрибутов в файле MSI. К сожалению, я не могу найти документацию (особенно для C++).Обновление таблицы MSI с использованием API программирования MSI
Вот фрагмент код, что я пытаюсь сделать:
DatabasePtr db = /* opening db succeeds*/
ViewPtr view = db->OpenView(_bstr_t("SELECT Attributes FROM Component"));
view->Execute(NULL);
RecordPtr record=view->Fetch();
record->PutIntegerData(2, record->GetIntegerData(1)|2048);
// I do not exactly understand the next 2 lines
// Should I really call Execute before Modify?
record->Execute(record);
record->Modify(msiViewModifyUpdate, record); //throws a _com_error
Как указан на Запись-> Изменить (...) бросить _com_error указания: IDispatch ошибка # 1000? Что это значит. Где я могу найти эти коды ошибок? Это не HRESULTs ...
Но более важные вопросы: как правильно обновить запись? Как я могу перебирать все выбранные записи? Выполнение новой выборки и сравнение записи с NULL приводит к бесконечному циклу.
Спасибо за помощь,
Ованес