📄 folder.tcl
字号:
# FOLDER.TCL - Setup procedures for implementing folder wizard page
#
# Copyright 1999-2003 Wind River Systems, Inc
#
# modification history
# --------------------
# 03g,29apr03,bjl text rewording.
# 03f,08oct02,bjl force folder name only if tornado itself is installed.
# 03e,11jul02,wmd Force the folder name to be tornado 2.2 by default.
# 03d,23may02,bwd SPR 77766: allow optional tornado products CD to read
# folder value from registries
# 03c,05mar02,bwd Modified SETUP to be non-tornado centric
# 03b,15jun01,j_w remove remoteRegistryHost compatibility and howTo pages
# if selected product is not tornado or windview
# 03a,12jun01,j_w Modified for Tornado 2.2
# 02k,04dec00,bwd SPR 62727: trim any white spaces before the folder name
# 02j,08feb00,bwd Fixed codes to disable Next button until the field is
# entered
# 02i,02feb00,bwd Fixed error handling for test automation
# 02h,19jan00,j_w Remove remoteRegistryHost reference
# 02g,10jan00,bwd Deleted test automation sections from command line SETUP
# 02f,09nov99,clc add text mode
# 02e,20oct99,j_w Removed compatibility and howTo pageRemove call
# 02d,19oct99,bjl replaced tornado productName check with tornadoProductCheck.
# 02c,18oct99,j_w Fixed portMapperIconExist
# 02b,12oct99,j_w Used setupVals(defGroup) as the default folder
# 02a,30Sep99,j_w Modified for T3
# 01g,23jul99,j_w added text messages
# 01f,24mar99,bjl turn off inf write to registry after queueExecute.
# 01e,22mar99,bjl remove backward compatibility pages if tornado not
# installed.
# 01d,19mar99,wmd Output to a file any debug messages.
# 01c,01feb99,tcy prevent user from installing T2 into T101 folder
# 01b,27jan99,tcy changed default folder name to "Tornado2"
# 01a,26jan99,tcy extracted from INSTW32.TCL.
#
#############################################################################
#
# pageCreate(folderSelect) - display existing folders for Tornado installation
# and prompt for Tornado folder name
#
# This procedure will display existing folders for Tornado installation
# and prompt for Tornado folder name
#
# SYNOPSIS
# .tS
# pageCreate(folderSelect)
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc pageCreate(folderSelect) {} {
global ctrlVals
global setupVals
if { [isGUImode] } {
set ctrlVals(volatileFrm) [list \
[list label -name msg1 \
-title [strTableGet FOLDERSELECT_MSG_1]\
-x 100 -y 10 -w 205 -h 27] \
[list label -name msg2 -title "&Program Folder:" \
-x 100 -y 43 -w 85 -h 10] \
[list text -name folderName -border \
-callback onFolderName \
-x 100 -y 53 -w 205 -h 12] \
[list label -name msg3 -title "E&xisting Folders:" \
-x 100 -y 73 -w 85 -h 10] \
[list list -name folderList \
-callback onFolderSelect \
-x 100 -y 83 -w 205 -h 87] \
]
set w [dlgFrmCreate [strTableGet FOLDERSELECT_TITLE]]
# get folder name from registry - trim off white spaces
if { [info exists tornadoInstalled] && $tornadoInstalled } {
controlValuesSet $w.folderName $setupVals(defGroup)
} else {
controlValuesSet $w.folderName [string trim [folderValueReadFromRegistry]]
}
controlValuesSet $w.folderList $ctrlVals(folders)
controlFocusSet $w.folderName
# test automation
if { $ctrlVals(useInputScript) } {
controlValuesSet $w.folderName [string trim $setupVals(folder)]
autoSetupLog "Folder Selection page:"
autoSetupLog "\tSelected folder: $setupVals(folder)"
nextCallback
}
} else {
# TEXT mode
nextCallback
return 0
}
}
#############################################################################
#
# pageProcess(folderSelect) - process inputs from folderSelect page
#
# This procedure will process inputs from folderSelect page
#
# SYNOPSIS
# .tS
# pageProcess(folderSelect)
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: 0 if folder name contains spaces
# 1 if folder name does not contain spaces
#
# ERRORS: N/A
#
proc pageProcess(folderSelect) {} {
global ctrlVals
global setupVals
global tornadoInstalled
global infVals
if { [isGUImode] } {
set retVal 0
if {[instTypeGet] != "icon"} {
foreach prodIndex [cdInfoGet selectedProdIndexList] {
set productName [productInfoGet name $prodIndex]
set productDesc [productInfoGet desc $prodIndex]
if {[tornadoProductCheck $productName $productDesc]} {
set tornadoInstalled 1
}
}
}
if { ![info exists tornadoInstalled] || !$tornadoInstalled } {
pageRemove torRegistry
pageRemove remoteRegistryHost
pageRemove compatibility
pageRemove howTo
pageRemove appConfig
}
defGroupSet [string trim [controlValuesGet $ctrlVals(mainWindow).folderName]]
if {[regexp {^[ ]*$} [defGroupGet] junk]} {
if { $ctrlVals(useInputScript) } {
autoSetupLog "Error: Invalid folder name: $setupVals(folder)"
autoSetupLog "Application Exit\n"
set setupVals(cancel) 1
applicationExit
return 0
} else {
messageBox [strTableGet FOLDERSELECT_MSG_2]
set retVal 0
}
} else {
set retVal 1
}
if { [isTornadoProduct] } {
if {[portMapperIconExist \
[string trim [controlValuesGet $ctrlVals(mainWindow).folderName]]] == 1} {
if { $ctrlVals(useInputScript) } {
autoSetupLog "Error: [strTableGet FOLDERSELECT_MSG_3]"
autoSetupLog "Application Exit\n"
set setupVals(cancel) 1
applicationExit
return 0
} else {
messageBox [strTableGet FOLDERSELECT_MSG_3]
set retVal 0
}
} else {
set retVal 1
}
}
if { [isTornadoProduct] } { set infVals(addFolder) 1 }
set prod [string toupper [getProdInfo name]]
searchAndProcessSection AddRegistry [cdFileNameGet [file join RESOURCE \
INF $prod.INF]]
queueExecute
if { [isTornadoProduct] } { set infVals(addFolder) 0 }
return $retVal
} else { # TEXT mode
if { [isTornadoProduct] } { set infVals(addFolder) 1 }
set prod [string toupper [getProdInfo name]]
searchAndProcessSection AddRegistry [cdFileNameGet [file join RESOURCE \
INF $prod.INF]]
queueExecute
if { [isTornadoProduct] } { set infVals(addFolder) 0 }
return 1
}
}
#############################################################################
#
# onFolderName - set the default folder name when text is changed
#
# This procedure will set the default folder name when text is changed
#
# SYNOPSIS
# .tS
# onFolderName
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc onFolderName {} {
global ctrlVals
global setupVals
set Fname [string trim [controlValuesGet $ctrlVals(mainWindow).folderName]]
if { $Fname == "" } {
controlEnable $ctrlVals(mainWindow).nextButt 0
} else {
controlEnable $ctrlVals(mainWindow).nextButt 1
defGroupSet $Fname
}
}
#############################################################################
#
# onFolderSelect - set the value in edit box when a folder name is selected
# from the folder list
#
# This procedure will set the value in edit box when a folder name is selected
# from the folder list
#
# SYNOPSIS
# .tS
# onFolderSelect
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc onFolderSelect {} {
global ctrlVals
controlValuesSet $ctrlVals(mainWindow).folderName \
[string trim [controlSelectionGet $ctrlVals(mainWindow).folderList -string]]
}
#############################################################################
#
# folderValueReadFromRegistry - read folder value from the Windows registry
#
# This procedure will read folder value from the Windows registry
#
# SYNOPSIS
# .tS
# folderValueReadFromRegistry
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc folderValueReadFromRegistry {} {
global setupVals
# Load folder from the previous installation if any
if {"[defGroupGet]" == ""} {
if { ![isStandAlone] && ![isWRSStandAlone] } {
if {![catch {sysRegistryValueRead HKEY_CURRENT_USER \
"Software\\$setupVals(WRS)" "folder"} folder]} {
defGroupSet $folder
} else {
defGroupSet $setupVals(defGroup)
}
} else {
# non-tornado product: use the product name defined in CONFIG.TCL
defGroupSet $setupVals(defGroup)
}
}
return [defGroupGet]
}
#############################################################################
#
# portMapperIconExist - determine if the given folder contains portMapper icon
#
# This procedure will determine if the given folder contains portMapper icon
#
# SYNOPSIS
# .tS
# portMapperIconExist
# .tE
#
# PARAMETERS:
# <folder>
# program folder name
#
# RETURNS: 1 if portmapper exists
# 0 if portmapper does not exist
#
# ERRORS: N/A
#
proc portMapperIconExist {folder} {
# look for portmapper icon to determine if the last
# installation is of T101
if ![catch {programPathGet 0} error] {
set commonProgramPath [programPathGet 0]
} else {
dbgputs "$error"
}
if ![catch {programPathGet 0} error] {
set userProgramPath [programPathGet 1]
} else {
dbgputs "$error"
}
if {[file exists "$commonProgramPath\\$folder\\Portmapper.lnk"] ||\
[file exists "$userProgramPath\\$folder\\Portmapper.lnk"]} {
return 1
} else {
return 0
}
}
######################################################################
# Dialog Text Messages
######################################################################
set strTable(FOLDERSELECT_TITLE) "Select Folder"
set strTable(FOLDERSELECT_MSG_1) \
"SETUP will add entries to the Windows Program folder you\
select below. You may enter a new folder name, or select\
from the list of existing folders."
set strTable(FOLDERSELECT_MSG_2) \
"Please enter a valid folder name."
set strTable(FOLDERSELECT_MSG_3) \
"Setup has detected that the folder name you selected\
contains icons belonging to previous version of [getProdInfo name].\
Please select another folder name."
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -