diff -uNr sdx.vfs/lib/app-sdx/sync.tcl sdx-1nrl.vfs/lib/app-sdx/sync.tcl
--- sdx.vfs/lib/app-sdx/sync.tcl	2007-03-29 09:40:28.000000000 -0400
+++ sdx-1nrl.vfs/lib/app-sdx/sync.tcl	2008-07-18 18:27:48.000000000 -0400
@@ -5,6 +5,8 @@
 #
 # Recursively sync two directory structures
 #
+package require mk4vfs
+
 proc rsync {arr src dest} {
     #tclLog "rsync $src $dest"
     upvar 1 $arr opts
@@ -12,18 +14,35 @@
     if {$opts(-auto)} {
 	# Auto-mounter
 	vfs::auto $src -readonly
-	vfs::auto $dest
+        if {$opts(-forcedest)} {
+          if {[file exists $dest]} {
+            if {[file type $dest] != "directory"} {
+              set vfs_mountid [vfs::mk4::Mount $dest $dest]
+            }
+          }
+        } else {
+          vfs::auto $dest
+        }
     }
 
     if {![file exists $src]} {
+        if {[info exists vfs_mountid]} {
+          vfs::mk4::Unmount $vfs_mountid $dest
+        }
 	return -code error "source \"$src\" does not exist"
     }
     if {[file isfile $src]} {
 	#tclLog "copying file $src to $dest"
+        if {[info exists vfs_mountid]} {
+          vfs::mk4::Unmount $vfs_mountid $dest
+        }
 	return [rcopy opts $src $dest]
     }
     if {![file isdirectory $dest]} {
 	#tclLog "copying non-file $src to $dest"
+        if {[info exists vfs_mountid]} {
+          vfs::mk4::Unmount $vfs_mountid $dest
+        }
 	return [rcopy opts $src $dest]
     }
     set contents {}
@@ -74,6 +93,9 @@
     # Handle stray files
     #
     if {$opts(-prune) == 0} {
+        if {[info exists vfs_mountid]} {
+          vfs::mk4::Unmount $vfs_mountid $dest
+        }
 	return $count
     }
     set contents {}
@@ -90,6 +112,9 @@
 	rdelete opts $file
 	incr count
     }
+    if {[info exists vfs_mountid]} {
+      vfs::mk4::Unmount $vfs_mountid $dest
+    }
     return $count
 }
 proc _rsync {arr args} {
@@ -237,6 +262,7 @@
     -auto	1
     -noerror	1
     -text	0
+    -forcedest  0
 }
 # 2005-08-30 only ignore the CVS subdir
 # 2007-03-29 added .svn as well
@@ -248,6 +274,7 @@
     Where options are:-
 
     -auto	0|1	Auto-mount starkits (default: $opts(-auto))
+    -forcedest	0|1	Force mounting of dest (default: $opts(-forcedest))
     -compress	0|1	Enable MetaKit compression (default: $opts(-compress))
     -mtime	n	Acceptable difference in mtimes (default: $opts(-mtime))
     -prune	0|1	Remove extra files in dest (default: $opts(-prune))
diff -uNr sdx.vfs/lib/app-sdx/wrap.tcl sdx-1nrl.vfs/lib/app-sdx/wrap.tcl
--- sdx.vfs/lib/app-sdx/wrap.tcl	2008-02-24 14:23:35.000000000 -0500
+++ sdx-1nrl.vfs/lib/app-sdx/wrap.tcl	2009-02-09 00:08:21.444422513 -0500
@@ -50,7 +50,7 @@
   return $result
 }
 
-proc LoadHeader {filename} {
+proc LoadHeader {filename {isWin32 0}} {
   if {[file normalize $filename] == [info nameofexe]} {
     puts stderr "file in use, cannot be prefix: [file normalize $filename]"
     exit 1
@@ -60,7 +60,7 @@
     package require vfs::mk4
     vfs::mk4::Mount $filename hdr -readonly
     # we only look for an icon if the runtime is called *.exe (!)
-    if {[string tolower [file extension $filename]] == ".exe"} {
+    if {$isWin32} {
       catch { set ::origicon [readfile hdr/tclkit.ico] }
     }
   }
@@ -89,6 +89,7 @@
 set type mk4
 set explist {}
 set syncopts {}
+set pfileIsWin32 0
 
 set a [lindex $argv 1]
 while {[string match -* $a]} {
@@ -99,10 +100,21 @@
     }
     -runtime {
       set pfile [lindex $argv 2]
+
+      # Determine if runtime file is a Win32 runtime or not
+      set fd [open $pfile r]
+      fconfigure $fd -encoding binary -translation binary
+      set chk [read $fd 3]
+      if {$chk == "MZ\220"} {
+        set pfileIsWin32 1
+      }
+      close $fd
+      unset fd chk
+
       if {$pfile == $out} {
       	set reusefile 1
       } else {
-      	set header [LoadHeader $pfile]
+      	set header [LoadHeader $pfile $pfileIsWin32]
       }
       set argv [lreplace $argv 1 2]
       set prefix 1
@@ -219,7 +231,7 @@
 
 # 2005-03-15 added AF's code to customize version/description strings in exe's
 if {[info exists pfile] && 
-    [string tolower [file extension $pfile]] == ".exe" &&
+    $pfileIsWin32 &&
     [file exists [file join $idir tclkit.inf]]} {
   puts " customizing strings in executable"
   package require stringfileinfo
