У меня есть диалог (D1), в котором есть ComboBox, где элементы ComboBox заполняются пользовательским действием (C ++ dll).
UINT __stdcall FillComboBox(MSIHANDLE hInstall)
{
HRESULT hResult = WcaInitialize(hInstall, "FillComboBox");
if (FAILED(hResult)) return ERROR_INSTALL_FAILURE;
MSIHANDLE hTable = NULL;
MSIHANDLE hColumns = NULL;
hResult = WcaAddTempRecord(&hTable, &hColumns, L"ComboBox", NULL, 0, 3, L"COMBOBOXVALUES", 1, L"ABC");
hResult = WcaAddTempRecord(&hTable, &hColumns, L"ComboBox", NULL, 0, 3, L"COMBOBOXVALUES", 2, L"DEF");
hResult = WcaAddTempRecord(&hTable, &hColumns, L"ComboBox", NULL, 0, 3, L"COMBOBOXVALUES", 3, L"GHI");
}
Когда пользователь выбрал элемент, активируется следующая кнопка и отображается другое диалоговое окно (D2) (если пользователь нажимает следующую кнопку) с другим комбинированным списком.Поле со списком D2 также заполняется настраиваемым действием так же, как и первое, но выбор элементов основан на элементе, который был выбран в первом диалоговом окне (D1).
Моя проблема заключается в том, чтопользователь нажимает кнопку «Назад» в диалоговом окне D2, а в диалоговом окне «D1» изменяет выбор комбинированного списка, а затем нажимает следующую кнопку (для возврата к D2). Я хочу «перезагрузить» элементы в D2-ComboBox, используя новое значение, котороебыл выбран в D1.
Есть ли способ очистить таблицу MSI из кода C ++?
Можно ли удалить таблицу со списком, используя функцию
MsiDatabaseOpenView(hDatabase, L"DELETE FROM 'ComboBox' WHERE 'Property' = 'COMBOBOXVALUES'", &hView)