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
record-> Modified(...)で述べたように、次のように_com_errorをスローします。IDispatchエラー#1000?どういう意味ですか。これらのエラーコードはどこで検索できますか?これらはHRESULTではありません...
しかし、もっと重要な質問は、レコードを適切に更新するにはどうすればよいですか?選択したすべてのレコードを反復処理するにはどうすればよいですか?新しいフェッチを実行し、レコードをNULLと比較すると、無限ループが発生します。
助けてくれてありがとう、
Ovanes