⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 insttext.tcl

📁 好东西,欢迎下在,联系方式E-mail:xoming117@tom.com
💻 TCL
📖 第 1 页 / 共 3 页
字号:
        puts "- [lindex $pList 2] license(s) for\
              [featureDescGet [lindex $pList 0]] is activated and\
              will expire on [clock format [lindex $pList 4]\
              -format "%b %d %Y"]."

    }
    return 1
} 

proc pageProcess(moreKey) {} {

    global setupVals
     
    if {"$setupVals(licenseKeyList)" == ""} {
        errorHandler "Error" [strTableGet 1270_LICENSE_KEY_ERROR]
        return 0
    }    

    set binDir [destDirGet]/host/[windHostTypeGet]/bin
    set relBinDir host/[windHostTypeGet]/bin

    foreach filepath [glob -nocomplain [cdromBinDirGet]/WLM/*] {
        set filename [string tolower [file tail $filepath]]
        fileDup $filepath $binDir/$filename
        uninstLog file "wind_base\t$relBinDir/$filename"
    }

    if ![file isdirectory [licenseHomeDirGet]] {
        file mkdir [licenseHomeDirGet]
    }

    foreach key $setupVals(licenseKeyList) {
        set prog [cdromBinDirGet]/WLMUTILS

        if [catch {exec $prog -putKeyfile \
                               [join $key ""] \
                               [info host] \
                               [licenseHomeDirGet]} result] {
            uninstLog setup \
                "\t[strTableGet 1280_LICENSE_KEY_ERROR_1 $result]"

            print $result
            return 0
        }
    }

    exitMsgSet [strTableGet 1355_LICENSE_SUCCESS]

    return 1
}

proc pageCreate(licenseChoice) {} {

    global setupVals
    global ctrlVals
 
    printPageTitle [strTableGet 1520_TITLE_LICENSE_CHOICE]

    set setupVals(licenseNum) [setupLicenseNumGet]
    set prog [cdromBinDirGet]/WLMUTILS

    if ![catch {exec $prog -genHostCode [info host]} retVal] {
        set setupVals(hostId) $retVal
    } {
        set setupVals(hostId) ""
        uninstLog setupLog "\tFailed to detect HostId: $retVal"
    }

    set ctrlVals(pageList) $ctrlVals(pageListBack)
    print "[strTableGet 1290_LICENSE_CHOICE]\n"

    foreach featureId [cdInfoGet featureIdList] {
        print "- [featureDescGet $featureId]"
    }

    print "\n[strTableGet 1291_LICENSE_CHOICE]"

    while {1} {
        puts ""
        print [strTableGet 3300_LICENSE_CHOICE_0]
        print [strTableGet 3300_LICENSE_CHOICE_1]
        print [strTableGet 3310_LICENSE_CHOICE_2]
        print [strTableGet 3320_LICENSE_CHOICE_3]
        puts ""
        switch -regexp -- \
            [prompt [strTableGet 3325_LICENSE_CHOICE_QUESTION]] {
            "^-$"    { return 0 }
            "^1?$"   { set setupVals(licAction) "remote"; return 1 }
            "^2$"   { set setupVals(licAction) "haveKey"; return 1 }
            "^3$"  { set setupVals(licAction) "email"; return 1 }
            "^4$"   { set setupVals(licAction) "call"; return 1 }
            default { }
        }
    }
}

proc pageProcess(licenseChoice) {} {

    global setupVals

    switch $setupVals(licAction) {
        haveKey {
            pageRemove licEmail
            pageRemove licCall
            pageRemove remoteLicenseHost
        }
        email {
            pageRemove licCall
            pageRemove remoteLicenseHost
        }
        call {
            pageRemove licEmail
            pageRemove remoteLicenseHost
        }
        remote {
            pageRemove licEmail
            pageRemove licCall
            pageRemove licenseKey
            pageRemove moreKey
        }
    }
    return 1
}

proc pageCreate(licEmail) {} {

    global setupVals

    printPageTitle [strTableGet 1530_TITLE_LICENSE_MAIL]
    print "[strTableGet 1330_LICENSE_MAIL]\n"

    set mailMsg "[strTableGet 1340_LICENSE_MAIL_HEADER_LINE1]\
             \n\n[strTableGet 1340_LICENSE_MAIL_HEADER_LINE2]\
             \n\n[strTableGet 1340_LICENSE_MAIL_HEADER_LINE3 [userNameGet]]\
               \n[strTableGet 1340_LICENSE_MAIL_HEADER_LINE4 [companyNameGet]]\
               \n[strTableGet 1340_LICENSE_MAIL_HEADER_LINE5 [instKeyGet]]\
               \n[strTableGet 1340_LICENSE_MAIL_HEADER_LINE6 \
                              $setupVals(licenseNum)]\
               \n[strTableGet 1340_LICENSE_MAIL_HEADER_LINE7 [info host]]\
               \n[strTableGet 1340_LICENSE_MAIL_HEADER_LINE8 \
                              $setupVals(hostId)]\
               \n\n[strTableGet 1340_LICENSE_MAIL_HEADER_LINE9]\
               \n\n"

    foreach featureId [cdInfoGet featureIdList] {
        append mailMsg "[featureDescGet $featureId] (id = $featureId)\n"
    }

    puts $mailMsg 
    set setupVals(mailMsg) $mailMsg

    while (1) { 
        switch -regexp -- [prompt [strTableGet 3340_LICENSE_MAIL_QUESTION]] {
            "^-$"   { return 0 }
            "^$"    { return 1 }
            default { }
        }
    }
    return 1
}

proc pageProcess(licEmail) {} {

    global setupVals
    global ctrlVals
  
    set setupVals(licAction) haveKey
    set ctrlVals(pageList) $ctrlVals(pageListBack)
    set ctrlVals(currPage) destDir
    return [mailSend]
}

proc pageCreate(licCall) {} {

    global setupVals

    printPageTitle [strTableGet 1540_TITLE_LICENSE_CALL]
    print "[strTableGet 1350_LICENSE_CALL]\n"

    puts [strTableGet 1340_LICENSE_MAIL_HEADER_LINE7 [info host]]
    puts [strTableGet 1340_LICENSE_MAIL_HEADER_LINE8 $setupVals(hostId)]
    puts [strTableGet 1340_LICENSE_MAIL_HEADER_LINE6 $setupVals(licenseNum)]
    puts "\n[strTableGet 1340_LICENSE_MAIL_HEADER_LINE9]\n"

    foreach featureId [cdInfoGet featureIdList] {
        append features "[featureDescGet $featureId] (id = $featureId)\n"
    }

    print $features
 
    while (1) { 
        switch -regexp -- [prompt [strTableGet 3000_RETURN_QUESTION]] { 
            "^-$"   { return 0 }
            "^$"    { return 1 }
            default { }
        }
    }
    return 1
}

proc pageProcess(licCall) {} {

    global setupVals
    global ctrlVals
  
    set setupVals(licAction) haveKey
    set ctrlVals(pageList) $ctrlVals(pageListBack)
    set ctrlVals(currPage) destDir
    return 1
}

proc flipPermission {bit} {

    global setupVals 
    global perVals 

    if { $setupVals($bit) == "0" } {
        set setupVals($bit) 1
        set perVals($bit) "x"
    } {
        set setupVals($bit) 0
        set perVals($bit) ""
    }
}

proc prompt {{msg ""}} {

    global setupVals
 
    if { "$msg" != "" } {
        print $msg
    }
    puts -nonewline "-> "
    flush stdout
    set ans [gets stdin]
    set ans [string trim $ans " " ]
    puts ""
    if { "$ans" == "exit" } {
        catch {
            uninstLog setup "\tUser aborted!"
            uninstStop
        }
        exit 0 
    }
    return $ans
}

proc printPageTitle {msg} {

    for {set i 0} {$i < 2} {incr i} {
        puts ""
    }   
    for {set i 0} {$i < 80} {incr i} {
        puts -nonewline "="
    }
    puts ""
    set space [expr (80 - [string length $msg]) / 2 ]
    for {set i 0} {$i < $space} {incr i} {
        puts -nonewline " "
    }
    puts -nonewline "$msg"
    puts ""
    for {set i 0} {$i < 80} {incr i} {
        puts -nonewline "="
    }
    puts ""
}

proc nextCallback {} {

    global ctrlVals
    
    set ret [pageProcess($ctrlVals(currPage))]

    if {$ret == "0"} {
        # revisit the page
        return 0
    } elseif {$ret == "-1"} {
        # goes back a page
        backCallback  
    } else {
        # goes to next page
        set currPageIndex [lsearch $ctrlVals(pageList) $ctrlVals(currPage)]

        if {"$currPageIndex" == "-1"} {
            errorHandler "Error" "page $ctrlVals(currPage) not found!"
            return 0
        } {
            set nextPageIndex [expr $currPageIndex + 1]
            set nextPage [lindex $ctrlVals(pageList) $nextPageIndex]

            if {"$nextPage" == ""} {
                exit 0
            } {
                set ctrlVals(currPage) $nextPage
            }
        }
    }
}

proc backCallback {} {

    global ctrlVals

    # decrement the dialog index and re-create previous page

    set currPageIndex [lsearch $ctrlVals(pageList) $ctrlVals(currPage)]
    set prevPageIndex [expr $currPageIndex - 1]

    if {"$prevPageIndex" >= "0"} {
        set ctrlVals(currPage) [lindex $ctrlVals(pageList) $prevPageIndex]
    } else {
       errorHandler "Error" [strTableGet 3370_BACK_CALLBACK]
    }
}

proc quitCallback {} {

    global setupVals

    while (1) { 
        switch -regexp -- [prompt [strTableGet 3360_QUIT_CALLBACK]] {
            "^$"    { return 1 }
            default { }
        }
    }
}

proc errorHandler {{mode ""} {msg ""}} {
    print "$mode: $msg"
    puts ""
}

proc dialog {type title msg bitmap default} {
    
    print "$msg\n"
    switch $type {
        ow_owall_ig_igall {
            set que "Select one of the following:\n\
                \n1 - Overwrite\
                \n2 - Overwrite all\
                \n3 - Ignore\
                \n4 - Ignore all\n"
            puts $que
            while {1} {
                set ret [prompt "default: \[2\]"]
                switch -regexp -- $ret {
                    "^(1|2|3|4)$" { return [expr $ret - 1] }
                    "^$"          { return 1 }
                    default       { }
                }
            }
        }

        re_ig_cancel {
            set que "Select one of the following:\n\
                \n1 - Retry\
                \n2 - Ignore\
                \n3 - Cancel\n"
            puts $que
            while {1} {
                set ret [prompt "default: \[2\]"]
                switch -regexp -- $ret {
                    "^(1|2|3)$" { return [expr $ret - 1] }
                    "^$"        { return 1 }
                    default     { }
                }
            }
        }
        ok_cancel {
            set que "Select one of the following:\n\
                \n1 - Ok\
                \n2 - Cancel\n"
            puts $que
            while {1} {
                set ret [prompt "default: \[1\]"]
                switch -regexp -- $ret {
                    "^(1|2)$" { return [expr $ret - 1] }
                    "^$"      { return 0 }
                    default   { }
                }
            }
        }
    }
}

proc constructPages {mode} {

    global ctrlVals
    global setupVals

    switch "$mode" {
        license {
            set ctrlVals(pageList) { 
                welcome registrationName registrationCompany registrationKey
                destDir wlmdDetect licenseChoice remoteLicenseHost 
                licEmail licCall licenseKey moreKey licenseFinish  
            }
            cdromDescSet [strTableGet 1261_LICENSE]
        }
        default {
            set ctrlVals(pageList) { 
                welcome privilege registrationName registrationCompany
                registrationKey destDir compSelect permission filesCopy
                libUpdate remoteRegistryHost finish 
            }
            if {[setupId effective userid] != "0"} {
                pageRemove "privilege"
            }
        }
    }
    set ctrlVals(currPage) [lindex $ctrlVals(pageList) 0]
    set ctrlVals(pageListBack) $ctrlVals(pageList)
}

proc pageRemove {page} {

    global ctrlVals

    if {[lsearch $ctrlVals(pageList) $page] == "-1"} {
        errorHandler "Error" "cannot find $page to remove"
    } {
        set tempList ""
        foreach p $ctrlVals(pageList) {
            if {"$p" != "$page"} {
                lappend tempList $p
            }
        }
        set ctrlVals(pageList) $tempList
    }
}

proc globalInit {} {

    global setupVals env

    source $env(CD_ROOT)/RESOURCE/TCL/GLOBAL.TCL

    set setupVals(errorCount) 0
    set setupVals(warnCount) 0
    set setupVals(uninstFile) ""
    set setupVals(licenseKeyList)  ""
    set setupVals(profile) ""
    set setupVals(windLmHostHome) ""

    if [info exists env(HOME)] {
        set setupVals(profile) $env(HOME)/.wind/installProfile.tcl
        set setupVals(windLmHostHome) $env(HOME)/.wind/license
    }
    
    set setupVals(licAction) remote
    windHostTypeSet $env(WIND_HOST_TYPE)
    
    if [catch {destDirSet $env(WIND_BASE)} error] {
       destDirSet /usr/wind
    }
    
    cdromZipDirSet [cdromRootDirGet]/WIND
}

# Entry point of the Setup program

globalInit
instTypeSet [lindex $argv 0]

catch {source $setupVals(profile)}
set setupVals(prevInstKey) [instKeyGet]

source [cdromRootDirGet]/RESOURCE/TCL/MESSAGES.TCL
source [cdromRootDirGet]/RESOURCE/TCL/INSTALL.TCL
source [cdromRootDirGet]/RESOURCE/TCL/FSPACE.TCL
source [cdromRootDirGet]/RESOURCE/TCL/CONFIG.TCL

constructPages [instTypeGet]

while (1) {
    set ret [pageCreate($ctrlVals(currPage))]
    if {$ret == 1} {
        nextCallback
    } elseif {$ret == 0} {
        backCallback
    } 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -