private void Deleting() { string server; string database; // Получаем имена сервера и базы данных. NameViewConverter.ParseNameView(sessionProp.SelectedDatabase, out server, out database); // Получаем информацию об этой базе. DatabaseInfo info = Session.GetService<ISessionDatabaseInfoExtension>().GetDatabaseInfos().FirstOrDefault(v => v.Server == server && v.Name == database); // Если база данных существовала (т.е. не добавлена пользователем), // то запомним ее в специальном списке существующих баз данных (в элементе управления). // Так как это структура, то если ничего не будет найдено в запросе LINQ, поле Server не будет проинициализирован. if (!string.IsNullOrEmpty(info.Server) && !info.IsNew) { // Для вывода элемента будем использовать имя, версию и признак поддержки. // Для значения сохраним, в виде строки, сериализованный DatabaseInfo в CustomActionData. WixComboBox combo = new WixComboBox(Session, sessionProp.ExistControlProperty); // Здесь аккуратнее, так как ComboBox не отображает некоторые символы. string displayedName = sessionProp.SelectedDatabase + " " + info.Version + (info.IsRequiringUpdate ? "" : " (не поддерживается)"); CustomActionData customActionData = new CustomActionData(); customActionData.AddObject<DatabaseInfo>(typeof(DatabaseInfo).ToString(), info); combo.AddItem(new WixComboItem(displayedName, customActionData.ToString())); // Значение по умолчанию. combo.SelectedValue = combo.Items.Count > 0 ? combo.Items[0].Value : ""; } Session.GetService<ISessionDatabaseInfoExtension>().DeleteDatabaseInfo(server, database); }