📄 app_gen.ins
字号:
other applications.
"
}
#####################################################################
proc app_gen_startup_cb {MODE} {
global VPIG
global APP_GEN_G
set ROOT_MODE error
if { $MODE != "Standard" } {
set ROOT_MODE warning
}
if { ! [tku_is_root $ROOT_MODE] } {
return "error"
}
if { $VPIG(OS) == "nt" } {
set STATUS [nt_system_install $MODE]
if { $STATUS != "ok" } { return $STATUS }
} else {
if { $MODE == "Custom" || \
($MODE == "Standard" && $APP_GEN_G(INSTALL_TYPE) == "full") } {
set STATUS [do_global_startup $MODE]
if { $STATUS != "ok" && $STATUS != "cancel" } { return $STATUS }
}
set STATUS [do_local_startup $MODE]
if { $STATUS != "ok" } { return $STATUS }
}
return "ok"
}
proc do_global_startup {MODE} {
global VPIG
global APP_GEN_G
if { $APP_GEN_G(SC_MODE) == "client" } {
return "ok"
}
set DEST_PATH $APP_GEN_G(DEST_PATH)
set VER_NUM [get_version_number $VPIG(NAME_VERSION)]
set EDIR_LOCATION [get_edir_location $DEST_PATH]
if { $EDIR_LOCATION == $DEST_PATH } {
set GENESIS_EDIR "e$VER_NUM"
} else {
set GENESIS_EDIR [file join $EDIR_LOCATION e$VER_NUM]
}
set OS $VPIG(OS)
if [string match "/*" $GENESIS_EDIR] {
set ADD_RCLINES [list \
"GENESIS_VER=$VER_NUM" \
"export GENESIS_VER" \
"GENESIS_DIR=$APP_GEN_G(DEST_PATH)" \
"export GENESIS_DIR" \
"GENESIS_EDIR=$GENESIS_EDIR" \
"export GENESIS_EDIR" \
"echo Starting license daemon..." \
"\$GENESIS_EDIR/gnd/gnd" \
]
} else {
set ADD_RCLINES [list \
"GENESIS_VER=$VER_NUM" \
"export GENESIS_VER" \
"GENESIS_DIR=$APP_GEN_G(DEST_PATH)" \
"export GENESIS_DIR" \
"GENESIS_EDIR=$GENESIS_EDIR" \
"export GENESIS_EDIR" \
"echo Starting license daemon..." \
"\$GENESIS_DIR/\$GENESIS_EDIR/gnd/gnd" \
]
}
set ADD_RCLINES_HP10 [list \
"# Genesis configuration" \
"#" \
"# GENESIS: Set to 1 to start GENESIS" \
"#" \
"GENESIS=1" \
"GENESIS_VER=$VER_NUM" \
"GENESIS_DIR=$APP_GEN_G(DEST_PATH)" \
"GENESIS_EDIR=$GENESIS_EDIR" \
]
switch -- $OS {
aix {
set RCFILE "/etc/rc"
set OSNAME "IBM/AIX"
set FILE_TYPE public
}
hp10 {
set RCFILE1 "/sbin/init.d/genesis"
set RCFILE2 "/etc/rc.config.d/genesis"
set RCFILE $RCFILE1
set LINK1 "/sbin/rc2.d/S900genesis"
set LINK2 "/sbin/rc2.d/K100genesis"
set OSNAME "HP-UX 10"
set FILE_TYPE private_hp10
}
nt {
bgerror "NT - undefined startup file"
set OSNAME "Windows NT"
set FILE_TYPE undefined
}
solaris {
set RCFILE "/etc/rc2.d/S95genesis"
set OSNAME "Sun Solaris"
set FILE_TYPE private_solaris
}
linux {
set RCFILE "/etc/init.d/genesis"
if [file isdirectory "/etc/rc5.d"] {
set RCFILELINK "/etc/rc5.d/S95genesis"
} else {
set RCFILELINK "/etc/init.d/rc5.d/S95genesis"
}
set OSNAME "Linux"
set FILE_TYPE private_linux
}
default {
bgerror "Switch error app_gen.ins (v8.1)"
}
}
set CHOICE [tku_popup_message question yesno \
"Operating system : $OSNAME\
\nStart up file : $RCFILE\
\n\nDo you wish to update it for version $VER_NUM ?"]
if { $CHOICE == "no" } {
return "cancel"
}
switch -- $FILE_TYPE {
public {
################### aix hp9 sunos ####################
#
# Read the startup file, find out if it was ever set
# and update the version number.
#
if [catch { open $RCFILE "RDONLY"} FP] {
tku_popup_message error ok $FP
return "error"
}
set RCLINES [split [read $FP] \n]
set NEW_RCLINES [list]
set ADD_EXIT 0
foreach RCLINE $RCLINES {
set TEST [string toupper $RCLINE]
if [string match "*GENESIS*" $TEST] {
set COL1 [string range $RCLINE 0 0]
if { $COL1 != "#" } {
set RCLINE \#$RCLINE
}
}
#
# This is for aix, for example, where the /etc/rc
# file contains the "exit 0" statement.
#
if [string match "*exit*0" $RCLINE] {
set ADD_EXIT 1
} else {
lappend NEW_RCLINES $RCLINE
}
}
close $FP
#
# Write the updated file
#
if [catch { open $RCFILE "WRONLY"} FP] {
tku_popup_message error ok $FP
return "error"
}
foreach RCLINE $NEW_RCLINES {
puts $FP $RCLINE
}
foreach RCLINE $ADD_RCLINES {
puts $FP $RCLINE
}
if { $ADD_EXIT } {
puts $FP "exit 0"
}
close $FP
}
private_hp10 { #################### hp10 ####################
set EDIR_LOCATION [get_edir_location $APP_GEN_G(DEST_PATH)]
set EDIR [file join $EDIR_LOCATION e$VER_NUM]
set SFILE1 [file join $EDIR all install hp10.init.d]
if [catch {file copy -force $SFILE1 $RCFILE1} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
if [catch {file attributes $RCFILE1 -permissions 0755} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
if [file exists $RCFILE2] {
if [catch { file delete $RCFILE2} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
}
if [catch {open $RCFILE2 {WRONLY CREAT}} FP] {
tku_popup_message error ok $FP
return "error"
}
foreach RCLINE $ADD_RCLINES_HP10 {
puts $FP $RCLINE
}
close $FP
foreach LINK [list $LINK1 $LINK2] {
if [file exists $LINK] {
if [catch {file delete $LINK} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
}
if [catch {exec ln -s $RCFILE1 $LINK} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
}
}
private_solaris { ##################### solaris ####################
if [file exists $RCFILE] {
if [catch { file delete $RCFILE} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
}
if [catch { open $RCFILE {WRONLY CREAT}} FP] {
tku_popup_message error ok $FP
return "error"
}
foreach RCLINE $ADD_RCLINES {
puts $FP $RCLINE
}
close $FP
if [catch {file attributes $RCFILE -permissions 0755} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
}
private_linux { ##################### linux ####################
if [file exists $RCFILELINK] {
if [catch { file delete $RCFILELINK} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
}
if [file exists $RCFILE] {
if [catch { file delete $RCFILE} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
}
if [catch { open $RCFILE {WRONLY CREAT}} FP] {
tku_popup_message error ok $FP
return "error"
}
foreach RCLINE $ADD_RCLINES {
puts $FP $RCLINE
}
close $FP
if [catch {file attributes $RCFILE -permissions 0755} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
# Put a link to a "/etc/init.d/genesis" file
# as "/etc/init.d/rc5.d/S95genesis" or "/etc/rc5.d/S95genesis"
if [catch {exec ln -s $RCFILE $RCFILELINK} RESPONSE] {
tku_popup_message error ok $RESPONSE
return "error"
}
}
default {
bgerror "Switch error app_gen.ins (v8.1)"
}
}
return "ok"
}
#.................................................................
proc do_local_startup {MODE} {
global VPIG
global APP_GEN_G
set CSH_NAME "init.csh"
set SH_NAME "init.sh"
set CSH_INIT_PATH [file join $APP_GEN_G(DEST_PATH) $CSH_NAME ]
set SH_INIT_PATH [file join $APP_GEN_G(DEST_PATH) $SH_NAME ]
if { $APP_GEN_G(SC_MODE) == "server" } {
set STATUS [local_startup_write_init_files $CSH_INIT_PATH $SH_INIT_PATH]
if { $STATUS != "ok" } {
return $STATUS
}
} else {
set STATUS [local_startup_check_init_files $CSH_INIT_PATH $SH_INIT_PATH]
if { $STATUS != "ok" } {
return $STATUS
}
}
set TMP_NAME [tclu_get_tmp_name tmp_vpi]
if {[catch {open $TMP_NAME w} FP]} {
tku_popup_message error ok \
[format "Cannot open temporary file.\
\nFile=%s" \
$TMP_NAME]
return "error"
}
set CSH_LINE [format \
"For csh/tcsh users:\
\n-------------------\
\nsource $CSH_INIT_PATH"]
set SH_LINE [format \
"For sh/ksh users:\
\n-----------------\
\n. $SH_INIT_PATH"]
puts $FP "$CSH_LINE\n\n$SH_LINE"
close $FP
set BREAK 0
set CHOICES [list OK "Show $CSH_NAME" "Show $SH_NAME"]
while { ! $BREAK } {
set CHOICE [tku_popup_message info $CHOICES \
"System Administrator:\
\nPlease make sure to include the following startup file\
\nfor each user" \
$TMP_NAME]
set PATH ""
set CHOICE_NUM [lsearch $CHOICES $CHOICE]
switch -- $CHOICE_NUM {
1 {
set PATH $CSH_INIT_PATH
}
2 {
set PATH $SH_INIT_PATH
}
default {
set BREAK 1
}
}
if { $PATH != "" } {
tku_popup_message info ok \
"Contents of file $PATH" $PATH
}
}
file delete $TMP_NAME
##########################################
# Install menu shortcuts for Linux
set DEST_PATH $APP_GEN_G(DEST_PATH)
set VER_NUM [get_version_number $VPIG(NAME_VERSION)]
set EDIR_LOCATION [get_edir_location $DEST_PATH]
set EDIR [file join $EDIR_LOCATION e$VER_NUM]
# tku_popup_message error ok \
# "DEST_PATH=$DEST_PATH, EDIR_LOCATION=$EDIR_LOCATION"
# if {$VPIG(OS) == "linux"} {}
if {$VPIG(OS) == "linux_not_working_in_latest_versions(mikets)"} {
set FOLDER [file join $EDIR all linux applnk]
set EXISTS [tclu_file_exists $FOLDER]
set IS_DIR [tclu_is_path_dir $FOLDER]
if { $EXISTS } {
if {!$IS_DIR } {
tku_popup_message error ok \
"Path is an existing file\
\n\nName = $FOLDER\n"
return error
}
} else {
set STATUS [tclu_mkdir $FOLDER 1]
if { $STATUS != 0 } {
return error
}
}
# check again
set EXISTS [tclu_file_exists $FOLDER]
set IS_DIR [tclu_is_path_dir $FOLDER]
if { $EXISTS && $IS_DIR } {
# Write the ".directory" file
if [catch { open [file join $FOLDER ".directory"] {WRONLY CREAT TRUNC} 0666} FP] {
tku_popup_message error ok $FP
return "error"
}
puts $FP "\[Desktop Entry]"
puts $FP "Comment="
puts $FP "Icon=[file join $EDIR all pixmaps get.xpm]"
puts $FP "Name=Frontline-PCB"
puts $FP "Type=Directory"
close $FP
# Write the "get.desktop" file
if [catch { open [file join $FOLDER "get.desktop"] {WRONLY CREAT TRUNC} 0666} FP] {
tku_popup_message error ok $FP
return "error"
}
puts $FP "\[Desktop Entry]"
puts $FP "Comment="
puts $FP "Exec=[file join $EDIR get get]"
puts $FP "Icon=[file join $EDIR all pixmaps get.xpm]"
puts $FP "Name=Genesis"
puts $FP "Path="
puts $FP "Terminal=true"
puts $FP "Type=Application"
close $FP
# Write the "gfb.desktop" file
if [catch { open [file join $FOLDER "gfb.desktop"] {WRONLY CREAT TRUNC} 0666} FP] {
tku_popup_message error ok $FP
return "error"
}
puts $FP "\[Desktop Entry]"
puts $FP "Comment="
puts $FP "Exec=[file join $EDIR gfb gfb]"
puts $FP "Icon=[file join $EDIR all pixmaps get_form.xpm]"
puts $FP "Name=Genesis Form Builder"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -