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

📄 inf.tcl

📁 Berkeley DB 4.6.21VxWorks CD.NC.tar.gz
💻 TCL
📖 第 1 页 / 共 5 页
字号:
            infputs "INF Processing: will not add display warnings file $warningsFile: $controlvar specified but infVals($controlvar) = 0"        }    }    if {$displayWarning != 0} {        if [catch {open [cdromRootDirGet]\\RESOURCE\\INF\\$warningsFile r} warningsFileId] {            infputs "INF processing: Cannot open warnings file $warningsFile"            return         }                      set warningMessage [read $warningsFileId]        messageBox $warningMessage      }}############################################################################### filesCopyLine- copies a file from the values specified from an inf file line## Copies a source file to a destination file.  The format of the line read# from the inf file is as follows (optional parameters in brackets):##   source path, destination path, [option], [OS version], [control var]#   #   source path : path of the source file to be copied#   destination path : path of the destination file#   [option] : none | update | overwrite.  Set to none by default.#   [OS version] : NT3x, NT4x, or WIN95.  Specifies to copy the file only if the#                  current OS being used for installation is that which is #                  specified.#                  If no value is specified the icon will be added for any OS.#   [control var] : conditional control variable allowing file to be copied.#                   infVals(control var) must exist and be set to any value other #                   than 0.  ## If [control var] is specified, the global variable infVars(control var)# must exist and be set to a value other than 0.  Otherwise the source file# will not be copied.  This allows for conditional control of copying the source# file.  ## SYNOPSIS# filesCopyLine <line>## PARAMETERS: #   line : a comma delimited line containing the path and values of the file to #          be copied.## RETURNS: N/A#   # ERRORS: N/A#proc filesCopyLine {line} {    global ctrlVals    global infVals    set sourcePath          [nthValueFromCommaDelimitedLine $line 1]    set destinationPath     [nthValueFromCommaDelimitedLine $line 2]    set option              [nthValueFromCommaDelimitedLine $line 3]    set osversion           [nthValueFromCommaDelimitedLine $line 4]    set controlvar          [nthValueFromCommaDelimitedLine $line 5]    if {[string compare $option no_value]==0} {        set option none    }    if {[isUnix]} {        set sourcePath [dosToUnix $sourcePath]	set destinationPath [dosToUnix $destinationPath]    }    set docopy 1    # check the os version    switch -exact -- $osversion {        no_value { set docopy 1 }        default {           if {[string compare $osversion $ctrlVals(version)]==0} {           set docopy 1           } else {               set docopy 0               infputs "INF Processing: will not copy file $sourcePath: osversion does not match OS: $osversion"           }        }    }    # check the control variable    if {$docopy == 1} {        if {[string compare $controlvar no_value] != 0} {                     if {![info exists infVals($controlvar)]} {                # control variable is specified but does not exist                set docopy 0                infputs "INF processing: will not copy $sourcePath: $controlvar specified but infVals($controlvar) not set"            } elseif {$infVals($controlvar)==0} {                # control variable is set to 0                            set docopy 0                infputs "INF processing: will not copy $sourcePath: specified but infVals($controlvar) = 0"            }        }    }    if {$docopy != 0} {        infputs "INF processing: copying file: $sourcePath to $destinationPath"        if {[fileDup $sourcePath $destinationPath $option] == 0} {            infputs "INF processing: could not copy $sourcePath"        }    }}############################################################################### processInfSection - reads and processes an inf file section.## Processes an inf section until the next section or end of file is  # reached.  The function to process each data line must be specified.  ## SYNOPSIS# processInfSection <addFunction> [prodIndex]## PARAMETERS: #   addFunction : the function that processes each individual line.#   prodIndex : optional product Index.  Necessary for the ArFlags section.## RETURNS: N/A   #   # ERRORS: N/A#proc processInfSection {addFunction {prodIndex 0}} {    set sectionOver 0              while {$sectionOver == 0} {        set line [readLine]        set lineType [getLineType $line]        if {[string compare $lineType section_name] == 0} {            set sectionOver 1        } elseif {[string compare $lineType comment] == 0} {                # comment, do nothing        } elseif {[string compare $lineType end_of_file] == 0} {            return        } else {            if {[string compare $addFunction arFlagsLine] == 0} {                # ArFlags is the only function that requires prodIndex                $addFunction $line $prodIndex             } else {                $addFunction $line            }                                    # check for end of file            if {[endOfFile]} {                return            }                    }    }}############################################################################### searchAndProcessSection - searches for and processes an inf file section.## Searches for and processes the specified section of the inf file.  The # procedure first processes the Strings section of the inf file if it has# not been done already.    ## SYNOPSIS# searchAndProcessSection <section> <fileName> [prodIndex]## PARAMETERS: #   section : the name of the INF section to be processed. #   fileName : the name of the INF file.            #   prodIndex : optional product Index.  Necessary for the ArFlags section.## RETURNS: #   0 if processing the section was unsuccessful.#   1 if successful.#   # ERRORS: N/A#proc searchAndProcessSection {section fileName {prodIndex 0}} {    global searchedForStringsSection    if {![info exists searchedForStringsSection($fileName)]} {        set searchedForStringsSection($fileName) 1        searchAndProcessSection Strings $fileName    }    if {![openFile $fileName]} {        infputs "INF processing: cannot open $fileName"        return 0    }       while {[endOfFile] == 0} {        set line [readLine]        set lineType [getLineType $line]        switch -exact -- $lineType {            comment {                # do nothing            }            section_name {                set sectionName [extractSectionName $line]                if {[string compare $sectionName $section] == 0} {                   switch -exact -- $sectionName {                        AddRegistry {                                            processInfSection addRegistryLine                               }                        AddIcon {                                            processInfSection addIconLine                        }                        AddService {                            processInfSection addServiceLine                        }                        Strings {                            processInfSection addStringsLine                        }                        FilesCopy {                            processInfSection filesCopyLine                        }                        ArFlags {                            processInfSection arFlagsLine $prodIndex                        }			CheckPatch {			    processInfSection checkPatchLine 			}                        WarningsFile {                            processInfSection warningsFileLine                         }                        InstallLast {                            # no lines necessary to process.  Simply return                            # 1 since this section name is found.                            }                        default {                            infputs "INF processing: invalid sectionName specified: $sectionName"                             closeFile                            return 0                        }                    }                    closeFile                    return 1                }             }            default {                # data, skip over            }        }     }    closeFile    return 0}############################################################################### chooseInfFile - returns a path to an inf filename.## Given the product index, returns the path to the inf file for the product.# The inf file resides in RESOURCE\INF and its filename must be # [PRODUCT NAME].INF (all uppercase).## SYNOPSIS# chooseInfFile <prodIndex>## PARAMETERS: #   prodIndex : the product index.  ## RETURNS: #   The path to to the product's inf file.#   # ERRORS: N/A#proc chooseInfFile {prodIndex} {    return [cdFileNameGet [file join RESOURCE INF \                                [string toupper [productInfoGet name $prodIndex].INF]\			  ]]}############################################################################### selectedProductsProcessInfFile - processes the specified INF section for#                                  all selected products.## This procedure processes the specified INF section for all the products# the user has selected to install.  The special generic file # ALLPRODUCTS.INF is processed first to carry out actions that should be# done for any product.     ## SYNOPSIS# selectedProductsProcessInffile <section>## PARAMETERS: #   section : name of the INF section to process.## RETURNS: N/A#   # ERRORS: N/A#proc selectedProductsProcessInfFile {section} {    searchAndProcessSection $section [cdFileNameGet [file join RESOURCE \                                         INF ALLPRODUCTS.INF]]    foreach prodIndex [cdInfoGet selectedProdIndexList] {                # extract inf file         # extractInfFile [productInfoGet name $prodIndex]/setup.inf        searchAndProcessSection $section [chooseInfFile $prodIndex] $prodIndex    }}############################################################################### extractInfFile - extracts the inf file from WIND.000.  #                  # Extracts the specified inf file from WIND.000 and places it in the# temporary directory.## SYNOPSIS# extractInfFile <infFile>## PARAMETERS: #   infFile : name of the INF file to extract.## RETURNS: N/A#   # ERRORS: N/A#proc extractInfFile {infFile} {    set zipFile [cdromZipDirGet]/WIND.000    if {[file exists $zipFile]} {       if ![catch {setupUnzip -o -qq -d [tempDirGet] $zipFile $infFile} retVal] {       } else {            infputs "INF processing: cannot extract $infFile: reason: $retVal"       }    }}############################################################################### infputs - wrapper for puts function.## Wrapper for the puts function.  Only prints out the specified string# if the environment variable INF_DEBUG exists and is set to a nonzero value. ## SYNOPSIS# infputs <line>## PARAMETERS: #   line : string to output.   ## RETURNS: N/A#   # ERRORS: N/A#proc infputs {line} {    global env    global setupVals    if {[info exists env(INF_DEBUG)] && $env(INF_DEBUG) != 0} {    	if {[info exists setupVals(DBGLOG_FD)]} {            puts $setupVals(DBGLOG_FD) $line        } else {            puts $line        }    }}

⌨️ 快捷键说明

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