genWinImage.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # genWinImage.tcl --
  2. #
  3. # This script generates the Windows installer.
  4. #
  5. # Copyright (c) 1999 by Scriptics Corporation.
  6. # All rights reserved.
  7. # RCS: @(#) $Id: genWinImage.tcl,v 1.5 2000/04/25 22:29:21 hobbs Exp $
  8. # This file is insensitive to the directory from which it is invoked.
  9. namespace eval genWinImage {
  10.     # toolsDir --
  11.     #
  12.     # This variable points to the platform specific tools directory.
  13.     variable toolsDir
  14.     # tclBuildDir --
  15.     #
  16.     # This variable points to the directory containing the Tcl built tree.
  17.     variable tclBuildDir
  18.     # tkBuildDir --
  19.     #
  20.     # This variable points to the directory containing the Tk built tree.
  21.     variable tkBuildDir
  22.     # our script name at runtime
  23.     variable script [info script]
  24. }
  25. # genWinImage::init --
  26. #
  27. # This is the main entry point.
  28. #
  29. # Arguments:
  30. # None.
  31. #
  32. # Results:
  33. # None.
  34. proc genWinImage::init {} {
  35.     global tcl_platform argv argv0
  36.     variable tclBuildDir
  37.     variable tkBuildDir
  38.     variable toolsDir
  39.     variable script
  40.  
  41.     puts "n--- $script started: 
  42.     [clock format [clock seconds] -format "%Y%m%d-%H:%M"] --n"
  43.     if {$tcl_platform(platform) != "windows"} {
  44. puts stderr "ERROR: Cannot build TCL.EXE on Unix systems"
  45. exit 1
  46.     }
  47.     if {[llength $argv] != 3} {
  48. puts stderr "usage: $argv0 <tclBuildDir> <tkBuildDir> <toolsDir>"
  49. exit 0
  50.     }
  51.     set tclBuildDir [lindex $argv 0]
  52.     set tkBuildDir [lindex $argv 1]
  53.     set toolsDir [lindex $argv 2]
  54.     generateInstallers
  55.  
  56.     puts "n--- $script finished: 
  57.     [clock format [clock seconds] -format "%Y%m%d-%H:%M"] --nn"
  58. }
  59. # genWinImage::makeTextFile --
  60. #
  61. # Convert the input file into a CRLF terminated text file.
  62. #
  63. # Arguments:
  64. # infile The input file to convert.
  65. # outfile The location where the text file should be stored.
  66. #
  67. # Results:
  68. # None.
  69. proc genWinImage::makeTextFile {infile outfile} {
  70.     set f [open $infile r]
  71.     set text [read $f]
  72.     close $f
  73.     set f [open $outfile w]
  74.     fconfigure $f -translation crlf
  75.     puts -nonewline $f $text
  76.     close $f
  77. }
  78. # genWinImage::generateInstallers --
  79. #
  80. # Perform substitutions on the pro.wse.in file and then
  81. # invoke the WSE script twice; once for CD and once for web.
  82. #
  83. # Arguments:
  84. # None.
  85. #
  86. # Results:
  87. # Leaves proweb.exe and procd.exe sitting in the curent directory.
  88. proc genWinImage::generateInstallers {} {
  89.     variable toolsDir
  90.     variable tclBuildDir
  91.     variable tkBuildDir
  92.     # Now read the "pro/srcs/install/pro.wse.in" file, have Tcl make
  93.     # appropriate substitutions, write out the resulting file in a
  94.     # current-working-directory.  Use this new file to perform installation
  95.     # image creation.  Note that we have to use this technique to set
  96.     # the value of _WISE_ because wise32 won't use a /d switch for this
  97.     # variable.
  98.     set __TCLBASEDIR__ [file native $tclBuildDir]
  99.     set __TKBASEDIR__ [file native $tkBuildDir]
  100.     set __WISE__ [file native [file join $toolsDir wise]]
  101.     set f [open [file join $__TCLBASEDIR__ generic/tcl.h] r]
  102.     set s [read $f]
  103.     close $f
  104.     regexp {TCL_PATCH_LEVELs*"([^"]*)"} $s dummy __TCL_PATCH_LEVEL__
  105.     
  106.     set f [open tcl.wse.in r]
  107.     set s [read $f]
  108.     close $f
  109.     set s [subst -nocommands -nobackslashes $s]
  110.     set f [open tcl.wse w]
  111.     puts $f $s
  112.     close $f
  113.     # Ensure the text files are CRLF terminated
  114.     makeTextFile [file join $tclBuildDir win/README.binary] 
  115.     [file join $tclBuildDir win/readme.txt]
  116.     makeTextFile [file join $tclBuildDir license.terms] 
  117.     [file join $tclBuildDir license.txt]
  118.     set wise32ProgFilePath [file native [file join $__WISE__ wise32.exe]]
  119.     # Run the Wise installer to create the Windows install images.
  120.     if {[catch {exec [file native $wise32ProgFilePath] /c tcl.wse} errMsg]} {
  121. puts stderr "ERROR: $errMsg"
  122.     } else {
  123. puts ""TCL.EXE" created."
  124.     }
  125.     return
  126. }
  127. genWinImage::init