Хобрук: Ваш путь к мастерству в программировании

Проект развертывания .NET: пользовательское действие, которое отменяет деинсталлятор

У меня есть проект развертывания .NET. Я хотел бы добавить пользовательское действие удаления, которое проверяет определенные условия и при необходимости отменяет удаление. Это возможно?

Насколько я понял, можно определить только пользовательские действия, которые не могут повлиять на сам основной установщик.


Ответы:


1

Ответ на самом деле довольно прост, но также довольно уродлив.

В момент пользовательского действия, когда я хочу отменить удаление, я просто бросаю ApplicationException:

//Nono. Don't uninstall. To abort uninstall, throw an exception
throw new ApplicationException(Constants.CONST_APP_NAME + @" can't be uninstalled because the preparation hasn't been completed.");
27.10.2009

2

Меня бы удивило, если бы это было возможно. По моему опыту, как только вы пытаетесь использовать проект установки VS для выполнения чего-либо, что нельзя перетащить в дизайнере, вы напрашиваетесь на неприятности.

Другими словами, это отстой, но я не знаю, зеленее ли трава с другой стороны (например, InstallShield), потому что я никогда не использовал это.

18.09.2009
Новые материалы

Шлюз с лицензией OSS, совместимый с Apollo Federation v2, появится в WunderGraph
Сегодня мы рады сообщить, что мы сотрудничаем с поддерживаемой YC Tailor Technologies, Inc. для внедрения Apollo Federation v2. Реализация будет лицензирована MIT (Engine) и Apache 2.0..

Это оно
Ну, я официально уволился с работы! На этой неделе я буду лихорадочно выполнять последние требования Думающего , чтобы я мог сосредоточиться на поиске работы. Что именно это значит?..

7 полезных библиотек JavaScript, которые вы должны использовать в своем следующем проекте
Усильте свою разработку JavaScript Есть поговорка «Не нужно изобретать велосипед». Библиотеки — лучший тому пример. Это поможет вам написать сложные и трудоемкие функции простым способом...

Базовое руководство по переносу концепций обучения в глубокое обучение
Обзор По мере того, как машинное обучение становится все более мощным и продвинутым, модели, обеспечивающие эту расширенную возможность, становятся все больше и начинают требовать огромного..

C в C.R.U.D с использованием React-Redux
Если вы использовали React, возможно, вы знакомы с головной болью, связанной с обратным потоком данных. Передача состояния реквизитам от родительских компонентов к дочерним компонентам может..

5 обязательных элементов современного инструмента конвейера данных
В цифровом мире предприятия используют конвейеры данных для перемещения, преобразования и хранения огромных объемов данных. Эти конвейеры составляют основу бизнес-аналитики и играют..

Случай использования npm3 вместо npm2 для разработки библиотеки
Некоторое время назад я создал библиотеку на NodeJS, чтобы упростить рендеринг на стороне сервера и клиента. Он использует React и React Router для отображения соответствующего HTML на веб-сайте...