📄 insttext.tcl
字号:
# INSTTEXT.TCL - an interactive text-based Installation program for# Unix platforms.## history# -------# 01u,13jun97,pdn replaced tclx id command w/ setupId.# 01t,28mar97,pdn fixed the problem that torVarCreate get call too early# 01s,10mar97,tcy added licenseShow () # 01r,09mar97,pdn fixed normal exit code to 0# 01q,08mar97,tcy moved needUpdateWlmd() from INSTALL.TCL back to this file ;# added productInstFlagSet # 01p,07mar97,tcy clean up # 01o,28feb97,pdn improved license setup.# 01n,26feb97,tcy fixed license server pages# 01m,09feb97,pdn added option to configure a floating license server# 01l,23jan97,tcy handled error when fails to obtain free disk space; # rearranged column formats# 01k,22jan97,tcy fixed a typo introduced by the last mod# 01j,21jan97,tcy saved installation key ;# catched error when symbolic group id not defined# 01i,14jan97,tcy added code to skip part information if product is deselected # 01h,18dec96,sks changed location of TCL and BITMAP files; renamed# TEXT.TCL to MESSAGES.TCL # 01g,11dec96,tcy added hierarchy selection option # 01f,08nov96,tcy clean up# 01e,04nov96,tcy rewritten to conform with GUI-based program# 01d,01oct96,tcy moved umaskSet(), umaskGet(), getSelection() to INSTALL.TCL# 01c,27sep96,tcy replace procedure with while loop to implement prompt# 01b,24sep96,tcy modified to conform with GUI-based program# 01a,10sep96,tcy written ############################################################################# Create the Welcome page#proc pageCreate(welcome) {} { global setupVals printPageTitle [strTableGet 1410_TITLE_WELCOME] print "[strTableGet 1000_WELCOME1]\n" print "[strTableGet 1010_WELCOME2]\n" print "[strTableGet 3020_WELCOME3]\n" print "[strTableGet 1030_WELCOME4]\n" print "[strTableGet 1040_WELCOME5]\n" while (1) { switch -regexp -- [prompt [strTableGet 3000_RETURN_QUESTION]] { "^-$" { return 0 } "^$" { return 1 } default { } } }}proc pageProcess(welcome) {} { return 1}proc needUpdateWlmd {} { global ctrlVals setupVals set retVal 0 set installedWlmd [destDirGet]/host/[windHostTypeGet]/bin/wlmd set cdWlmd [cdromBinDirGet]/WLM/WLMD if {[file exists $installedWlmd]} { set retVal [expr [file mtime $installedWlmd] < [file mtime $cdWlmd]] } return $retVal} proc pageCreate(wlmdDetect) {} { global setupVals printPageTitle "[strTableGet 1261_LICENSE] Detect" print [strTableGet 1358_LICENSE_SERVER_DETECT] set setupVals(isWlmdRunning) 0 if [needUpdateWlmd] { set prog [cdromBinDirGet]/WLMUTILS set setupVals(isWlmdRunning) [exec $prog -pingServer [info host]] } return 1} proc pageProcess(wlmdDetect) {} { global setupVals global ctrlVals if {$setupVals(isWlmdRunning)} { errorHandler "Warning" [strTableGet 1359_LICENSE_SERVER_SHUTDOWN] exit 0 } { set ctrlVals(currPage) destDir pageRemove wlmdDetect set ctrlVals(pageListBack) $ctrlVals(pageList) return 1 }}proc pageCreate(privilege) {} { global setupVals printPageTitle [strTableGet 1420_TITLE_WARNING] print "[strTableGet 3050_ROOT_WARN]\n" while (1) { switch -regexp -- [prompt [strTableGet 3000_RETURN_QUESTION]] { "^-$" { return 0 } "^$" { return 1 } default { } } }}proc pageProcess(privilege) {} { return 1}proc pageCreate(registrationName) {} { global setupVals printPageTitle [strTableGet 1430_TITLE_REGISTRATION] print "[strTableGet 1060_REGISTRATION]\n" if { "[userNameGet]" == "" } { set msg "Enter your name:" } { set msg "Enter your name: \[[userNameGet]\]" } set ret [prompt "$msg"] switch -regexp -- $ret { "^-$" { return 0 } "^$" { return 1 } default { userNameSet $ret; return 1 } } } proc pageProcess(registrationName) {} { return 1}proc pageCreate(registrationCompany) {} { global setupVals if { "[companyNameGet]" == "" } { set msg "Enter your company:" } { set msg "Enter your company: \[[companyNameGet]\]" } set ret [prompt "$msg"] switch -regexp -- $ret { "^-$" { return 0 } "^$" { return 1 } default { companyNameSet $ret; return 1 } } }proc pageProcess(registrationCompany) {} { return 1}proc pageCreate(registrationKey) {} { global setupVals if { "[instKeyGet]" == "" } { set msg "Enter your key:" } { set msg "Enter your key: \[[instKeyGet]\]" } set ret [prompt "$msg"] switch -regexp -- $ret { "^-$" { return 0 } "^$" { return 1 } default { instKeySet $ret; return 1 } } }proc pageProcess(registrationKey) {} { global setupVals global errorInfo if [catch {setupKeyValidate [instKeyGet]} error] { errorHandler "Error" [strTableGet 1070_WARN_1] return 0 } if [catch {setupInit [cdromZipDirGet]} error] { if {"$error" == "BAD_CD_KEY"} { errorHandler "Error" [strTableGet 1080_WARN_2] return 0 } elseif {"$error" == "BAD_CD_REVISION"} { errorHandler "Error" [strTableGet 1080_WARN_4] exit 0 } elseif {"$error" == "BAD_CD_VENDOR_ID"} { errorHandler "Error" [strTableGet 1080_WARN_3] return 0 } { errorHandler "Error" [strTableGet 1090_WARN_3 $error] exit 0 } } objectConstruct return 1}proc pageCreate(destDir) {} { global setupVals printPageTitle [strTableGet 1440_TITLE_DESTDIR] print "[strTableGet 3100_DEST_DIR]\n" set msg "\[[destDirGet]\]" set ret [prompt "$msg"] switch -regexp -- $ret { "^-$" { return 0 } "^$" { return 1 } default { destDirSet $ret; return 1 } } }proc pageProcess(destDir) {} { global setupVals if [regexp {~} [destDirGet]] { errorHandler "Error" "Invalid directory specified" return 0 } if {![file isdirectory [destDirGet]]} { errorHandler "Warning" [strTableGet 3110_DEST_DIR_WARN] switch -regexp -- [prompt [strTableGet 3115_DEST_DIR_QUESTION]] { "^(N|n)|^-$" { return 0 } "^(Y|y)|^$" { if [catch {file mkdir [destDirGet]} error] { errorHandler "Error" $error return 0 } { set status 1 } } default { } } } { set status 1 } if {![file writable [destDirGet]]} { errorHandler "Error" [strTableGet 1130_DEST_DIR_WARN3] return 0 } uninstStart [instTypeGet] licenseHomeDirSet [destDirGet]/.wind/license catch { set windDir [file dirname $setupVals(profile)] if ![file isdirectory $windDir] { file mkdir $windDir } set f [open $setupVals(profile) "w"] puts $f "userNameSet [userNameGet]" puts $f "companyNameSet [companyNameGet]" puts $f "destDirSet [destDirGet]" if {[instKeyGet] == "none"} { puts $f "instKeySet $setupVals(prevInstKey)" } { puts $f "instKeySet [instKeyGet]" } close $f } return $status}proc pageCreate(compSelect) {} { printPageTitle [strTableGet 1450_TITLE_OPTION] print "[strTableGet 3140_COMP_SELECT]\n" productTextListUpdate productTextSizeUpdate while (1) { set ret [prompt [strTableGet 3145_COMP_SELECT_CHANGE]] switch -regexp -- $ret { "^-$" { return 0 } "^$" { return 1 } "^[0-9]+([ ][0-9]+)*$" { productChange $ret ; return -1 } default { } } } return 1}proc productInstFlagSet {prodIndex} { if {[llength [productInfoGet partIndexList $prodIndex]] == 1} { errorHandler "error" "product $prodIndex does not contain parts!" } { foreach partIndex [productInfoGet partIndexList $prodIndex] { if {[partInfoGet instFlag $partIndex] == 1} { productInfoSet instFlag $prodIndex 1 return 1 } } productInfoSet instFlag $prodIndex 0 }} proc productChange {idList} { global prodToListMap set idList [lsort -integer $idList] foreach id $idList { if {[regexp {^[0-9][0-9][0-9][0-9]+$} $id]} { errorHandler "Error" [strTableGet 3145_COMP_SELECT_CHANGE_INVALID] return 0 } elseif { [array size prodToListMap] < $id || $id == 0 } { errorHandler "Error" [strTableGet 3145_COMP_SELECT_CHANGE_INVALID] return 0 } } foreach id $idList { if {[llength $prodToListMap($id)] == 1} { set prodIndex [lindex $prodToListMap($id) 0] if {[llength [productInfoGet partIndexList $prodIndex]] == 1} { # length is 1 ; i.e. the item is a product if {[productInfoGet instFlag $prodIndex] == 1} { productInfoSet instFlag $prodIndex 0 } { productInfoSet instFlag $prodIndex 1 } } { # the item is a product containing parts # no detail of the product if it is deselected if {[productInfoGet instFlag $prodIndex] == 1} { productInfoSet instFlag $prodIndex 0 } { print "The product \"[productInfoGet desc $prodIndex]\"\ contains the following parts:" puts "" partTextListUpdate $prodIndex while (1) { set ret [prompt [strTableGet 3145_COMP_SELECT_CHANGE]] switch -regexp -- $ret { "^-$" { return 0 } "^$" { productInstFlagSet $prodIndex break } "^[0-9]+([ ][0-9]+)*$" { partChange $ret partTextListUpdate $prodIndex } default { } } } } } } { errorHandler "Error" \ "variable prodToListMap contains incorrect data" } } return 1}proc partChange {idList} { global partToListMap set idList [lsort -integer $idList] foreach id $idList { if {[regexp {^[0-9][0-9][0-9][0-9]+$} $id]} { errorHandler "Error" [strTableGet 3145_COMP_SELECT_CHANGE_INVALID] return 0 } elseif { [array size partToListMap] < $id || $id == 0 } { errorHandler "Error" [strTableGet 3145_COMP_SELECT_CHANGE_INVALID] return 0 } } foreach id $idList { if {[llength $partToListMap($id)] == 2} { set prodIndex [lindex $partToListMap($id) 0] set partIndex [lindex $partToListMap($id) 1] if {[partInfoGet instFlag $partIndex] == 1} { partInfoSet instFlag $partIndex 0 } { partInfoSet instFlag $partIndex 1 } } { errorHandler "Error" \ "variable parToListMap contains incorrect data" } } switch [productInfoGet stateInfo $prodIndex] { changedIncr { productInfoSet instFlag $prodIndex 1 } changedToNone { productInfoSet instFlag $prodIndex 0 } unchanged { } changedDecr { } } productInfoSet stateCommit $prodIndex productInfoSet childStateCommit $prodIndex return 1 }proc partTextListUpdate {prodIndex} { global partToListMap puts [format "%4s %-8s %-40s %-8s" \ item selected descriptions size(MB) ] puts [format "%4s %-8s %-40s %-8s" \ ---- -------- ---------------------------------------- -------- ] set count 1 foreach partIndex [productInfoGet partIndexList $prodIndex] { set partToListMap($count) [list $prodIndex $partIndex] set selected "" if {[partInfoGet instFlag $partIndex] == 1} { set selected "x" } set mbSize [byteToMbyte [partInfoGet size $partIndex]] puts [format "%4s %2s %2s %2s %-40s %8s" " $count" \ "" $selected "" [partInfoGet desc $partIndex] $mbSize] incr count } puts "" return 1}proc productTextListUpdate {} { global setupVals global prodToListMap puts [format "%4s %-8s %-40s %-8s" \ item selected descriptions size(MB) ] puts [format "%4s %-8s %-40s %-8s" \ ---- -------- ---------------------------------------- -------- ] set count 1 foreach prodIndex [cdInfoGet productIndexList] { set prodToListMap($count) $prodIndex set selected "" if {[productInfoGet instFlag $prodIndex] == 1} { set selected "x" } set mbSize [byteToMbyte [productInfoGet size $prodIndex]] puts [format "%4s %2s %2s %2s %-40s %8s" " $count" \ "" $selected "" [productInfoGet desc $prodIndex] $mbSize] incr count } puts "" return 1}proc productTextSizeUpdate {} { global setupVals set setupVals(totalSize) [byteToMbyte [cdInfoGet size]]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -