Откат установки на основе условия - PullRequest
2 голосов
/ 26 ноября 2011

При обычном удалении приложения из системы, если в системе зарегистрировано более одного пользователя, будет отображаться окно сообщения

enter image description here

, если пользователь нажметпродолжить, удаление происходит, но может быть с ошибками.У меня есть установщик проекта, в котором я хочу завершить процесс установки, если в систему вошли более одного пользователя. Поэтому я написал это условие в событии Before_UnInstall:

if(Process.GetProcessesByName("explorer").Count()==1)
{
        //do uinstall
}

else
{
       //do not do unistall
}

У меня был вопрос, как мне сделать это?остановить событие удаления от запуска, в другой части?

Возможное изменение

на основе ответа Алексея. Я подумал, что проверю различных владельцев процесса.Я нашел, как найти владельца процесса с помощью WMI из здесь

1 Ответ

2 голосов
/ 27 ноября 2011

Вы не должны делать это самостоятельно: установщик Windows позаботится о файлах, заблокированных другими процессами. Кроме того, для пользователя допустимо иметь несколько процессов проводника , поэтому ваш код откажется от удаления в таком случае, пока в систему вошел только один пользователь. И я сомневаюсь, что вы можете обнаружить процессы от других пользователей, если вы не запустите этот код с повышенными правами.

Что вы действительно хотите проверить, так это то, работает ли приложение, которое вы удаляете, под какой-либо учетной записью пользователя. Если другие пользователи компьютера не запускают ваше приложение, обычно безопасно продолжить.

...