» Проверка установленного ПО

Официальный сайт SFX Creator
Группа SFX Creator [В]Контакте
Эта возможность SFX Creator позволяет вам определить наличие уже установленного программного обеспечения в системе в момент запуска вашего SFX архива.
Если решили воспользоваться данной возможностью, то дочитайте до конца странички :)
Расшифровка разделов реестра Показать »
HKCR => HKEY_CLASSES_ROOT
HKLM => HKEY_LOCAL_MACHINE
HKCU => HKEY_CURRENT_USER
HKU  => HKEY_USERS
HKCC => HKEY_CURRENT_CONFIG


Определение по значению параметра в реестре

Если ПО оставляет в реестре какую то уникальную запись о своём присутствии (это, может быть например, раздел с настройками программы), то вы легко сможете определить, установлено ли требуемое ПО или нет.
Примечание. Проверка производится только по строковым параметрам, т.е. тип параметра должен быть REG_SZ

Только проверить наличие параметра
Иногда не важно, какое значение имеет проверяемый параметр, поэтому я решил добавить данный переключатель
Если вы его отметите, то SFX Creator не будет читать значение параметра, а всего лишь проверит, существует указанный вами параметр или нет.
Если параметр существует - ПО будет считаться определённым в скрипте установщика

Успешно, если значение параметра...
Тоже не плохой список доступных вариантов, не правдо ли? ;)
Полностью совпадает с
Если значение параметра идентично указанному, ПО считается определённым. При сравнеии регистр символов не учитывается

Присутствует текст
Если в значении параметра присутствует указанный вами текст - ПО считается определённым
Полезно, например, когда в значении параметра много лишней информации, и при "полном совпадении" определить невозможно

меньше, чем (либо версия)
Здесь идёт сравнение чисел, вы также можете указывать версию файла/приложения
Логическое сравнение делает эту функцию идеальной, почему? Потому что SFX Creator будет сравнивать по методу "версия", "сборка" и т.д.
Например, в значении определяемого параметра версия состоит из 4 чисел:
2.0.0.1
Если вы в поле для сравнения введёте значение 2.0.0.0, то ПО не будет считать определённым (и это правильно), т.к. по сути, версия 2.0.0.1 которая хранится в реестре выше той, которую вы указали при сравнении

больше, чем (либо версия)
По аналогии с предыдущим :)

равняется версии
Здесь тоже идёт логическое сравнение версий.


Определение по существованию файла/папки
Тоже довольно таки частое дело, когда ПО можно определить только по наличию определённого файла или директории

Переключателем выбираем, что мы будем определять: файл или папку
В поле рядом с переключателями вводим:
Если определяем файл: путь и имя файла с расширением (конечно же без переменных мы не обойдёмся)
Если определяем папку: путь к папке, думаю логично ;)

Успешно, если версия файла...
Если вы хотите определить и версию файла, то ставьте галочку и выбирайте условие сравнения

Взять путь файла/папки из параметра в реестре
Вот здесь аккуратнее, учтите, что не факт, что параметр будет существовать в реестре, ну собственно вы и сами это знаете :)
Примечание. Если вы включаете возможность брать путь файла из параметра в реестре, то в поле выше следует вводить только имя файла с расширением, т.к. путь уже будет добавлен из значения параметра в реестре, который вы указали


Определение поиском в реестре, в ветке Uninstall
SFX Creator будет искать во всех разделах ветки в параметре "DisplayName" указанную вами фразу
Если вы хотите, чтобы при поиске SFX Creator проверил и наличие файла в директории, которая будет прописана в параметре InstallLocation/InstallPath найденной программы, то в поле правее имени программы впишите имя файла с расширением


Определение по коду MSI продукта
Мне кажется, здесь и объяснять то, особо нечего)
Вводите в поле код MSI продукта, при запуске инсталлятор проверит наличие установленного продукта по указанному вами коду
Если вы не знаете кода продукта, то можете воспользоваться кнопочкой "Взять код продукта из MSI файла", укажите на MSI файл, код продукта которого вам необходимо извлечь, и SFX Creator сделает это


Автоматическое определение
Здесь довольно таки грустная ситуация с количеством программ
Если вы обладаете информацией, по каким следам в системе можно определить какой либо важный компонент системы (например как .NET Framework), без которого не могут работать какие-либо программы, то не стесняйтесь и пишите


Ваше решение (если не успешно)
Здесь мы указываем, как вашему установщику вести себя в ситуации, если ПО не будет определено.
Вы можете показать пользователю сообщение с выбором типа сообщения
Если у вас выбрано "Автоматическое определение", то в поле сообщения вы можете указать переменную $SoftIsVersion, которая возвратит версию которая установлена у пользователя, и переменную $SoftIsName, которая возвратит имя определяемой программы
Например, вы определяете наличие Internet Explorer, и вводите "Версия имеет значение" версию 20
В поле сообщения вводите такой текст: Для продолжения установки требуется наличие $SoftIsName версии 20, у вас установлена - $SoftIsVersion версия приложения
При проверке версии IE пользователю будет показано такое сообщение: Для продолжения установки требуется наличие Internet Explorer версии 20, у вас установлена - 8 версия приложения


Тестируем определение ПО без занесения данных в проект
Удобную возможность реализовал, вы можете даже не заносить данные в проект, а сможете уже посмотреть, как будет проходить определение ПО по введённым вам данным!
Выбираем тип определения и заносим все необходимые данные
Затем, в самом низу диалога нажимаем на кнопочку с иконкой информации и ждём...
SFX Creator скомпилирует тестовый проект и запустит его автоматически