Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


nakula, возможны три варианта решения задачи (т.к. конкретных названий программы и ее путей не указано, будет все делать на примере программы "Punto Switcher ":
1 Заранее прописать путь распаковки в конфиге SFX:
Код: Выделить весь код
InstallPath="c:\\Program Files (x86)\\Yandex\\Punto Switcher"
2 Если заранее путь неизвестен, но известен на момент запуска SFX, то будем использовать ключ для запуска SFX:
Код: Выделить весь код
sfx.exe -InstallPath="c:\\Program Files (x86)\\Yandex\\Punto Switcher"
Вариант 2 можно использовать одновременно с вариантом 1. Тогда при отсутствии ключа установка будет происходить по "умолчальному" пути, а, в случае необходимости, этот путь можно изменить на другой ключом.

3 Путь неизвестен и его надо найти непосредственно из запущенного SFX.
В этом случае нужно знать некоторые подробности искомой папки и файлов в ней дабы выбрать достаточно уникальный файл и путь к нему не повторяющийся в других папках. Для Punto Switcher выбираем Punto Switcher\Data\triggers.dat. Имя файла + путь к нему достаточно уникальны для нашей задачи идентификации папки Punto Switcher.
В конфиге удаляем параметр InstallPath, дабы распаковка происходила во временную папку, и пишем такую строку:
Код: Выделить весь код
RunProgram="hidcon:cmd /c For %z In (c d e f g h i j k l m n o p q r s t u v w x y z) Do For /F \"delims=\" %a In ('Dir /b /s \"%z:\\\" 2^>Nul ^| Find \"Punto Switcher\\Data\\triggers.dat\"') Do Set fp=%a& Call xCopy * \"%%fp:\\Data\\triggers.dat=%%\" /s /e /i /y /h /k& Exit"
SFX будет искать указанный файл на всех дисках в папках любой глубины вложенности и как только найдет его, то скопирует все содержимое своего архива в указанную папку Punto Switcher с сохранением всей структуры папок и файлов в архиве. После этого поиск прекратится. Если на разных дисках или в разных папках будут установлены другие копии программы Punto Switcher с искомым файлом, они будут проигнорированы, ибо SFX не может знать в какою именно копию программы нужно произвести распаковку.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:39, 08-02-2013 | #178