Some deployment tipsI develop on Windows, and create build scripts that are a mix of batch files and tcl scripts. One quick-and-dirty small project looks like this:
The first thing I do is to modify freewrap.exe so that it has the icon for my program and information about my program. I went ahead and paid the $40 or so for Heaventools' Resource Tuner [1] to do it.The batch file _BuildAll.bat has contentscall replaceSnippets.bat call wrapDrivingForce.bat(In larger projects, "_BuildAll.bat" checks out all the files from a CVS or Subversion repository and creates an installer using InnoSetup.)This batch file calls two other batch files: replaceSnippets.bat:
tclsh ReplaceSnippets.script "drivingforce.tcl" snippets.txt del "drivingforce.tcl" ren "drivingforce_snipped.tcl" "drivingforce.tcl"and wrapDrivingForce.bat:
freewrap drivingforce.tcl drivingforce.icoThe "wrapDrivingForce.bat" batch file is standard for calling freewrap. The "replaceSnippets.bat" file calls a utility that I use to convert from a development version of a script to a freewrap-ready release version. It goes through and replaces anything between "## SNIP" and "## PINS" with corresponding code in a "snippets.txt" file. For example, in this file, it replaces
## SNIP set appdir [file dirname [info script]] ## PINSand
## SNIP
wm iconbitmap . -default drivingforce.ico
## PINSwith## SNIP set appdir [file dirname [info nameofexecutable]] ## PINSand
## SNIP
wm iconbitmap . -default "/development/DrivingForce/drivingforce.ico"
## PINSThe ReplaceSnippets.script code is available under the No Obligation License (NOL), and is: # Look for sections bracketed by "## SNIP" & "## PINS" and from
# second arg into first arg. Put into "firstarg_snipped.tcl"
#
# (c) 2005 Eric Kemp-Benedict
# Released under the "No Obligation License":
# "No obligation for you, no obligation for me."
# This is called from a batch file or other automatic process, so
# checking is minimal!
set initfile [lindex $argv 0]
set snipfile [lindex $argv 1]
set outfile "[file rootname $initfile]_snipped.tcl"
set infp [open $initfile r]
set snfp [open $snipfile r]
set outfp [open $outfile w]
set insnip_in false
set insnip_snip false
while {[gets $infp currline] != -1} {
if {$insnip_in} {
if {[regexp -- {##\s*PINS} $currline] == 1} {
set insnip_in false
}
continue
}
if {[regexp -- {##\s*SNIP} $currline] == 1} {
set insnip_in true
# Read from snip file
while {[gets $snfp snipline] != -1} {
if {$insnip_snip} {
if {[regexp -- {##\s*PINS} $snipline] == 1} {
set insnip_snip false
break
}
puts $outfp $snipline
} elseif {[regexp -- {##\s*SNIP} $snipline] == 1} {
set insnip_snip true
}
}
continue
}
puts $outfp $currline
}
close $infp
close $snfp
close $outfp"Internet Explorer doesn't execute my Tcl application after downloading it"
Category Deployment

