需要Tclapp包装的帮助

时间:2013-11-08 20:35:46

标签: tcl wrapper expect activetcl

我正在使用ActiveTCL&amp ;;制作这个GUI的TCL脚本。期望的。

但由于某些原因,Expect不能与Windows 8 64bit附带的telnet一起使用,所以我想办法使用自定义的telnet tcl脚本。它工作正常,但我现在需要用telnet脚本和一些徽标图像将我的脚本包装到单个.exe中,以便在目录中没有额外文件的情况下运行,但我不能让我的生活让它工作。

我单击将文件添加到tclapp包装器,但是当它尝试调用telnet脚本时,它表示脚本上找不到文件。

1 个答案:

答案 0 :(得分:0)

当您将Tcl代码包装到单个文件可执行文件中时,一切都进入了。脚本,库,任何图像(假设您正在制作GUI),该批次。 Tcl透明地提取事物并假装你有一个真正的文件系统。但是,当您执行程序时(无论是通过execopen |…还是spawn),当您创建子进程时,操作系统必须 - 操作系统总是参与其中,因为进程管理是操作系统内核的主要功能之一 - 它需要有一个真正的可执行文件才能运行。如果将telnet替换打包为自己的单文件可执行文件并将其存储在父进程的VFS中,则必须使该从属进程可执行。

将telnet可执行文件复制到某个位置(例如,到我认为应该在$::env(TEMP)中描述的临时目录)并执行它。

set realTelnetExe [file join $::env(TEMP) mytelnet.exe]
file copy .../the/stored/copy/mytelnet.exe $realTelnetExe

spawn $realTelnetExe
# ...

完成后,您可能希望file delete副本。

相关背景材料: