'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)


arrow_upward
1
arrow_downward

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

exec wish85.exe test.tcl
person Captain    schedule 28.01.2015