Проверьте, установлено ли приложение - PullRequest
4 голосов
/ 17 октября 2008

Я хочу проверить, установлено ли приложение в условиях запуска. Если да, я хочу выйти из программы установки, если нет, установка должна продолжаться. Кто-нибудь может сказать, как добиться этого в установщике c #? *

С уважением, Суровый Суман

Ответы [ 3 ]

8 голосов
/ 17 октября 2008

Я не уверен, как это сделать конкретно с C #, но при использовании Nullsoft Installer я видел такой подход: перед установкой проверьте созданный раздел реестра. во время установки.

Деинсталляторы отображаются на панели управления «Установка и удаление программ». Список удаления хранится в папке HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall. Если установщик регистрирует деинсталлятор, ключ деинсталлятора является хорошим ключом для проверки, так как:

  1. При условии, что программа устанавливается для всех пользователей, проверяемый ключ должен находиться под HKey Local Machine (HKLM), а не ключом, специфичным для текущего пользователя (HKey Current User). Ключ деинсталлятора находится под HKLM

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

Существует ограничение на проверку ключей реестра, чтобы определить, установлена ​​ли программа: если программа удалена из Program Files вручную (без использования деинсталлятора), переустановка завершится неудачно. Чтобы избежать этой проблемы, после нахождения раздела реестра для деинсталлятора установщик может проверить, существует ли программа деинсталлятора. Если это так, то, вероятно, можно предположить, что программа все еще установлена.

Во время игры с установщиками и условной установкой следует помнить, что иногда переустановка полезна для устранения проблем. Может быть утомительно проходить (хлопотное) удаление, чтобы иметь возможность переустановить.

См. Страница NSIS по установке и удалению программ для получения дополнительной информации об удалении разделов реестра.

4 голосов
/ 17 октября 2008

Поместите запись в реестр при установке. Если при запуске установщика эта запись есть, значит, программа уже установлена ​​(или ваш пользователь взломал реестр, чтобы заставить установщика подумать, что это было). Если это не так, то вы еще не установили его.

0 голосов
/ 13 апреля 2009

Если вы не хотите помещать что-либо в реестр (из-за прав администратора или чего-то подобного), вы можете просто проверить, присутствуют ли установленные вами папки или файлы. Да, это предполагает, что вы устанавливаете в одну и ту же папку каждый раз, но это вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...