Tatay
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Доброго времени суток всем. Потребовалось собрать собственную инсталяху для OpenVPN, но вкуривать в NSIS, сейчас времени нет. Соответственно, решил сделать по старинке: rar sfx-архив + батник на выполнение после распаковки. В 32-битной WinXP и Win7 всё сработало отлично. В 64-битной Win7, появилась проблема: Структура папок OpenVPN: Корень: путь установки\OpenVPN\ Исполняемые файлы и bat-ники: путь установки\OpenVPN\bin\ После самораспаковки sfx-архива, тот запускает батник bin\main.bat Батник main.bat вызывает батник openvpnreg.bat (командой call), добавляющий ключи в реестр, с путем установки. Путь установки он вычисляет исходя из переменной %CD% и проверки окружения (наличие файлов рядом с собой), т.к. предполагается, что запускаться он будет автоматом sfx-архивом (относительно пути распаковки, т.е. bin\main.bat относительно путь_установки\OpenVPN) , либо ручками пользователем, напрямую из папки bin и никак иначе. Во всех батниках используются относительные пути вида .\папка\файл, а за "корень" .\ берется путь установки ( к примеру: c:\programs\OpenVPN\ ) Так вот. Проблема заключается в том, что в 64-битной версии Windows7, sfx-архив, за папку "program files", по умолчанию считает папку "c:\program files (x86)\" и предлагает пользователю путь установки: c:\program files (x86)\OpenVPN\ , но, при проверке наличия файла по относительному пути .\bin\файл, относительный путь разворачивается в полный и команда IF, как я понял, натыкается на круглые скобки в названии папки "Program files (x86)" и пишет: "Непредвиденное появление \OpenVPN", завершая весь батник. Код: if exist .\bin\openvpn-gui.exe ( echo ... ) else ( goto ... ) | Подскажите, можно ли как-то экранировать эти скобки в пути "Program Files (x86)", так, чтобы Не отказываться от удобной формы записи: if () else () Вот полный код батника: Показать полный код.. |