Разработка инсталляторов. 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 на вкладке "Диалоговые окна".

Аналогично можете экспериментировать с поиском файлов и т.п. Я этого ещё не делал - но на днях проверю как лучше организовать поиск пути не через реестр. Всем спасибо за внимание и поддержку.


Comments 4


привет, @zaguzin! я всегда интересуюсь вашими постами. только я в ним мало что понимаю. но внимательно читаю. жду, когда количество перерастет в качество :))

13.04.2017 17:00
0

Спасибо. Надеюсь это скоро случится.

13.04.2017 17:06
0

Спасибо за то, что делаете такие туторы. Не думал, что из-за моего вопроса сделаете индивидуальную статью. Статья информативная и понятная, но если игра есть в регистре. Проблема в том, что игра может быть не установлена, а просто распакована. Нужно как-то сделать проверку папки, пользователь которую выбирает как корневую игры, на конкретный файл. При этом если игру не установить, я так понимаю в регистре она не учитывается. Еще раз спасибо за проделанный труд.

13.04.2017 22:16
0

Ещё один способ - /ru--obrazovanie/@zaguzin/razrabotka-installyatorov-advanced-installer-urok-13-2-khitrosti-poiska-failov-i-regulyarnye-vyrazheniya

14.04.2017 11:03
0

Поясню на счет распакована, то есть человек скачал себе на пк, установил. А потом пришел друг с флешкой и просто скопировал корневую папку на нее и себе на пк перекинул.

13.04.2017 22:18
0

Попробуй поиск в файлах. В том же разделе поиск. Только вот понимаешь что там много нужно предусмотреть, где искать. Есть же люди, которые могут и в системные папки скопировать игру или ещё куда..Попробуй по аналогии - если не получится - я постараюсь помочь.
А вообще вы задали мне инересную задачу - попробую её решить с помощью разных способов, например, настраиваемых действий. Если получится - напишу пост. Это ведь в будущем может кому-нибудь пригодится. Могу сам что-то забыть - тут и посмотрю.

14.04.2017 02:37
0

Если вы моды разрабатываете - то тут на Голосе можете написать посты по разработке. Тут принято делиться своими знаниями и маленько за это получать.
Я модами для игр никогда не занимался, но участвовал в составлении FAQ по Сталкеру Зов Припяти на Ру-Боарде, когда играл в него. Уже лет 5 ни во что не играю. Это единственное, что я делал по этой теме. http://forum.ru-board.com/topic.cgi?forum=73&topic=0922#1

14.04.2017 02:59
0