Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Настройка пре-билда (http://www.flasher.ru/forum/showthread.php?t=175932)

TanaTiX 27.02.2012 16:41

Настройка пре-билда
 
Во FlashDevelop-е в настройках проекта в Pre-Build Command Line пишу
Код:

"$(ProjectDir)\someFile.exe"
При этом виснет весь девелоп до перезагрузки. Никаких окон не появляется, но должно появляться консольное окно (это весь функционал exe-программы). Почему так, как побороть?

alexcon314 27.02.2012 17:23

попробуй запускать через батник

wvxvw 27.02.2012 17:39

А Вондовс понимает что-нть типа
Код:

executable &
В смысле, чтобы не в том же процессе запускался, а в дочернем / вообще в отдельном.

TanaTiX 28.02.2012 00:01

Путем различных поисков и экспериментов достигнуто следующее:
Содержимое батника:
Код:

start Full_path_to_file\ExampleForBat.exe
taskkill /IM cmd.exe /f

2я строка при этом убивает 1й процесс, а 2й, свежезапущенный, остается
И особое внимание на то, что путь должен быть абсолютный, а не относительный, т.к. батник не знает с какой позиции ему начинать смотреть папки.
В настройках девелопа
Код:

$(ProjectDir)\ExampleForBat\bin\Debug\bat.bat
На выходе:
девелоп не виснет, но ждет окончания работы прогарммы
exe запускается и сам по себе работает корректно
Компиляция не происходит, в output:
Код:

Running process: ExampleForBat.as3proj" -ipc b9d2b83d-65a5-43a1-8271-82b35178de0a -version "4.6.0; 3.1" -compiler "D:\Program Files (x86)\FlashDevelop\Tools\flexsdk" -notrace -library "D:\Program Files (x86)\FlashDevelop\Library"
Building ExampleForBat
Running Pre-Build Command Line...
cmd: ExampleForBat\bin\Debug\bat.bat

ExampleForBat>start ExampleForBat\bin\Debug\ExampleForBat.exe

ExampleForBat>taskkill /IM cmd.exe /f
“бЇҐи*®: Џа®жҐбб "cmd.exe", б Ё¤Ґ*вЁдЁЄ*в®а®¬ 5896, Ўл« §*ўҐаиҐ*.
Build halted with errors.
Done(1)

Часть путей от дисков сократил.

В общем вот такая петрушка. На этом и застопорился. Может кто еще что подскажет?

ЗЫ. Как в output-е избавиться от нечитаемых символов, типа бЇҐ

alexcon314 28.02.2012 13:39

А зачем консоль бьешь? Не надо. Оно само отвалится, если ехе - консольный и корректно отработал.
Насчет путей не уверен, но консоль запускаться должна с CurrentDir=батникDir, т.е в папке самого батника.
ЗЫ. В пребилде бить плеер хорошо, ибо подвисает при дебуге нередко.

wvxvw 28.02.2012 15:59

Помоему в Виндовсе чтобы отобразить текущую директорию %PWD% - но может как-то не совсем так :)
Т.е. посмотри откуда FD батник запускает, не факт, что он его из его же директории запускает.

Ну и как уже было сказано, если ExampleForBat.exe заканчивает работу со статусом 0, то он как бы сам и закроется.
Помоему, start /B - если окошко консоли мешает. Т.е. так оно запустится без того, чтобы создавать новое окно.
chcp <кодировка> - на сколько я знаю, меняет кодировку в консоли.

TanaTiX 28.02.2012 22:58

Цитата:

А зачем консоль бьешь?
Пытался следовать этому совету:
Цитата:

В смысле, чтобы не в том же процессе запускался, а в дочернем / вообще в отдельном.
Цитата:

Помоему в Виндовсе чтобы отобразить текущую директорию %PWD% - но может как-то не совсем так :)
Да, не совсем. %cd% Главное было дать направление для поиска :)
Цитата:

Т.е. посмотри откуда FD батник запускает, не факт, что он его из его же директории запускает.
Батник отрабатывает и запускает приложение. После этого девелоп пытается безуспешно что-то сделать.
Цитата:

Ну и как уже было сказано, если ExampleForBat.exe заканчивает работу со статусом 0
Он не должен заканчивать работу. Да, можно запускать приложение, не зависимо от манипуляций в ФД, но этот вариант - не вариант.

Сейчас поменял пути и атрибут B при start-е согласно рекомендациям. Поведение следующее (кстати, если команду из пребилда перенести в постбилд, ничего не меняется):
Запускается батник, запускается приложение, консоль остается висеть и ждет команды, в output девеолпа выводится сообщение, что компиляция прошла успешно и все замирает. Откомпиленный проект в дебаге открывается только после закрытия консоли (способ завершения значения не имеет)

alexcon314 29.02.2012 08:33

Чтобы консоль закрыть можно в конец батника добавить exit.
Провел у себя такой тест.
В папку (где лежит .as3proj) с проектом вложил батник и myExe.exe.
Код:

start myExe.exe
exit

В пребилд вписал start.bat.
Результат: ехе стартует, консоль не показвается, в процессах ее нету. Но пока не закроешь ехе билд не продолжается.
В постбилд вписал start.bat.
Результат: ехе стартует, консоль не показвается, в процессах ее нету. Билд суксессфул.Но пока не закроешь ехе плеер не запускается.
Ну, хоть с путями все понятно.
Собственно, вместо myExe можно запускать для наглядности calc или notepad:
Код:

start notepad
exit

Результат тот же.
Проблема действительно имеет место быть. TanaTiX, сори, сразу не въехал.
В чем может быть причина? Надо посмотреть сорсы FD. Внешне похоже на то, что пост/пребилды запускаются в отдельном потоке, к которому джойнится до его завершения основной поток, тот, в которм выполняется компиляция и запуск плеера. Вспомогательный поток для пре/постбилда имеет свойство завершаться после завершения всех запущенных им команд, будь то батник или ехе. С одной стороны вроде бы логично, с другой - вот такие траблы.

Добавлено через 5 часов 21 минуту
Ок. В сорсах бегло найти ничего толкового не удалось, да может это и не FD проблема, а fcsh.
Решение.
Расположение файлов .bat и .exe как я указал выше.
Код:

REM start.bat
start start.vbs
exit

Добавим туда же, в папку проекта start.vbs
Код:

' start.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "myExe.exe", 1, false

Прописываем start.bat в пре/постбилд.
Билдим.
Путь к ехе можно указать полный и положить его куда хочешь.

wvxvw 29.02.2012 19:18

Раз уж тут речь зашла о VB... а что будет если FD запустить из под Cygwin? Может так получится, что для него шеллом будет bash, а не cmd? :)

alexcon314 01.03.2012 08:42

Мысль, конечно, интересная. Поменять шило на мыло :D.
Вообще, занятная ассоциация: VB<->cygwin.. мозг клинит.


Часовой пояс GMT +4, время: 06:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.