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 contents
call 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