Я не уверен, как это сделать с C#, но при использовании Nullsoft Installer это подход, который я видел: перед установкой проверьте раздел реестра, который создается во время установки.
Деинсталляторы отображаются в панели управления «Установка и удаление программ». Список деинсталляторов хранится в HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall. Если программа установки регистрирует деинсталлятор, ключ деинсталлятор является хорошим ключом для установки, чтобы проверить, потому что:
Предполагая, что программа устанавливается для всех пользователей, ключ проверяется на должны находиться под HKEY Local Machine (HKLM) не является ключевым для текущего пользователя (HKey Current User). Ключ деинсталлятора находится под HKLM
Иногда несколько версий одной и той же программы должны устанавливаться бок о бок. Клавиши удаления должны быть конкретными для каждой версии, поэтому правила могут быть добавлены для проверки номера версии установщика на установленные версии.
Существует ограничение с проверки ключей реестра, чтобы сказать, если установлена программа: если программа удалена из Program Files вручную (без использования деинсталлятора), повторная установка не будет выполнена. Чтобы избежать этой проблемы, после обнаружения ключа реестра деинсталлятора установщик может проверить, что программа удаления не существует. Если это так, вероятно, безопасно предположить, что программа все еще установлена.
Во время игры с установщиками и условной установкой стоит иметь в виду, что иногда переустановка полезна для устранения проблем. Это может быть утомительным, чтобы быть вынужденным пройти через (хлопотную) деинсталляцию, чтобы иметь возможность переустановить.
См. NSIS's page on Add/Remove Programs для получения дополнительных сведений о удалении ключей реестра.