У меня есть некоторые ресурсы реестра, которые нужно удалить при установке, но не в том случае, если есть другие компоненты, которые нуждаются в них.[В идеале я бы сделал это, связав ресурсы с общими компонентами, но у меня здесь нет такой опции].
У меня есть некоторый общий код для запуска команд SQL (включая операторы DELETE), который отлично работаетвезде, но в данном случае оператор DELETE проходит нормально, но записи просто не удаляются.Я написал запрос, чтобы фактически проверить состояние таблицы после выполнения команды DELETE, и похоже, что только первый элемент записи базы данных фактически удаляется, а остальные поля в записи остаются без изменений.Когда я распечатываю записи таблицы, я получаю такие вещи, где первое поле пустое
, 2, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ xxxxxxxInstall, Version, yyyyyyy ,,,
MSI (s) (A8! 5C) [16: 49: 19: 628]: Пул строк базы данных поврежден.
Я изменил тактику и вместо того, чтобы просто выполнить команду DELETE, я сделал MsiViewModify для каждогозапись с MSIMODIFY_DELETE, но я получаю ту же проблему.
В конце мне пришлось просто отредактировать записи, чтобы они ссылались на другое значение, которое, я знаю, не будет существовать, но я неЭто по понятным причинам.
У кого-нибудь есть предложения по этому поводу?В MSI 1.0 была очень старая ошибка, связанная с пулами строк, но связанная с необходимостью фиксации файлов базы данных MSI, которая не применяется в контексте настраиваемого действия, когда вы получаете дескриптор, вызывая GetActiveDatabase ().