Расширение FilesInUse с помощью DTF

У меня есть установщик, в котором я написал простое настраиваемое действие для подсчета определенного типа процесса в свойстве (расширение AppSearch), а затем использовал его в LaunchConditions для запуска установщика. Клиенту теперь нужен более богатый опыт, поэтому я попытался немного переписать его, чтобы вызвать диалоговое окно FilesInUse.

[CustomAction]
public static ActionResult DetectRunningProgram(Session session)
{
    var record = new Record(2);
    record[0] = null;
    record[1] = "Calc.exe";
    record[2] = "Calculator";
    session.Message(InstallMessage.FilesInUse, record);
    MessageBox.Show("TEST");

    return ActionResult.Success;
}

Я запланировал это после AppSearch. Я вижу, что отображается диалоговое окно FilesInUse, но оно не становится модальным. Как только я закрываю окно сообщения TEST, FilesInUse исчезает, и я получаю диалоговое окно InstallWelcome.

Что мне не хватает? Я не использую внешний пользовательский интерфейс... только собственный пользовательский интерфейс.


person Christopher Painter    schedule 20.04.2013    source источник
comment
Кажется, проблема заключалась в том, что я запланировал пользовательское действие слишком рано. Перемещение его после исправлено. Я собираюсь оставить это без ответа на тот случай, если кто-то (Роб) захочет заполнить детали «ты не знаешь, чего не знаешь».   -  person Christopher Painter    schedule 20.04.2013
comment
Теперь у меня все работает, включая создание записи размером в зависимости от того, сколько процессов нужно добавить.   -  person Christopher Painter    schedule 21.04.2013


Ответы (1)


Действие CostFinalize будет необходимо для инициализации значимого состояния в установщике Windows. Тот факт, что установщик Windows не обрабатывает FilesInUse до InstallValidate, является хорошим намеком. Планирование пользовательского действия после CostFinalize должно заставить все работать. Например, пользовательское действие RestartResource в наборе инструментов WiX, которое добавляет записи в диспетчер перезапуска, запланировано непосредственно перед InstallValidate.

person Rob Mensching    schedule 20.04.2013