Разработка инсталляторов. Advanced Installer. Урок 13.1. Поиск пути для установки обновления или модификации на примере игры S.T.A.L.K.E.R. Тень Чернобыля.
Привет всем. Сегодня наконец кто-то всё же заинтересовался моими постами. Значит я не зря пишу. Вопрос был задан тут и звучал так:
Здравствуйте! Вы можете подсказать, я сделал мод для игры, сделал с помощью Advanced Installer инсталлятор. Мод нужно установить в корневую папку игры где есть файл (к примеру) stalker.exe. Можно ли задать правило инсталлятору, которое давало возможность устанавливать в ту папку где есть этот файл stalker.exe? Это нужно чтобы человек не устанавливал на левые папки, чисто ради удобства пользователям.
Действительно, про это я не писал. Сейчас исправлюсь.
При установке игры S.T.A.L.K.E.R она создаёт раздел в реестре HKEY_LOCAL_MACHINE\SOFTWARE\GSC Game World\, далее в зависимости от игры. У меня это HKEY_LOCAL_MACHINE\SOFTWARE\GSC Game World\STALKER-SHOC.
Открываем программу Advanced Installer и наш проект с модом, если вы его создали. Иначе создаём проект. Я уже много об этом писал, повторяться не буду. Для поиска пути установки игры воспользуемся вкладкой "Поиск". Создаём новую операцию поиска.
Переименовываем операцию, например, в STALKER. Операция поиска является свойством установщика, про них я также писал.
Добавляем расположение для поиска. Нам требуется выбрать реестр.
Выбираем раздел реестра. Значение прописывем вручную или выбираем в вашем реестре.
В выборе типа требуется выбрать "Значение содержит путь к папке".
Проверяем результат поиска.
Теперь переходим на вкладку "Параметры установки". Изменяем папку приложения. Выбираем "Свойство" -> Пользовательские настройки -> STALKER (Свойство нашего поиска).
Всё. Теперь можно собирать проект. Путь для установки будет прописан так, как нам нужно.
Также можно добавить условие. То есть если путь установки не найден, то установка будет невозможна. Для этого переходим на вкладку "Условия запуска" -> Другое. Создаём новое условие. Выбираем Условие -> Вставка операнда -> Cвойство -> Пользовательские настройки -> STALKER.
Пишем описание для него. Это текст, который будет показан пользователю при установке, если условие не будет выполнено. В данном случае если раздел реестра не будет найден.
Получаем готовое условие.
Собираем проект.
Я удалил ветку реестра для тестирования (предварительно сделал её экспорт). После сборки проекта запускаем готовый установщик. И получаем нужный результат:
Если же вы вообще хотите отключить выбор папки установки, то удалите диалоговое окно FolderDlg на вкладке "Диалоговые окна".
Аналогично можете экспериментировать с поиском файлов и т.п. Я этого ещё не делал - но на днях проверю как лучше организовать поиск пути не через реестр. Всем спасибо за внимание и поддержку.