Tcl Source Code

Ticket Change Details
Login
Overview

Artifact ID: 816421b8bf50b7064e8a2520b1513c40df1c7c04
Ticket: 651e828a525828c89dc2a77bb5ac260fd0a39e25
Wrong Windows version reported for Windows 8.1
User & Date: apnadkarni 2014-01-30 15:55:18
Changes

  1. assignee changed to: "nobody"
  2. closer changed to: "nobody"
  3. cmimetype changed to: "text/plain"
  4. comment changed to:
    On Windows 8.1, tcl_platform(osVersion) is reported as 6.2 even though it is actually 6.3. This is due to a change in behaviour of the GetVersionEx Win32 API which reports 6.2 if the exe does not contain a manifest.
    
    Jan has fixed this in the trunk by adding the appropriate manifest. However, this is not a permanent fix. When Windows 8.2 (or whatever) rolls around, the manifest will have to change AGAIN and existing tclsh would still be broken.
    
    Moreover, the manifest fix only fixes tclsh and wish, not when the tcl dll is loaded from other executables.
    
    Therefore, a better fix might be to use the undocumented RtlGetVersion function which returns the real OS version. It has the same interface as GetVersionEx (the returned struct is the same though typedef'ed differently), but has to be loaded dynamically from ntdll.dll. This will permanently solve the problem for future versions and all executables that load the tcl dll (unless Microsoft breaks that function in the future as well).
    
    See http://wixtoolset.org/issues/4061/ and http://msdn.microsoft.com/en-us/library/windows/hardware/ff561910(v=vs.85).aspx
    
  5. foundin changed to: "8.6.1"
  6. is_private changed to: "0"
  7. login: "apnadkarni"
  8. priority changed to: "5 Medium"
  9. resolution changed to: "None"
  10. severity changed to: "Minor"
  11. status changed to: "Open"
  12. submitter changed to: "apnadkarni"
  13. subsystem changed to: "69. Other"
  14. title changed to: "Wrong Windows version reported for Windows 8.1"
  15. type changed to: "Bug"