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

📄 register.tcl

📁 这是vxworks 的图形界面开发软件windML2.0和另一个CP2可以构成完整的界面开发。
💻 TCL
📖 第 1 页 / 共 2 页
字号:
    set infVals(addRegistration) 0
    endWaitCursor

    # if nokey is required, destroy the control that was created earlier

    if {[string compare "none" [instKeyGet]] == 0} {
        controlDestroy $ctrlVals(mainWindow).noKeyText
    }
    return $retVal
}

#############################################################################
#
# modKeyDataRegistryValue - modifies installation key information in the 
#                           Windows registry
#
# This procedure will set installation key information in the Windows
# registry
#
#
# SYNOPSIS
# .tS
# modKeyDataRegistryValue
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc modKeyDataRegistryValue {} {
    global setupVals
    global infVals

    if {[instKeyGet] != "none"} {
        set HKCU HKEY_CURRENT_USER
        set infVals(addRegKeyData) 1
        set key [instKeyGet]

        if {![catch {sysRegistryValueRead $HKCU \
            "Software\\Wind River Systems" "keyData"} setupVals(keyString)]} {

            set foundCD 0
            for {set idx 0} \
                {$idx < [llength $setupVals(keyString)]} \
                {incr idx} {
                set combo [lindex $setupVals(keyString) $idx]

                if {[lsearch $combo $setupVals(CDnumber)] != -1} {
                    set foundCD 1
		    set tgtKeyIdx [lsearch $combo $key]
                    if {$tgtKeyIdx != -1} {
                        # installation key has been found

                        set setupVals(keyString) \
                        [lreplace $setupVals(keyString) $idx $idx \
                                  [lreplace $combo $tgtKeyIdx $tgtKeyIdx]]
                        dbgputs "CD found, new key: \
                            setupVals(keyString) = $setupVals(keyString)"
                    }
                }
            }
        }
    }
}



#############################################################################
#
# setKeyDataRegistryValue - set installation key information in the Windows
#                           registry
#
# This procedure will set installation key information in the Windows
# registry
#
#
# SYNOPSIS
# .tS
# setKeyDataRegistryValue
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc setKeyDataRegistryValue {} {
    global ctrlVals
    global setupVals
    global infVals

    if {[instKeyGet] != "none"} {
        set infVals(addRegKeyData) 1
        set key [instKeyGet]

        if {![catch {sysRegistryValueRead HKEY_CURRENT_USER \
            "Software\\$setupVals(WRS)" "keyData"} setupVals(keyString)]} {

            set foundCD 0
            for {set idx 0} \
                {$idx < [llength $setupVals(keyString)]} \
                {incr idx} {
                set combo [lindex $setupVals(keyString) $idx]

                if {[lsearch $combo $setupVals(CDnumber)] != -1} {
                    set foundCD 1
                    if {[lsearch $combo $key] == -1} {
                        # installation key is not found
                        set setupVals(keyString) \
                        [lreplace $setupVals(keyString) $idx $idx \
                                  [linsert $combo 1 $key]]

                        dbgputs "CD found, new key: \
                            setupVals(keyString) = $setupVals(keyString)"
                    }
                }
            }

            if !{$foundCD} {
                set setupVals(keyString) \
                    "\{$setupVals(CDnumber) $key\} $setupVals(keyString)"

                dbgputs "new CD, new key: \
                        setupVals(keyString) = $setupVals(keyString)"
            }

        } else {
            set setupVals(keyString) "\{$setupVals(CDnumber) $key\}"

            dbgputs "new keyData registry: \
                    setupVals(keyString) = $setupVals(keyString)"
        }
    }
}

#############################################################################
#
# onFindZipFileBrowse - set the value in edit box when a directory is selected
#                       from the browse window
#
# This procedure will set the value in edit box when a directory is selected
# from the browse window
#
# This procedure
#
# SYNOPSIS
# .tS
# onFindZipFileBrowse <ctrlName>
# .tE
#
# PARAMETERS:
# .IP ctrlName
# control name which will have the new value
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc onFindZipFileBrowse {ctrlName} {
    global ctrlVals

    set retDir [dirBrowseDialogCreate \
                    -title "WIND Directory" \
                    -initialDir [cdromZipDirGet] ]

    if {"$retDir" != ""} {
        controlValuesSet findZipFileDlgHnd.$ctrlName $retDir
    }
}

#############################################################################
#
# registrationValuesReadFromRegistry - fetch user registration values from
#                                      the Windows registry
#
# This procedure will fetch user registration values from the Windows
# registry
#
# SYNOPSIS
# .tS
# registrationValuesReadFromRegistry
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc registrationValuesReadFromRegistry {} {
    global setupVals

    # Load user name from the previous installation if any

    if {"[userNameGet]" == ""} {
        if {![catch {sysRegistryValueRead HKEY_CURRENT_USER \
                 "Software\\$setupVals(WRS)" "name"} name]} {

            userNameSet $name

        } elseif {![catch {sysRegistryValueRead HKEY_LOCAL_MACHINE \
                 "SOFTWARE\\$setupVals(WRS)" "name"} name]} {

            userNameSet $name
        } else {
            userNameSet ""
        }
    }

    # Load company name from the previous installation if any

    if {"[companyNameGet]" == ""} {
        if {![catch {sysRegistryValueRead HKEY_CURRENT_USER \
                 "Software\\$setupVals(WRS)" "company"} company]} {

            companyNameSet $company

        } elseif {![catch {sysRegistryValueRead HKEY_LOCAL_MACHINE \
                 "SOFTWARE\\$setupVals(WRS)" "company"} company]} {

            companyNameSet $company
        } else {
            companyNameSet ""
        }
    }

    # Load installation key from the previous installation if any

        if {![catch {sysRegistryValueRead HKEY_CURRENT_USER \
                 "Software\\$setupVals(WRS)" "keyData"} keyString]} {
            instKeyDataSet [getKeyData $keyString $setupVals(CDnumber) list]

        } elseif {![catch {sysRegistryValueRead HKEY_LOCAL_MACHINE \
                 "SOFTWARE\\$setupVals(WRS)" "keyData"} keyString]} {
            instKeyDataSet [getKeyData $keyString $setupVals(CDnumber) list]

        } else {
            instKeyDataSet ""
        }
}

#############################################################################
#
# getKeyData - search for the requested CD number in string of keys and
#              CD numbers and return either the installation key or the
#              combination of key and the CD number
#
# This procedure will search for the requested CD number in string of keys and
# CD numbers and return either the installation key or the combination of
# key and the CD number
#
# SYNOPSIS
# .tS
# getKeyData <keyString> <CDnumber> <data>
# .tE
#
# PARAMETERS:
# .IP keyString
# the entire list of keys and CD number read from the registry
# .IP CDnumber
# the CD number (TDK-XXXXX-XX-XX) to look for in keyString
# .IP data
# data to be fetched - key  -- installation key
#                    - list -- combination of key and CD number
#
# RETURNS: either the installation key or the combination of
#          key and the CD number
#
# ERRORS: N/A
#

proc getKeyData {keyString CDnumber {data {key list}}} {

    for {set idx 0} {$idx < [llength $keyString]} {incr idx} {
        set combo [lindex $keyString $idx]
        set found [lsearch $combo $CDnumber]
        if {$found != -1} {
            switch -exact $data {
                key     { return [lindex $combo 1]}
                list    { return [lrange $combo 1 end]}
                default { dbgputs "getKeyData: bad argument: $data"
                          return ""
                }
            }
        }
    }

    return ""
}

##############################################################################
#
# objectConstruct - creates objects to store all information about the unlocked
#                   products.
#
# This function must be called prior to the following functions: cdInfoGet/Set
# SYNOPSIS
# objectConstruct
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#

proc objectConstruct {} {
    global productObj partObj featureObj cdObj
    global constructed
    global setupVals

    if {![info exists constructed([instKeyGet])]} {

        catch {
            unset constructed
            unset productObj
            unset partObj
            unset featureObj
            unset setupVals(tornadoIndex)
            unset setupVals(drvIndex)
        }

        set constructed([instKeyGet]) 1
        set productDescList {}
        set setupVals(drvIndex) -1

        foreach prodIndex [setupProductIndexListGet] {

            set productObj($prodIndex,instFlag) 0
            set productObj($prodIndex,prevInstFlag) 0
            set productObj($prodIndex,partIndexList) {}

            set partIndexList [setupPartIndexListGet $prodIndex]

            foreach partIndex $partIndexList {

                set infoList [setupPartInfoGet $partIndex]

                set productNum    [lindex $infoList 0]
                set productName   [lindex $infoList 1]
                set productDesc   [lindex $infoList 2]
                set partName      [lindex $infoList 3]
                set partDesc      [lindex $infoList 4]
                set productIndex  [lindex $infoList 5]
                set defInstFlag   [lindex $infoList 6]
                set totalFile     [lindex $infoList 7]
                set featureDesc   [lindex $infoList 8]
                set featureId     [lindex $infoList 9]
                set size          [lindex $infoList 10]
                set coreProd      [lindex $infoList 12]

                # record the prodIndex of the drivers product

                if {[string compare $productName "tornado-comp-drv"] == 0} {
                    if {[lindex $setupVals(drvIndex) 0] == -1} {
                        set setupVals(drvIndex) \
                            [lreplace $setupVals(drvIndex) 0 0]
                    }
                    set lineIx [string last ":" $productDesc]
                    set lineLen [string length $productDesc]
                    set arch [string range $productDesc \
                             [expr $lineIx+2] $lineLen]
                    lappend setupVals(drvIndex) [list $prodIndex $arch]
                }

                if {[string compare $productName "tornado"] == 0} {
                    set lineIx [string last "x" $productDesc]
                    set lineLen [string length $productDesc]
                    set arch [string range $productDesc \
                             [expr $lineIx+2] $lineLen]
                    lappend setupVals(tornadoIndex) [list $prodIndex $arch]
                }


                if {[string compare $productName "tornado-vxsim"] == 0 } {
                    set lineIx [string last ":" $productDesc]
                    set lineLen [string length $productDesc]
                    set arch [string range $productDesc \
                             [expr $lineIx+2] $lineLen]
                    switch -exact -- $arch {
                        hp9700          { set arch simhppa }
                        x86-winNT       { set arch simnt }
                        solaris         { set arch simsolaris }
                    }
                    lappend setupVals(tornadoIndex) [list $prodIndex $arch]
                }

                # construct CD object

                if {![info exists cdObj(number)]} {
                    set cdObj(number) [lindex $infoList 11]
                }

                # construct product objects

                set productObj($prodIndex,number) $productNum
                set productObj($prodIndex,name) $productName
                set productObj($prodIndex,desc) $productDesc
                set productObj($prodIndex,featureId) $featureId
                set productObj($prodIndex,coreProd) $coreProd
                lappend productObj($prodIndex,partIndexList) $partIndex
 
                # construct part objects

                set partObj($partIndex,instFlag) $defInstFlag
                set partObj($partIndex,prevInstFlag) $defInstFlag
                set partObj($partIndex,desc) $partDesc
                set partObj($partIndex,size) $size
                set partObj($partIndex,totalFile) $totalFile
                set partObj($partIndex,parent) $prodIndex
                set partObj($partIndex,coreProd) $coreProd

                set featureObj($featureId) $featureDesc

                if {"$defInstFlag" == "1"} {
                    set productObj($prodIndex,instFlag) 1
                    set productObj($prodIndex,prevInstFlag) 1
                }
            }

            if {[llength $partIndexList] == 1} {
                set partObj([lindex $partIndexList 0],instFlag) 1
                set partObj([lindex $partIndexList 0],prevInstFlag) 1
            }

            lappend productDescList \
                    [list $productObj($prodIndex,desc) $prodIndex]
        }

        set cdObj(productIndexList) {}
        foreach pair [lsort $productDescList] {
            lappend cdObj(productIndexList) [lindex $pair 1]
        }
    }

    # make the list of tornado indices unique

    if {[info exists setupVals(tornadoIndex)]} {
        set setupVals(tornadoIndex) [lunique $setupVals(tornadoIndex)]
    }

    dbgputs "finish constructing the products array"
}

⌨️ 快捷键说明

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