Version 22 of SDX under Windows

Updated 2007-07-26 22:24:10 by AsifH

emptist, 2005/11/19: strange thing: sdx refuses to move

After testing out how to use tclkit and sdx to built a single exe, I decided to create a dir for these three files: tclkit.exe sdx.kit tclkitsh.exe, to find

 tclkitsh sdx.kit

runs into a:

 invalid command name "sdx"

while the original copy of these files in another dir still works.


MHo, 2005/11/11: trying to do a

 tclkitsh sdx.kit

from within a directory which includes spaces in its name, fails:

 D:\Dokumente und Einstellungen\hoffmann\Eigene Dateien\Downloads>tclkitsh sdx.kit version
 wrong # args: should be "source file"
     while executing
 "source sdx.kit/main.tcl"
     ("uplevel" body line 1)
     invoked from within
 "uplevel [list source [file join $self main.tcl]]"

Quoting hell strikes again. The problem is that the sdx script (sdx.kit/lib/app-sdx/sdx.tcl) runs

       uplevel #0 source [file join $b $a.tcl]

and $b is the current directory, which can contain spaces. The simple fix is to change this to

       uplevel #0 [list source [file join $b $a.tcl]]

and all should be well.

Thanks, should be fixed now. -jcw


December 20, 2002

If you use Windows \ notation for a filename, SDX fails.

If you try to add registered methods to the .KIT filetype (wrap, unwrap etc) then when you right-click on the filename and choose the method, SDX fails. This appears to be fixed for the *first* filename but not for the second. That is, tclkitsh can find sdx.kit, but tclkitsh with SDX can't find your file. It creates an empty correctly-named .vfs folder and aborts.

When I massaged the filename the problem went away:

file unwrap.tcl

 set aa [lindex $argv 0]
 set aa [string map {\\ /} $aa]
 exec tclkitsh.exe sdx.kit unwrap $aa

I registered this as "<path>tclkitsh <path>unwrap.tcl %1" and it worked for me on Windows XP and Windows 98.

It might be possible to fix this inside SDX assuming that you'll never need a unix backslash character in a filename. I'm not sure that's a good idea.

Jonah Thomas


ZipGuy 06-06-2003 -

I have created a Starkit to solve this problem on Windows. It's called Windows SDX Shell Fix and it front-ends sdx.kit.


LV 2007 July 11

Here's what I see as I am attempting to survive my first dealings with starkits under Windows (shudder). No questions yet ... just wanted other first timers to see what to expect. Hopefully the experts will wander by and add useful tips for us here.

I have a tclkit.exe, a starkit (tls.kit), and sdx.kit.

I open a cmd.exe window and I type:

 sdx.kit lsk tls.kit

Initially, I get a dialog from windows saying it doesn't know how to deal with a .kit file. I point it to the tclkit.exe. I then type the command again.

This time, I get a tkcon console, as well as a widget that is titled "sdx" with a label of "Command line:".

I type "help", and the sdx help output appears in the console. But the command line dialog is gone. Okay, that's how things work on Unix...

So, I quit the tkcon, and type the command again. I see that the arguments are doing me no good in cmd.exe, so I type just the arguments into the sdx command line window. That seems to work.


AsifH 26-07-2007

I got the latest http://www.equi4.com/pub/tk/8.5a6/tclkitsh-win32.upx.exe (WinXP) and http://www.equi4.com/pub/sk/sdx.kit

I created a simple helloWorld.tcl file containing:

 puts "Hello World!"

I generated a helloWorld.kit by executing:

 tclkitsh-win32.upx.exe sdx.kit qwrap helloWorld.tcl

I built the vfs directory helloWorld.vfs:

 tclkitsh-win32.upx.exe sdx.kit unwrap helloWorld.kit

I built helloWorld.exe by executing:

 tclkitsh-win32.upx.exe sdx.kit wrap helloWorld.exe -runtime tclkitsh-win32.upx.exe

When I execute helloWorld.exe, I get:

 ./helloWorld.exe: ./helloWorld.exe: cannot execute binary file

So I:

 cp tclkitsh-win32.upx.exe tclkitsh-win32-runtime.upx.exe

then I build helloWorld.exe once again:

 tclkitsh-win32.upx.exe sdx.kit wrap helloWorld.exe -runtime tclkitsh-win32-runtime.upx.exe

Now I execute helloWorld.exe and I get the expected result:

 Hello World!

Why do I need to copy tclkitsh-win32.upx.exe to a different filename (for example) tclkitsh-win32-runtime.upx.exe in order for this to work?

Category Tclkit