This page is for tips about deploying standalone applications with [Freewrap]. Please add to it! I ([EKB]) have decided to stick with Freewrap, in spite of the excitement over [Starkit]s, partly because it's got [BLT] already packaged and ready to go, and partly because it works just fine and I'm used to it. ---- '''Some deployment tips''' I 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: [http://www.kb-creative.net/screenshots/smallproject.gif] 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 [http://www.restuner.com/] 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.) 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.ico The "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]] ## PINS and ## SNIP wm iconbitmap . -default drivingforce.ico ## PINS with ## SNIP set appdir [file dirname [info nameofexecutable]] ## PINS and ## SNIP wm iconbitmap . -default "/development/DrivingForce/drivingforce.ico" ## PINS The ''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 ---- [Category Deployment]