Мне нужно обновить столбец Атрибуты в файле MSI.К сожалению, я не могу найти никакой документации (особенно для C ++).
Вот фрагмент кода того, что я пытаюсь сделать:
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?Что это значит.Где я могу найти эти коды ошибок?Это не HRESULT ...
Но более важные вопросы - как правильно обновить запись?Как я могу перебрать все выбранные записи?Выполнение новой выборки и сравнение записи с NULL приводит к бесконечному циклу.
Спасибо за помощь,
Ovanes