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

📄 uninst.tcl

📁 该文件是WINDRIVER针对2.2版本的tornado推出的驱动更新包
💻 TCL
📖 第 1 页 / 共 4 页
字号:
    controlDestroy uninstDlg.helpButt    controlDestroy uninstDlg.okButt    controlValuesSet uninstDlg.message "$msg"    controlValuesSet uninstDlg.cancelButt "OK"    controlEnable uninstDlg.cancelButt 1}################################################################################ setupFolderDelete - removes the program group folder## SYNOPSIS# setupFolderDelete## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc setupFolderDelete {folderName mode {force 1}} {    global uninst    set programPath [programPathGet $mode]    if {$folderName == ""} {        print "folder name $folderName is NULL"        return    }    if {$force} {       if {[catch {file delete -force "$programPath\\$folderName"} err]} {           print "cannot delete folder, $folderName: $err"           if {$uninst(useInputScript)} {               autoUninstLog "cannot delete folder, $folderName: $err"           }       } else {           print "deleted folder: $folderName"           if {$uninst(useInputScript)} {               autoUninstLog "deleted folder: $folderName"           }       }    } else {       if {[catch {file delete "$programPath\\$folderName"} err]} {           print "cannot delete folder, $folderName: $err"           if {$uninst(useInputScript)} {               autoUninstLog "cannot delete folder, $folderName: $err"           }       } else {           print "deleted folder: $folderName"           if {$uninst(useInputScript)} {               autoUninstLog "deleted folder: $folderName"           }       }    }}################################################################################ setupLinkDelete - deletes the icons within a folder### SYNOPSIS# setupLinkDelete## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc setupLinkDelete {folderName linkName mode} {        global uninst    set programPath [programPathGet $mode]    if { "$folderName" == "" } {        print "Error: folder name is null"        return    }    if { "$linkName" == "" } {        print "Error: link name is null"        return    }    if {[regexp {.* Uninstall} $linkName match]} {        if {"$uninst(mode)" == "part"} {            print "Not deleting $linkName, not the last layer"            return        }    }    if {[catch {file delete "$programPath\\$folderName\\$linkName.lnk"} err]} {        print "cannot delete icon, $linkName: $err"        if {$uninst(useInputScript)} {           autoUninstLog "cannot delete icon, $linkName: $err"        }    } else {        print "deleted icon: $folderName\\$linkName"        if {$uninst(useInputScript)} {           autoUninstLog "deleted icon: $linkName"        }    }}################################################################################ uninstService - uninstalls the Tornado Registry Service## This procedure uninstalls the Tornado Registry Service if there is one # running## SYNOPSIS# uninstService## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc uninstService {} {    global uninst    set visitedList {}    foreach line $uninst(resList) {        if {[lsearch $visitedList $line] == "-1"} {            lappend visitedList $line                                    switch [lindex $line 0] {                service {                    if {![isUnix]} {                        uninstMeterUpdate 0 "Removing" "[lindex $line 0]..."                        set serviceName [lindex $line 1]                         if {[catch {setupServiceStop $serviceName} err]} {                            print "cannot stop service, $serviceName: $err"                            if {$uninst(useInputScript)} {                                autoUninstLog "cannot stop service, $serviceName: $err"                            }                        } else {                            print "stopped service: $serviceName"                            if {$uninst(useInputScript)} {                                autoUninstLog "stopped service: $serviceName"                            }                        }                                                                        if {[catch {setupServiceRemove $serviceName} err]} {                            print "cannot delete service: $serviceName: $err"                            if {$uninst(useInputScript)} {                                autoUninstLog "cannot delete service: $serviceName: $err"                            }                        } else {                            print "deleted service: $serviceName"                            if {$uninst(useInputScript)} {                                autoUninstLog "deleted service: $serviceName"                            }                        }                    }                }            }        }    }}################################################################################ uninstResource - uninstalls the resources## This procedure uninstalls the list of resources contained in the tcl variable# uninst(resList).  This list is gathered in the proc uninstInfoGetHelper.## SYNOPSIS# uninstResource## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc uninstResource {} {    global uninst    set folderList {}    set visitedList {}    set iconList {}    foreach line $uninst(resList) {        incr uninst(currItem)        set percent [expr ($uninst(currItem) * 99) / $uninst(totalItem)]        uninstMeterUpdate $percent "Removing" "[lindex $line 0]..."        if {[lsearch $visitedList $line] == "-1"} {            lappend visitedList $line            switch [lindex $line 0] {                icon {                    if {![isUnix]} {                        set folderName [lindex $line 1]                        set iconName [lindex $line 2]                        set common [lindex $line 3]                        lappend iconList $iconName                        if {$uninst(errorCount) == 0} {                            if {"$uninst(mode)" == "all"} {                                print "removed: $folderName $iconName"                                setupLinkDelete $folderName $iconName $common                            } else {                                if {![string match {[getProdInfo name] Uninstall} \                                                                    $iconName]} {                                    print "removed: $folderName $iconName"                                    setupLinkDelete $folderName $iconName \                                                    $common                                 }                            }                        } else {                            if {![string match {[getProdInfo name] Uninstall} $iconName]} {                                print "removed: $folderName $iconName $common"                                setupLinkDelete $folderName $iconName $common                             }                        }                   }               }               folder {                   if {![isUnix]} {                       # Need to remove all the icons first                       lappend folderList $line                   }               }               regkey {                   if {![isUnix]} {                       set rootKey [lindex $line 1]                       set key [lindex $line 2]                       if {[catch {sysRegistryKeyDelete $rootKey $key} err]} {                            print "cannot delete registry key, $key: $err"                            if {$uninst(useInputScript)} {                                autoUninstLog "deleted icon: $linkName"                            }                       } else {                            print "deleted registry key: $key"                            if {$uninst(useInputScript)} {                                autoUninstLog "deleted registry key: $key"                            }                       }                   }               }               regValue {                   if {![isUnix]} {                       set rootKey [lindex $line 1]                       set subKey [lindex $line 2]                       set value [lindex $line 3]                       if {[catch {sysRegistryValueDelete \                                  $rootKey $subKey $value} err]} {                           print "cannot delete registry value, $value: $err"                           if {$uninst(useInputScript)} {                              autoUninstLog "cannot delete registry value, $value: $err"                           }                       } else {                           print "deleted registry value: $value"                           if {$uninst(useInputScript)} {                              autoUninstLog "deleted registry value: $value"                           }                       }                   }               }               default {}           }        }    }    if {![isUnix]} {                        foreach folder $folderList {                                    set folderName [lindex $folder 1]            set common [lindex $folder 2]                                    if {$uninst(errorCount) == 0} {                if {"$uninst(mode)" != "part"} {                    print "remove folder: $folderName"                    setupFolderDelete $folderName $common                }            } else {                # This is a workaround. After the links are deleted in                # the tornado program group, some how the start menu still                # shows the deleted links. This is probably a bug in NT.                # The following will rename the tornado program group. Only                 # uninstall icon should be shown after the rename                set programPath [programPathGet $common]                file rename "$programPath\\$folderName" \                                "$programPath\\$folderName.bak"                file rename "$programPath\\$folderName.bak" \                                "$programPath\\$folderName"            }        }    }}################################################################################ uninstUITclDialogInit - initialization procedure for the uninstall dialog.## This procedure sets the dialog's check boxes based on the contents of the# uninst(mode) array variable.  This procedure is a no-op if automation is# turned on.## SYNOPSIS### PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc uninstUITclDialogInit {} {    global uninst    global argv    global env    applicationTitleSet "[getProdInfo name] Uninstall"    if {$uninst(useInputScript)} {        return    }    if {$uninst(mode) == "none"} {       messageBox -stop "Cannot find the uninstall information."       windowClose uninstDlg    } elseif {$uninst(mode) == "all"} {       controlCheckSet uninstDlg.uninstAll 1       controlEnable uninstDlg.uninstPart 0       onUninstallAll    } else {       controlCheckSet uninstDlg.uninstAll 1       onUninstallAll    }    # disable this button for Unix, doesn't exist    controlCheckSet uninstDlg.uninstRegSvc 1    if {[isUnix]} {        controlEnable uninstDlg.uninstRegSvc 0        controlHide uninstDlg.uninstRegSvc 1    }}################################################################################ dosTempDirGet - returns a unique temporary directory name.### This procedure determine a temporary directory name based on the process# id.## SYNOPSIS### PARAMETERS: N/A## RETURNS: a unique string name for a temporary directory path.## ERRORS: N/A#proc dosTempDirGet {} {    global env    # Determine the "temp" directory    set uninstTemp "_TMP[pid]"    foreach elem [array names env] {       if {[string compare [string tolower $elem] "tmp"] == 0} {           set env(TMP) $env($elem)       }       if {[string compare [string tolower $elem] "temp"] == 0} {           set env(TEMP) $env($elem)       }       if {[string compare [string tolower $elem] "tmpdir"] == 0} {           set env(TMPDIR) $env($elem)       }    }    if {[info exists env(TEMP)] && [file isdir $env(TEMP)]} {        set TMP $env(TEMP)\\$uninstTemp    } elseif {[info exists env(TMP)] && [file isdir $env(TMP)]} {        set TMP $env(TMP)\\$uninstTemp    } elseif {[info exists env(TMPDIR)] && [file isdir $env(TMPDIR)]} {        set TMP $env(TMPDIR)\\$uninstTemp    } else {        set TMP "C:\\$uninstTemp"    }    return $TMP}################################################################################ seedUninstall -  make a list of required files to delete.### This procedure, invoked for Windows based machines, makes a list of required# files that are used by the Uninstaller.  It also creates a batch file# that is invoked to create a temporary directory where the uninstall program# is actually executed so that the directory where uninstall resides itself# can be deleted as well.## SYNOPSIS# seedUninstall## PARAMETERS: N/A## RETURNS: N/A## ERRORS: N/A#proc seedUninstall {} {    global env argv0 uninst    set env(TMP) [unixToDos [dosTempDirGet]]    set uninstDir [unixToDos "$uninst(WIND_BASE)\\.wind\\uninst"]    set binDir [unixToDos "$uninst(WIND_BASE)\\SETUP\\X86\\WIN32"]

⌨️ 快捷键说明

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