Использование обработчика событий ItemCheck
является правильным методом для определения, когда пользователь отмечает или снимает отметку с элемента в CheckedListBox
. И да, он также будет срабатывать, когда элемент проверен / снят программно.
Если вы не хотите, чтобы событие запускалось при программной установке / удалении элементов, вы должны удалить обработчик события перед этим.
Предполагая, что ваш обработчик событий выглядит следующим образом:
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
Debug.Print("Checked");
}
else if (e.NewValue == CheckState.Unchecked)
{
Debug.Print("Un-Checked");
}
}
Прежде чем устанавливать / сбрасывать элементы программно, вы должны добавить строку:
this.checkedListBox1.ItemCheck -= this.checkedListBox1_ItemCheck;
и после того, как элементы были установлены / сбросить вас в коде, заново добавить обработчик событий с помощью:
this.checkedListBox1.ItemCheck += this.checkedListBox1_ItemCheck;
По моему опыту, парафин Джона Роббинса решает многие проблемы с tallow.exe (heat .exe в v3). Я не уверен, что Paraffin хорошо играет с v3, но, возможно, стоит проверить.
К вашему сведению, я использовал Paraffin в процессе сборки, и это позволило мне удалить предыдущий процесс очистки на 2-3 шага, который включал скрипт powershell.
Спасибо за предысторию, я не знал, что они работают над новой версией Wix. Согласно странице проекта, это еще не RTM, так что это может объяснить ваши проблемы. Я надеюсь услышать от разработчиков WIX в одном из ответов.
Я не могу помочь вам использовать функции Heat.exe в стадии разработки. Тем не менее, я был в вашей ситуации, и мое решение состояло в том, чтобы создать инструмент, который использовал бы информацию о каталогах и файлах в качестве входных данных и генерировал действительные файлы проекта wix в качестве выходных данных. Файл .vsproj - это просто файл XML, и вы можете использовать XSL, LINQ в C #, PowerShell или ряд других инструментов для выполнения этой работы. Я лично использовал (pre-LINQ) C # / XMLDOM для анализа файлов проекта VS с этой целью.
Удачи,
Дейв
Для получения информации об обновлении автоматически сгенерированных настроек прочитайте это . Возвратное сообщение:
Установщик Windows не позволяет вам удалить компоненты при незначительном обновлении
Трудно гарантировать, что компоненты продолжат существовать, если вы автоматически создадите свою настройку. Поэтому вам придется выбирать между автогенерацией компонентов и возможностью выполнять незначительные обновления.
Если у вас есть некоторые автоматически сгенерированные компоненты, просто придерживайтесь крупных обновлений. Вы можете использовать этот образец Робом в качестве примера.
Для получения документации ознакомьтесь с файлом справки, установленным с WiX - WiX.chm предоставляет самая актуальная информация (вместе с параметром командной строки -help
).