I am making this GUI'ed TCL script with ActiveTCL & Expect.
But for some reason Expect doesn't work with telnet that comes with windows 8 64bit, so I figured a way to use a custom telnet tcl script. It works fine, but I need now to wrap my script with the telnet script and some logo images into a single .exe to run without extra files in directory, but I can't for the life of me get it to work.
I click add files to the tclapp wrapper but it says file not found on the script when it tries to call for the telnet script.
When you wrap Tcl code into a single-file executable, everything goes inside. Scripts, libraries, any images (assuming you're making a GUI), the lot. Tcl transparently extracts things and pretends you've got a real filesystem. However, when you execute a program (whether via
exec
,open |…
orspawn
) then the OS must be involved as you are creating a subprocess — the OS is always involved in that, as process management is one of the main things that the OS kernel does — and it needs to have a real executable to run. If you have packaged up your telnet-replacement as its own single-file executable and stored it inside the parent process's VFS, you have to make that subordinate process executable real.Copy the telnet-executable out to some location (e.g., to the temporary directory, which I think should be described in
$::env(TEMP)
) and execute that.You probably want to
file delete
the copy once you're done using it.Relevant background material: