我需要更新 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
如记录->Modify(...) 所述,抛出 _com_error 说明:IDispatch 错误 #1000?这意味着什么。我在哪里可以查看这些错误代码?这些不是 HRESULT...
但更重要的问题是如何正确更新记录?如何遍历所有选定的记录?执行新的提取并将记录与 NULL 进行比较会导致无限循环。
谢谢你的帮助,
欧文斯