Windows Server 2008 Support

Posted by rmbartis on 2012-07-06 13:14
Forums: TDK support | OS: Windows XP Pro

I am currently using TclApp version 5.3 (build #295336) in conjunction with Tcl8.5 on a windows XP machine. I have an application that runs fine on my machine when built with the prefix file C:/Tcl/bin/base-tk8.5-thread-win32-ix86.exe. Should I expect this same EXE run fine on a PC running Windows server 2008

ActiveState Staff
Wed, 2012-07-11 11:58

Windows 64-bit has very good support for 32-bit processes, but there are limitations.

A 32-bit process is not allowed to control or be injected into a 64-bit process. This has a major impact on programs written to use Expect.

UAC will interfere with programs that write to protected directories. If your wrapped app writes outside of TEMP, it may be prevented from running unless it was right clicked and "Run as Administrator".

rmbartis | Wed, 2012-07-11 12:59

Thanks. Can you clarify the statement "major impact on programs written to use Expect". My application makes use of Expect.

ActiveState Staff
Fri, 2012-07-13 10:14

There is no 64-bit version of Expect for the Windows operating system. On 64-bit Windows, the debugger level hack that made a 32-bit Windows port of Expect possible has been permanently closed by Microsoft.

64-bit Windows emulation rules prevent a 32-bit process from controlling or injecting binaries into a 64-bit process. This means that a 32-bit Expect is unable to ever use a 64-bit Windows Telnet client.

It is possible to install a 32-bit Windows Telnet client on 64-bit Windows, but the directory remapping technique that Windows uses to switch between Windows/System32 and Windows/SysWoW64 (un)helpfully provides incompatible dlls at key points in the process of connecting Expect 32 to MS Telnet 32 on a Windows 64-bit system, and Expect crashes.

This can be worked around if the Expect Script is executed in XP mode of the Windows Virtual PC:

That might not be convenient. As an alternative, there are postings in the forums which claim it is possible to use a 32-bit PuTTY client instead of a 32-bit Telnet. It requires a code change as shown here:

Either of those work-arounds are probably going to make cleanly wrapping the application impossible, since either approach depends on installing non-standard components which the TDK can't wrap into a stand-alone executable.

rmbartis | Fri, 2012-07-13 11:05

Thank you sir