'exec' - выполнение tcl-файла из обернутого приложения TclApp

Я столкнулся с неприятной проблемой прямо сейчас с exec. Все, что я пытаюсь сделать, это выполнить tcl-файл из программы, которую я обернул с помощью TclApp, и я продолжаю получать ошибку «нет такого файла или каталога».

Я нашел эту информацию здесь: https://community.activestate.com/faq/correctly-using-source-an и следовал ему до точки, но безрезультатно. Вот некоторый демонстрационный код:

Основной файл: я назвал обернутую версию TestClient.exe

package require Tk;

proc main {} {

set ::base [file dirname [info script]];
set file_to_exec [file join $::base "test.tcl"];
exec $file_to_exec;

}
main 

test.tcl:

tk_messageBox -type ok -message "It Works!";

Этот код всегда будет выдавать ошибку:

couldn't execute "C:\Dev\TestClient.exe\lib\application\test": no such file or directory

Но код отлично работает, если я попробую source $file_to_exec; или любой другой вариант доступа к файлу, такой как использование команды open для чтения или записи из файла. TclApp специально не может найти файл, если я хочу его exec. Любая причина для этого? И как я могу заставить это работать? Программа, которую я написал, довольно большая и основана на возможности запускать некоторые tcl-файлы, которые работают без упаковки. Но теперь я собираюсь завернуть его и столкнуться с этой проблемой;

Заранее спасибо!

****ОБНОВИТЬ****

exec будет работать, если я отдельно оберну другие файлы tcl в TclApp. Например, если я оберну test.tcl и сделаю его Test.exe, я смогу запустить TestClient.exe и exec Test.exe... это может быть решением моей проблемы. Но это все еще своеобразная проблема.


person    schedule 26.01.2015    source источник


Ответы (1)


По крайней мере, для меня файлы .tcl не исполняемые, поэтому их нужно запускать в оболочке... Мне нужно сделать:

exec wish85.exe test.tcl
person Captain    schedule 28.01.2015