【发布时间】:2014-08-24 15:12:42
【问题描述】:
我需要更新 MSI 文件中的属性列。不幸的是,我找不到任何文档(尤其是 C++)。
这是我正在尝试做的代码 sn-p:
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 进行比较会导致无限循环。
感谢您的帮助,
风向标
【问题讨论】:
标签: installation windows-installer record dtf