System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 2bcc67018a2e6efe172621e8f2c19871e80ef50d:


0000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
0050: 0a 23 0d 0a 23 20 64 65 70 6c 6f 79 41 6e 64 54  .#..# deployAndT
0060: 65 73 74 43 65 2e 65 61 67 6c 65 20 2d 2d 20 57  estCe.eagle -- W
0070: 69 6e 64 6f 77 73 20 43 45 20 44 65 70 6c 6f 79  indows CE Deploy
0080: 6d 65 6e 74 20 26 20 54 65 73 74 69 6e 67 20 54  ment & Testing T
0090: 6f 6f 6c 0d 0a 23 0d 0a 23 20 57 72 69 74 74 65  ool..#..# Writte
00a0: 6e 20 62 79 20 4a 6f 65 20 4d 69 73 74 61 63 68  n by Joe Mistach
00b0: 6b 69 6e 2e 0d 0a 23 20 52 65 6c 65 61 73 65 64  kin...# Released
00c0: 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 64   to the public d
00d0: 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20 79 6f  omain, use at yo
00e0: 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a 23 0d  ur own risk!..#.
00f0: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
0100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0140: 0d 0a 0d 0a 70 61 63 6b 61 67 65 20 72 65 71 75  ....package requ
0150: 69 72 65 20 45 61 67 6c 65 0d 0a 0c 0d 0a 70 72  ire Eagle.....pr
0160: 6f 63 20 75 73 61 67 65 20 7b 20 65 72 72 6f 72  oc usage { error
0170: 20 7d 20 7b 0d 0a 20 20 69 66 20 7b 5b 73 74 72   } {..  if {[str
0180: 69 6e 67 20 6c 65 6e 67 74 68 20 24 65 72 72 6f  ing length $erro
0190: 72 5d 20 3e 20 30 7d 20 74 68 65 6e 20 7b 70 75  r] > 0} then {pu
01a0: 74 73 20 73 74 64 6f 75 74 20 24 65 72 72 6f 72  ts stdout $error
01b0: 7d 0d 0a 0d 0a 20 20 70 75 74 73 20 73 74 64 6f  }....  puts stdo
01c0: 75 74 20 22 75 73 61 67 65 3a 5c 0d 0a 5b 66 69  ut "usage:\..[fi
01d0: 6c 65 20 74 61 69 6c 20 5b 69 6e 66 6f 20 6e 61  le tail [info na
01e0: 6d 65 6f 66 65 78 65 63 75 74 61 62 6c 65 5d 5d  meofexecutable]]
01f0: 5c 0d 0a 5b 66 69 6c 65 20 74 61 69 6c 20 5b 69  \..[file tail [i
0200: 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20 5c 5b 79  nfo script]] \[y
0210: 65 61 72 5c 5d 20 5c 5b 70 6c 61 74 66 6f 72 6d  ear\] \[platform
0220: 5c 5d 20 5c 5b 63 6f 6e 66 69 67 75 72 61 74 69  \] \[configurati
0230: 6f 6e 5c 5d 5c 0d 0a 5c 5b 63 75 6c 74 75 72 65  on\]\..\[culture
0240: 5c 5d 20 5c 5b 70 6c 61 74 66 6f 72 6d 49 64 5c  \] \[platformId\
0250: 5d 20 5c 5b 64 65 76 69 63 65 49 64 5c 5d 20 5c  ] \[deviceId\] \
0260: 5b 71 75 69 65 74 5c 5d 22 0d 0a 0d 0a 20 20 23  [quiet\]"....  #
0270: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 49 6e 64 69  ..  # NOTE: Indi
0280: 63 61 74 65 20 74 6f 20 74 68 65 20 63 61 6c 6c  cate to the call
0290: 65 72 2c 20 69 66 20 61 6e 79 2c 20 74 68 61 74  er, if any, that
02a0: 20 77 65 20 68 61 76 65 20 66 61 69 6c 65 64 2e   we have failed.
02b0: 0d 0a 20 20 23 0d 0a 20 20 65 78 69 74 20 31 0d  ..  #..  exit 1.
02c0: 0a 7d 0d 0a 0c 0d 0a 23 0d 0a 23 20 4e 4f 54 45  .}.....#..# NOTE
02d0: 3a 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65  : This procedure
02e0: 20 77 69 6c 6c 20 6f 75 74 70 75 74 20 61 20 64   will output a d
02f0: 69 61 67 6e 6f 73 74 69 63 20 6d 65 73 73 61 67  iagnostic messag
0300: 65 2c 20 74 79 70 69 63 61 6c 6c 79 20 74 6f 20  e, typically to 
0310: 74 68 65 0d 0a 23 20 20 20 20 20 20 20 73 74 61  the..#       sta
0320: 6e 64 61 72 64 20 6f 75 74 70 75 74 20 63 68 61  ndard output cha
0330: 6e 6e 65 6c 2c 20 75 73 69 6e 67 20 74 68 65 20  nnel, using the 
0340: 5b 70 75 74 73 5d 20 63 6f 6d 6d 61 6e 64 20 75  [puts] command u
0350: 6e 6c 65 73 73 20 74 68 65 20 67 6c 6f 62 61 6c  nless the global
0360: 0d 0a 23 20 20 20 20 20 20 20 76 61 72 69 61 62  ..#       variab
0370: 6c 65 20 22 71 75 69 65 74 22 20 69 73 20 6e 6f  le "quiet" is no
0380: 6e 2d 7a 65 72 6f 2e 0d 0a 23 0d 0a 70 72 6f 63  n-zero...#..proc
0390: 20 71 70 75 74 73 20 7b 20 61 72 67 73 20 7d 20   qputs { args } 
03a0: 7b 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  {..  if {![info 
03b0: 65 78 69 73 74 73 20 3a 3a 71 75 69 65 74 5d 20  exists ::quiet] 
03c0: 7c 7c 20 21 24 3a 3a 71 75 69 65 74 7d 20 74 68  || !$::quiet} th
03d0: 65 6e 20 7b 0d 0a 20 20 20 20 65 76 61 6c 20 70  en {..    eval p
03e0: 75 74 73 20 24 61 72 67 73 3b 20 66 6c 75 73 68  uts $args; flush
03f0: 20 73 74 64 6f 75 74 0d 0a 20 20 7d 0d 0a 7d 0d   stdout..  }..}.
0400: 0a 0c 0d 0a 23 0d 0a 23 20 4e 4f 54 45 3a 20 54  ....#..# NOTE: T
0410: 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 6c 6f  his procedure lo
0420: 6f 6b 73 20 75 70 20 61 6e 64 20 72 65 74 75 72  oks up and retur
0430: 6e 73 20 74 68 65 20 74 61 72 67 65 74 20 64 65  ns the target de
0440: 76 69 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68  vice based on th
0450: 65 0d 0a 23 20 20 20 20 20 20 20 6c 6f 63 61 6c  e..#       local
0460: 65 2c 20 70 6c 61 74 66 6f 72 6d 20 49 64 2c 20  e, platform Id, 
0470: 61 6e 64 20 64 65 76 69 63 65 20 49 64 2e 0d 0a  and device Id...
0480: 23 0d 0a 70 72 6f 63 20 67 65 74 44 65 76 69 63  #..proc getDevic
0490: 65 20 7b 20 63 75 6c 74 75 72 65 49 6e 66 6f 20  e { cultureInfo 
04a0: 70 6c 61 74 66 6f 72 6d 49 64 20 64 65 76 69 63  platformId devic
04b0: 65 49 64 20 7d 20 7b 0d 0a 20 20 73 65 74 20 64  eId } {..  set d
04c0: 61 74 61 73 74 6f 72 65 4d 61 6e 61 67 65 72 20  atastoreManager 
04d0: 5b 6f 62 6a 65 63 74 20 63 72 65 61 74 65 20 2d  [object create -
04e0: 61 6c 69 61 73 20 5c 0d 0a 20 20 20 20 20 20 4d  alias \..      M
04f0: 69 63 72 6f 73 6f 66 74 2e 53 6d 61 72 74 44 65  icrosoft.SmartDe
0500: 76 69 63 65 2e 43 6f 6e 6e 65 63 74 69 76 69 74  vice.Connectivit
0510: 79 2e 44 61 74 61 73 74 6f 72 65 4d 61 6e 61 67  y.DatastoreManag
0520: 65 72 20 5c 0d 0a 20 20 20 20 20 20 5b 24 63 75  er \..      [$cu
0530: 6c 74 75 72 65 49 6e 66 6f 20 4c 43 49 44 5d 5d  ltureInfo LCID]]
0540: 0d 0a 0d 0a 20 20 73 65 74 20 70 6c 61 74 66 6f  ....  set platfo
0550: 72 6d 20 5b 24 64 61 74 61 73 74 6f 72 65 4d 61  rm [$datastoreMa
0560: 6e 61 67 65 72 20 2d 61 6c 69 61 73 20 47 65 74  nager -alias Get
0570: 50 6c 61 74 66 6f 72 6d 20 5b 6f 62 6a 65 63 74  Platform [object
0580: 20 63 72 65 61 74 65 20 5c 0d 0a 20 20 20 20 20   create \..     
0590: 20 4d 69 63 72 6f 73 6f 66 74 2e 53 6d 61 72 74   Microsoft.Smart
05a0: 44 65 76 69 63 65 2e 43 6f 6e 6e 65 63 74 69 76  Device.Connectiv
05b0: 69 74 79 2e 4f 62 6a 65 63 74 49 64 20 24 70 6c  ity.ObjectId $pl
05c0: 61 74 66 6f 72 6d 49 64 5d 5d 0d 0a 0d 0a 20 20  atformId]]....  
05d0: 69 66 20 7b 5b 73 74 72 69 6e 67 20 6c 65 6e 67  if {[string leng
05e0: 74 68 20 24 64 65 76 69 63 65 49 64 5d 20 3d 3d  th $deviceId] ==
05f0: 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20   0} then {..    
0600: 73 65 74 20 64 65 76 69 63 65 49 64 20 5b 24 70  set deviceId [$p
0610: 6c 61 74 66 6f 72 6d 20 47 65 74 44 65 66 61 75  latform GetDefau
0620: 6c 74 44 65 76 69 63 65 49 64 5d 0d 0a 20 20 7d  ltDeviceId]..  }
0630: 0d 0a 0d 0a 20 20 73 65 74 20 64 65 76 69 63 65  ....  set device
0640: 20 5b 24 70 6c 61 74 66 6f 72 6d 20 2d 61 6c 69   [$platform -ali
0650: 61 73 20 47 65 74 44 65 76 69 63 65 20 24 64 65  as GetDevice $de
0660: 76 69 63 65 49 64 5d 0d 0a 0d 0a 20 20 71 70 75  viceId]....  qpu
0670: 74 73 20 73 74 64 6f 75 74 20 5b 61 70 70 65 6e  ts stdout [appen
0680: 64 41 72 67 73 20 5c 0d 0a 20 20 20 20 20 20 22  dArgs \..      "
0690: 72 65 74 75 72 6e 69 6e 67 20 64 65 76 69 63 65  returning device
06a0: 20 5c 22 22 20 5b 24 64 65 76 69 63 65 20 4e 61   \"" [$device Na
06b0: 6d 65 5d 20 22 5c 22 20 6f 66 20 70 6c 61 74 66  me] "\" of platf
06c0: 6f 72 6d 20 5c 22 22 20 5c 0d 0a 20 20 20 20 20  orm \"" \..     
06d0: 20 5b 24 64 65 76 69 63 65 20 50 6c 61 74 66 6f   [$device Platfo
06e0: 72 6d 2e 54 6f 53 74 72 69 6e 67 5d 20 22 5c 22  rm.ToString] "\"
06f0: 20 77 69 74 68 20 49 64 20 5c 22 22 20 5b 24 64   with Id \"" [$d
0700: 65 76 69 63 65 20 49 64 2e 54 6f 53 74 72 69 6e  evice Id.ToStrin
0710: 67 5d 20 5c 0d 0a 20 20 20 20 20 20 5c 22 2e 2e  g] \..      \"..
0720: 2e 5d 0d 0a 0d 0a 20 20 72 65 74 75 72 6e 20 24  .]....  return $
0730: 64 65 76 69 63 65 0d 0a 7d 0d 0a 0c 0d 0a 23 0d  device..}.....#.
0740: 0a 23 20 4e 4f 54 45 3a 20 54 68 69 73 20 70 72  .# NOTE: This pr
0750: 6f 63 65 64 75 72 65 20 73 74 61 72 74 73 20 61  ocedure starts a
0760: 20 70 72 6f 63 65 73 73 20 6f 6e 20 74 68 65 20   process on the 
0770: 74 61 72 67 65 74 20 64 65 76 69 63 65 20 61 6e  target device an
0780: 64 20 6f 70 74 69 6f 6e 61 6c 6c 79 0d 0a 23 20  d optionally..# 
0790: 20 20 20 20 20 20 77 61 69 74 73 20 66 6f 72 20        waits for 
07a0: 69 74 20 74 6f 20 63 6f 6d 70 6c 65 74 65 2e 0d  it to complete..
07b0: 0a 23 0d 0a 70 72 6f 63 20 73 74 61 72 74 52 65  .#..proc startRe
07c0: 6d 6f 74 65 50 72 6f 63 65 73 73 20 7b 20 64 65  moteProcess { de
07d0: 76 69 63 65 20 66 69 6c 65 4e 61 6d 65 20 61 72  vice fileName ar
07e0: 67 75 6d 65 6e 74 73 20 7b 77 61 69 74 20 74 72  guments {wait tr
07f0: 75 65 7d 20 7d 20 7b 0d 0a 20 20 73 65 74 20 72  ue} } {..  set r
0800: 65 6d 6f 74 65 50 72 6f 63 65 73 73 20 5b 24 64  emoteProcess [$d
0810: 65 76 69 63 65 20 2d 61 6c 69 61 73 20 47 65 74  evice -alias Get
0820: 52 65 6d 6f 74 65 50 72 6f 63 65 73 73 5d 0d 0a  RemoteProcess]..
0830: 0d 0a 20 20 69 66 20 7b 21 5b 24 72 65 6d 6f 74  ..  if {![$remot
0840: 65 50 72 6f 63 65 73 73 20 53 74 61 72 74 20 24  eProcess Start $
0850: 66 69 6c 65 4e 61 6d 65 20 24 61 72 67 75 6d 65  fileName $argume
0860: 6e 74 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20  nts]} then {..  
0870: 20 20 65 72 72 6f 72 20 5b 61 70 70 65 6e 64 41    error [appendA
0880: 72 67 73 20 22 63 6f 75 6c 64 20 6e 6f 74 20 73  rgs "could not s
0890: 74 61 72 74 20 72 65 6d 6f 74 65 20 70 72 6f 63  tart remote proc
08a0: 65 73 73 20 5c 22 22 20 24 66 69 6c 65 4e 61 6d  ess \"" $fileNam
08b0: 65 20 5c 22 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  e \"]..  }....  
08c0: 69 66 20 7b 24 77 61 69 74 7d 20 74 68 65 6e 20  if {$wait} then 
08d0: 7b 0d 0a 20 20 20 20 71 70 75 74 73 20 73 74 64  {..    qputs std
08e0: 6f 75 74 20 5b 61 70 70 65 6e 64 41 72 67 73 20  out [appendArgs 
08f0: 5c 0d 0a 20 20 20 20 20 20 20 20 22 77 61 69 74  \..        "wait
0900: 69 6e 67 20 66 6f 72 20 72 65 6d 6f 74 65 20 70  ing for remote p
0910: 72 6f 63 65 73 73 20 22 20 5b 24 72 65 6d 6f 74  rocess " [$remot
0920: 65 50 72 6f 63 65 73 73 20 47 65 74 49 64 5d 20  eProcess GetId] 
0930: 2e 2e 2e 5d 0d 0a 0d 0a 20 20 20 20 77 68 69 6c  ...]....    whil
0940: 65 20 7b 21 5b 24 72 65 6d 6f 74 65 50 72 6f 63  e {![$remoteProc
0950: 65 73 73 20 48 61 73 45 78 69 74 65 64 5d 7d 20  ess HasExited]} 
0960: 7b 0d 0a 20 20 20 20 20 20 71 70 75 74 73 20 2d  {..      qputs -
0970: 6e 6f 6e 65 77 6c 69 6e 65 20 73 74 64 6f 75 74  nonewline stdout
0980: 20 2e 0d 0a 20 20 20 20 20 20 61 66 74 65 72 20   ...      after 
0990: 31 30 30 30 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  1000..    }.... 
09a0: 20 20 20 71 70 75 74 73 20 73 74 64 6f 75 74 20     qputs stdout 
09b0: 22 22 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 5b  ""..    return [
09c0: 24 72 65 6d 6f 74 65 50 72 6f 63 65 73 73 20 47  $remoteProcess G
09d0: 65 74 45 78 69 74 43 6f 64 65 5d 0d 0a 20 20 7d  etExitCode]..  }
09e0: 0d 0a 0d 0a 20 20 72 65 74 75 72 6e 20 2d 31 0d  ....  return -1.
09f0: 0a 7d 0d 0a 0c 0d 0a 73 65 74 20 61 72 67 63 20  .}.....set argc 
0a00: 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 76 5d 0d  [llength $argv].
0a10: 0a 0d 0a 69 66 20 7b 24 61 72 67 63 20 3e 3d 20  ...if {$argc >= 
0a20: 30 20 26 26 20 24 61 72 67 63 20 3c 3d 20 37 7d  0 && $argc <= 7}
0a30: 20 74 68 65 6e 20 7b 0d 0a 20 20 23 0d 0a 20 20   then {..  #..  
0a40: 23 20 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68  # NOTE: Setup th
0a50: 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 73  e default values
0a60: 20 66 6f 72 20 61 6c 6c 20 63 6f 6d 6d 61 6e 64   for all command
0a70: 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 73 2e 0d 0a   line options...
0a80: 20 20 23 0d 0a 20 20 61 72 72 61 79 20 73 65 74    #..  array set
0a90: 20 64 65 66 61 75 6c 74 20 7b 0d 0a 20 20 20 20   default {..    
0aa0: 20 20 20 20 20 20 20 20 79 65 61 72 20 32 30 30          year 200
0ab0: 38 0d 0a 20 20 20 20 20 20 20 20 70 6c 61 74 66  8..        platf
0ac0: 6f 72 6d 20 7b 50 6f 63 6b 65 74 20 50 43 20 32  orm {Pocket PC 2
0ad0: 30 30 33 20 28 41 52 4d 56 34 29 7d 0d 0a 20 20  003 (ARMV4)}..  
0ae0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 52   configuration R
0af0: 65 6c 65 61 73 65 0d 0a 20 20 20 20 20 20 20 20  elease..        
0b00: 20 63 75 6c 74 75 72 65 20 65 6e 2d 55 53 0d 0a   culture en-US..
0b10: 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 49 64        platformId
0b20: 20 33 63 34 31 63 35 30 33 2d 35 33 65 66 2d 34   3c41c503-53ef-4
0b30: 63 32 61 2d 38 64 64 34 2d 61 38 32 31 37 63 61  c2a-8dd4-a8217ca
0b40: 64 31 31 35 65 0d 0a 20 20 20 20 20 20 20 20 64  d115e..        d
0b50: 65 76 69 63 65 49 64 20 7b 7d 0d 0a 20 20 20 20  eviceId {}..    
0b60: 20 20 20 20 20 20 20 71 75 69 65 74 20 66 61 6c         quiet fal
0b70: 73 65 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a  se..  }....  #..
0b80: 20 20 23 20 4e 4f 54 45 3a 20 50 72 6f 63 65 73    # NOTE: Proces
0b90: 73 20 61 6c 6c 20 74 68 65 20 63 6f 6d 6d 61 6e  s all the comman
0ba0: 64 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 73 2e 20  d line options. 
0bb0: 20 49 66 20 61 20 63 6f 6d 6d 61 6e 64 20 6c 69   If a command li
0bc0: 6e 65 20 6f 70 74 69 6f 6e 0d 0a 20 20 23 20 20  ne option..  #  
0bd0: 20 20 20 20 20 69 73 20 6e 6f 74 20 70 72 65 73       is not pres
0be0: 65 6e 74 2c 20 75 73 65 20 74 68 65 20 64 65 66  ent, use the def
0bf0: 61 75 6c 74 20 76 61 6c 75 65 2e 0d 0a 20 20 23  ault value...  #
0c00: 0d 0a 20 20 73 65 74 20 6e 61 6d 65 73 20 5b 6c  ..  set names [l
0c10: 69 73 74 20 5c 0d 0a 20 20 20 20 20 20 79 65 61  ist \..      yea
0c20: 72 20 70 6c 61 74 66 6f 72 6d 20 63 6f 6e 66 69  r platform confi
0c30: 67 75 72 61 74 69 6f 6e 20 63 75 6c 74 75 72 65  guration culture
0c40: 20 70 6c 61 74 66 6f 72 6d 49 64 20 64 65 76 69   platformId devi
0c50: 63 65 49 64 20 71 75 69 65 74 5d 0d 0a 0d 0a 20  ceId quiet].... 
0c60: 20 66 6f 72 20 7b 73 65 74 20 69 6e 64 65 78 20   for {set index 
0c70: 30 7d 20 7b 24 69 6e 64 65 78 20 3c 20 5b 6c 6c  0} {$index < [ll
0c80: 65 6e 67 74 68 20 24 6e 61 6d 65 73 5d 7d 20 7b  ength $names]} {
0c90: 69 6e 63 72 20 69 6e 64 65 78 7d 20 7b 0d 0a 20  incr index} {.. 
0ca0: 20 20 20 73 65 74 20 6e 61 6d 65 20 5b 6c 69 6e     set name [lin
0cb0: 64 65 78 20 24 6e 61 6d 65 73 20 24 69 6e 64 65  dex $names $inde
0cc0: 78 5d 3b 20 73 65 74 20 76 61 6c 75 65 20 22 22  x]; set value ""
0cd0: 0d 0a 0d 0a 20 20 20 20 69 66 20 7b 24 61 72 67  ....    if {$arg
0ce0: 63 20 3e 20 24 69 6e 64 65 78 7d 20 74 68 65 6e  c > $index} then
0cf0: 20 7b 0d 0a 20 20 20 20 20 20 73 65 74 20 76 61   {..      set va
0d00: 6c 75 65 20 5b 73 74 72 69 6e 67 20 74 72 69 6d  lue [string trim
0d10: 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 76 20 24   [lindex $argv $
0d20: 69 6e 64 65 78 5d 5d 0d 0a 20 20 20 20 7d 0d 0a  index]]..    }..
0d30: 0d 0a 20 20 20 20 69 66 20 7b 5b 73 74 72 69 6e  ..    if {[strin
0d40: 67 20 6c 65 6e 67 74 68 20 24 76 61 6c 75 65 5d  g length $value]
0d50: 20 3e 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20   > 0} then {..  
0d60: 20 20 20 20 73 65 74 20 24 6e 61 6d 65 20 24 76      set $name $v
0d70: 61 6c 75 65 3b 20 73 65 74 20 64 65 66 61 75 6c  alue; set defaul
0d80: 74 56 61 6c 75 65 20 66 61 6c 73 65 0d 0a 20 20  tValue false..  
0d90: 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20    } else {..    
0da0: 20 20 73 65 74 20 24 6e 61 6d 65 20 24 64 65 66    set $name $def
0db0: 61 75 6c 74 28 24 6e 61 6d 65 29 3b 20 73 65 74  ault($name); set
0dc0: 20 64 65 66 61 75 6c 74 56 61 6c 75 65 20 74 72   defaultValue tr
0dd0: 75 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  ue..    }....   
0de0: 20 71 70 75 74 73 20 73 74 64 6f 75 74 20 5b 61   qputs stdout [a
0df0: 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20  ppendArgs \..   
0e00: 20 20 20 20 20 22 6e 61 6d 65 64 20 70 61 72 61       "named para
0e10: 6d 65 74 65 72 20 5c 22 22 20 24 6e 61 6d 65 20  meter \"" $name 
0e20: 22 5c 22 20 76 61 6c 75 65 20 69 73 20 6e 6f 77  "\" value is now
0e30: 20 5c 22 22 20 5b 73 65 74 20 24 6e 61 6d 65 5d   \"" [set $name]
0e40: 20 5c 22 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b   \" \..        [
0e50: 65 78 70 72 20 7b 24 64 65 66 61 75 6c 74 56 61  expr {$defaultVa
0e60: 6c 75 65 20 3f 20 22 20 28 64 65 66 61 75 6c 74  lue ? " (default
0e70: 29 22 20 3a 20 22 22 7d 5d 20 2e 5d 0d 0a 20 20  )" : ""}] .]..  
0e80: 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f  }....  #..  # NO
0e90: 54 45 3a 20 47 72 61 62 20 74 68 65 20 63 75 6c  TE: Grab the cul
0ea0: 74 75 72 65 20 69 6e 73 74 61 6e 63 65 20 62 61  ture instance ba
0eb0: 73 65 64 20 6f 6e 20 74 68 65 20 63 6f 6e 66 69  sed on the confi
0ec0: 67 75 72 65 64 20 63 75 6c 74 75 72 65 20 6e 61  gured culture na
0ed0: 6d 65 2e 0d 0a 20 20 23 0d 0a 20 20 73 65 74 20  me...  #..  set 
0ee0: 63 75 6c 74 75 72 65 49 6e 66 6f 20 5b 6f 62 6a  cultureInfo [obj
0ef0: 65 63 74 20 69 6e 76 6f 6b 65 20 2d 61 6c 69 61  ect invoke -alia
0f00: 73 20 53 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69  s System.Globali
0f10: 7a 61 74 69 6f 6e 2e 43 75 6c 74 75 72 65 49 6e  zation.CultureIn
0f20: 66 6f 20 5c 0d 0a 20 20 20 20 20 20 47 65 74 43  fo \..      GetC
0f30: 75 6c 74 75 72 65 49 6e 66 6f 20 24 63 75 6c 74  ultureInfo $cult
0f40: 75 72 65 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  ure]....  #..  #
0f50: 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20 74 68 65   NOTE: Build the
0f60: 20 6c 69 73 74 20 6f 66 20 2e 4e 45 54 20 43 6f   list of .NET Co
0f70: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20  mpact Framework 
0f80: 32 2e 30 20 70 61 63 6b 61 67 65 73 20 74 68 61  2.0 packages tha
0f90: 74 20 6e 65 65 64 20 74 6f 0d 0a 20 20 23 20 20  t need to..  #  
0fa0: 20 20 20 20 20 62 65 20 64 65 70 6c 6f 79 65 64       be deployed
0fb0: 20 74 6f 20 74 68 65 20 74 61 72 67 65 74 20 64   to the target d
0fc0: 65 76 69 63 65 2c 20 69 66 20 6e 65 63 65 73 73  evice, if necess
0fd0: 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  ary...  #..  if 
0fe0: 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 70  {![info exists p
0ff0: 61 63 6b 61 67 65 73 28 32 30 30 35 29 5d 7d 20  ackages(2005)]} 
1000: 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20  then {..    #.. 
1010: 20 20 20 23 20 4e 4f 54 45 3a 20 54 68 65 20 74     # NOTE: The t
1020: 68 72 65 65 20 6c 65 74 74 65 72 20 57 69 6e 64  hree letter Wind
1030: 6f 77 73 20 6c 61 6e 67 75 61 67 65 20 6e 61 6d  ows language nam
1040: 65 20 69 73 20 6e 65 65 64 65 64 20 77 68 65 6e  e is needed when
1050: 20 62 75 69 6c 64 69 6e 67 0d 0a 20 20 20 20 23   building..    #
1060: 20 20 20 20 20 20 20 74 68 65 20 64 65 66 61 75         the defau
1070: 6c 74 20 6c 69 73 74 20 6f 66 20 2e 4e 45 54 20  lt list of .NET 
1080: 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
1090: 6b 20 70 61 63 6b 61 67 65 73 20 62 65 63 61 75  k packages becau
10a0: 73 65 20 6f 6e 65 0d 0a 20 20 20 20 23 20 20 20  se one..    #   
10b0: 20 20 20 20 6f 66 20 74 68 65 6d 20 69 73 20 61      of them is a
10c0: 20 6c 6f 63 61 6c 69 7a 65 64 20 72 65 73 6f 75   localized resou
10d0: 72 63 65 20 70 61 63 6b 61 67 65 2e 0d 0a 20 20  rce package...  
10e0: 20 20 23 0d 0a 20 20 20 20 73 65 74 20 6c 61 6e    #..    set lan
10f0: 67 75 61 67 65 33 20 5b 73 74 72 69 6e 67 20 74  guage3 [string t
1100: 6f 75 70 70 65 72 20 5c 0d 0a 20 20 20 20 20 20  oupper \..      
1110: 20 20 5b 24 63 75 6c 74 75 72 65 49 6e 66 6f 20    [$cultureInfo 
1120: 54 68 72 65 65 4c 65 74 74 65 72 57 69 6e 64 6f  ThreeLetterWindo
1130: 77 73 4c 61 6e 67 75 61 67 65 4e 61 6d 65 5d 5d  wsLanguageName]]
1140: 0d 0a 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23  ....    #..    #
1150: 20 4e 4f 54 45 3a 20 54 68 65 20 64 65 66 61 75   NOTE: The defau
1160: 6c 74 20 6c 69 73 74 20 6f 66 20 2e 4e 45 54 20  lt list of .NET 
1170: 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72  Compact Framewor
1180: 6b 20 32 2e 30 20 70 61 63 6b 61 67 65 73 20 63  k 2.0 packages c
1190: 6f 6e 74 61 69 6e 73 0d 0a 20 20 20 20 23 20 20  ontains..    #  
11a0: 20 20 20 20 20 74 68 65 20 2e 4e 45 54 20 43 6f       the .NET Co
11b0: 6d 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20  mpact Framework 
11c0: 32 2e 30 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e  2.0 installation
11d0: 20 43 41 42 20 66 69 6c 65 20 66 6f 72 20 41 52   CAB file for AR
11e0: 4d 56 34 0d 0a 20 20 20 20 23 20 20 20 20 20 20  MV4..    #      
11f0: 20 6f 6e 20 74 68 65 20 50 6f 63 6b 65 74 20 50   on the Pocket P
1200: 43 20 61 6e 64 20 69 74 73 20 61 73 73 6f 63 69  C and its associ
1210: 61 74 65 64 20 72 65 73 6f 75 72 63 65 20 69 6e  ated resource in
1220: 73 74 61 6c 6c 61 74 69 6f 6e 20 43 41 42 0d 0a  stallation CAB..
1230: 20 20 20 20 23 20 20 20 20 20 20 20 66 69 6c 65      #       file
1240: 73 2e 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 73  s...    #..    s
1250: 65 74 20 70 61 63 6b 61 67 65 73 28 32 30 30 35  et packages(2005
1260: 29 20 5b 6c 69 73 74 20 5c 0d 0a 20 20 20 20 20  ) [list \..     
1270: 20 20 20 61 62 64 37 38 35 66 30 2d 63 64 61 37     abd785f0-cda7
1280: 2d 34 31 63 35 2d 38 33 37 35 2d 32 34 35 31 61  -41c5-8375-2451a
1290: 37 63 62 66 66 32 36 20 5c 0d 0a 20 20 20 20 20  7cbff26 \..     
12a0: 20 20 20 5c 5c 57 69 6e 64 6f 77 73 5c 5c 4e 45     \\Windows\\NE
12b0: 54 43 46 76 32 2e 70 70 63 2e 61 72 6d 76 34 2e  TCFv2.ppc.armv4.
12c0: 63 61 62 20 5c 0d 0a 20 20 20 20 20 20 20 20 63  cab \..        c
12d0: 30 63 63 66 34 38 65 2d 34 62 66 62 2d 34 64 38  0ccf48e-4bfb-4d8
12e0: 34 2d 38 32 37 63 2d 39 38 31 61 35 39 35 65 34  4-827c-981a595e4
12f0: 30 62 34 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  0b4 \..        [
1300: 61 70 70 65 6e 64 41 72 67 73 20 5c 5c 57 69 6e  appendArgs \\Win
1310: 64 6f 77 73 5c 5c 53 79 73 74 65 6d 5f 53 52 5f  dows\\System_SR_
1320: 20 24 6c 61 6e 67 75 61 67 65 33 20 2e 63 61 62   $language3 .cab
1330: 5d 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a  ]]..  }....  #..
1340: 20 20 23 20 4e 4f 54 45 3a 20 42 75 69 6c 64 20    # NOTE: Build 
1350: 74 68 65 20 6c 69 73 74 20 6f 66 20 2e 4e 45 54  the list of .NET
1360: 20 43 6f 6d 70 61 63 74 20 46 72 61 6d 65 77 6f   Compact Framewo
1370: 72 6b 20 33 2e 35 20 70 61 63 6b 61 67 65 73 20  rk 3.5 packages 
1380: 74 68 61 74 20 6e 65 65 64 20 74 6f 0d 0a 20 20  that need to..  
1390: 23 20 20 20 20 20 20 20 62 65 20 64 65 70 6c 6f  #       be deplo
13a0: 79 65 64 20 74 6f 20 74 68 65 20 74 61 72 67 65  yed to the targe
13b0: 74 20 64 65 76 69 63 65 2c 20 69 66 20 6e 65 63  t device, if nec
13c0: 65 73 73 61 72 79 2e 0d 0a 20 20 23 0d 0a 20 20  essary...  #..  
13d0: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74  if {![info exist
13e0: 73 20 70 61 63 6b 61 67 65 73 28 32 30 30 38 29  s packages(2008)
13f0: 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 23  ]} then {..    #
1400: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68  ..    # NOTE: Th
1410: 65 20 74 77 6f 20 6c 65 74 74 65 72 20 49 53 4f  e two letter ISO
1420: 20 6c 61 6e 67 75 61 67 65 20 6e 61 6d 65 20 69   language name i
1430: 73 20 6e 65 65 64 65 64 20 77 68 65 6e 20 62 75  s needed when bu
1440: 69 6c 64 69 6e 67 20 74 68 65 0d 0a 20 20 20 20  ilding the..    
1450: 23 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 20  #       default 
1460: 6c 69 73 74 20 6f 66 20 2e 4e 45 54 20 43 6f 6d  list of .NET Com
1470: 70 61 63 74 20 46 72 61 6d 65 77 6f 72 6b 20 70  pact Framework p
1480: 61 63 6b 61 67 65 73 20 62 65 63 61 75 73 65 20  ackages because 
1490: 6f 6e 65 20 6f 66 0d 0a 20 20 20 20 23 20 20 20  one of..    #   
14a0: 20 20 20 20 74 68 65 6d 20 69 73 20 61 20 6c 6f      them is a lo
14b0: 63 61 6c 69 7a 65 64 20 72 65 73 6f 75 72 63 65  calized resource
14c0: 20 70 61 63 6b 61 67 65 2e 0d 0a 20 20 20 20 23   package...    #
14d0: 0d 0a 20 20 20 20 73 65 74 20 6c 61 6e 67 75 61  ..    set langua
14e0: 67 65 32 20 5b 73 74 72 69 6e 67 20 74 6f 75 70  ge2 [string toup
14f0: 70 65 72 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  per \..        [
1500: 24 63 75 6c 74 75 72 65 49 6e 66 6f 20 54 77 6f  $cultureInfo Two
1510: 4c 65 74 74 65 72 49 53 4f 4c 61 6e 67 75 61 67  LetterISOLanguag
1520: 65 4e 61 6d 65 5d 5d 0d 0a 0d 0a 20 20 20 20 23  eName]]....    #
1530: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 54 68  ..    # NOTE: Th
1540: 65 20 64 65 66 61 75 6c 74 20 6c 69 73 74 20 6f  e default list o
1550: 66 20 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46  f .NET Compact F
1560: 72 61 6d 65 77 6f 72 6b 20 33 2e 35 20 70 61 63  ramework 3.5 pac
1570: 6b 61 67 65 73 20 63 6f 6e 74 61 69 6e 73 0d 0a  kages contains..
1580: 20 20 20 20 23 20 20 20 20 20 20 20 74 68 65 20      #       the 
1590: 2e 4e 45 54 20 43 6f 6d 70 61 63 74 20 46 72 61  .NET Compact Fra
15a0: 6d 65 77 6f 72 6b 20 33 2e 35 20 69 6e 73 74 61  mework 3.5 insta
15b0: 6c 6c 61 74 69 6f 6e 20 43 41 42 20 66 69 6c 65  llation CAB file
15c0: 20 66 6f 72 20 41 52 4d 56 34 0d 0a 20 20 20 20   for ARMV4..    
15d0: 23 20 20 20 20 20 20 20 6f 6e 20 74 68 65 20 50  #       on the P
15e0: 6f 63 6b 65 74 20 50 43 20 61 6e 64 20 69 74 73  ocket PC and its
15f0: 20 61 73 73 6f 63 69 61 74 65 64 20 72 65 73 6f   associated reso
1600: 75 72 63 65 20 69 6e 73 74 61 6c 6c 61 74 69 6f  urce installatio
1610: 6e 20 43 41 42 0d 0a 20 20 20 20 23 20 20 20 20  n CAB..    #    
1620: 20 20 20 66 69 6c 65 73 2e 0d 0a 20 20 20 20 23     files...    #
1630: 0d 0a 20 20 20 20 73 65 74 20 70 61 63 6b 61 67  ..    set packag
1640: 65 73 28 32 30 30 38 29 20 5b 6c 69 73 74 20 5c  es(2008) [list \
1650: 0d 0a 20 20 20 20 20 20 20 20 61 62 64 37 38 35  ..        abd785
1660: 66 30 2d 63 64 61 37 2d 34 31 63 35 2d 38 33 37  f0-cda7-41c5-837
1670: 35 2d 32 34 35 31 61 37 63 62 66 66 33 37 20 5c  5-2451a7cbff37 \
1680: 0d 0a 20 20 20 20 20 20 20 20 5c 5c 57 69 6e 64  ..        \\Wind
1690: 6f 77 73 5c 5c 4e 45 54 43 46 76 33 35 2e 70 70  ows\\NETCFv35.pp
16a0: 63 2e 61 72 6d 76 34 2e 63 61 62 20 5c 0d 0a 20  c.armv4.cab \.. 
16b0: 20 20 20 20 20 20 20 63 30 63 63 66 34 38 65 2d         c0ccf48e-
16c0: 34 62 66 62 2d 34 64 38 34 2d 38 32 37 63 2d 39  4bfb-4d84-827c-9
16d0: 38 31 61 35 39 35 65 34 30 63 35 20 5c 0d 0a 20  81a595e40c5 \.. 
16e0: 20 20 20 20 20 20 20 5b 61 70 70 65 6e 64 41 72         [appendAr
16f0: 67 73 20 5c 5c 57 69 6e 64 6f 77 73 5c 5c 4e 45  gs \\Windows\\NE
1700: 54 43 46 76 33 35 2e 4d 65 73 73 61 67 65 73 2e  TCFv35.Messages.
1710: 20 24 6c 61 6e 67 75 61 67 65 32 20 2e 63 61 62   $language2 .cab
1720: 5d 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a  ]]..  }....  #..
1730: 20 20 23 20 4e 4f 54 45 3a 20 53 61 76 65 20 74    # NOTE: Save t
1740: 68 65 20 70 61 74 68 20 77 68 65 72 65 20 74 68  he path where th
1750: 69 73 20 73 63 72 69 70 74 20 69 73 20 72 75 6e  is script is run
1760: 6e 69 6e 67 20 66 72 6f 6d 2e 0d 0a 20 20 23 0d  ning from...  #.
1770: 0a 20 20 73 65 74 20 70 61 74 68 20 5b 66 69 6c  .  set path [fil
1780: 65 20 64 69 72 6e 61 6d 65 20 5b 69 6e 66 6f 20  e dirname [info 
1790: 73 63 72 69 70 74 5d 5d 0d 0a 0d 0a 20 20 23 0d  script]]....  #.
17a0: 0a 20 20 23 20 4e 4f 54 45 3a 20 54 68 65 20 62  .  # NOTE: The b
17b0: 61 73 65 20 70 61 74 68 20 73 68 6f 75 6c 64 20  ase path should 
17c0: 62 65 20 74 68 65 20 70 72 6f 6a 65 63 74 20 72  be the project r
17d0: 6f 6f 74 20 64 69 72 65 63 74 6f 72 79 2c 20 77  oot directory, w
17e0: 68 69 63 68 20 73 68 6f 75 6c 64 0d 0a 20 20 23  hich should..  #
17f0: 20 20 20 20 20 20 20 62 65 20 6f 6e 65 20 6c 65         be one le
1800: 76 65 6c 20 61 62 6f 76 65 20 74 68 65 20 6f 6e  vel above the on
1810: 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 69  e containing thi
1820: 73 20 73 63 72 69 70 74 2e 0d 0a 20 20 23 0d 0a  s script...  #..
1830: 20 20 73 65 74 20 62 61 73 65 5f 70 61 74 68 20    set base_path 
1840: 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 70  [file dirname $p
1850: 61 74 68 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  ath]....  #..  #
1860: 20 4e 4f 54 45 3a 20 54 68 65 20 6d 61 6e 61 67   NOTE: The manag
1870: 65 64 20 62 69 6e 61 72 69 65 73 20 74 6f 20 62  ed binaries to b
1880: 65 20 64 65 70 6c 6f 79 65 64 20 74 6f 20 74 68  e deployed to th
1890: 65 20 74 61 72 67 65 74 20 64 65 76 69 63 65 20  e target device 
18a0: 73 68 6f 75 6c 64 0d 0a 20 20 23 20 20 20 20 20  should..  #     
18b0: 20 20 62 65 20 6c 6f 63 61 74 65 64 20 69 6e 20    be located in 
18c0: 74 68 65 20 22 3c 62 61 73 65 3e 5c 62 69 6e 5c  the "<base>\bin\
18d0: 3c 79 65 61 72 3e 5c 3c 63 6f 6e 66 69 67 75 72  <year>\<configur
18e0: 61 74 69 6f 6e 3e 43 6f 6d 70 61 63 74 5c 62 69  ation>Compact\bi
18f0: 6e 22 0d 0a 20 20 23 20 20 20 20 20 20 20 64 69  n"..  #       di
1900: 72 65 63 74 6f 72 79 2e 0d 0a 20 20 23 0d 0a 20  rectory...  #.. 
1910: 20 73 65 74 20 6d 61 6e 61 67 65 64 5f 64 69 72   set managed_dir
1920: 65 63 74 6f 72 79 20 5b 66 69 6c 65 20 6a 6f 69  ectory [file joi
1930: 6e 20 5c 0d 0a 20 20 20 20 20 20 24 62 61 73 65  n \..      $base
1940: 5f 70 61 74 68 20 62 69 6e 20 24 79 65 61 72 20  _path bin $year 
1950: 5b 61 70 70 65 6e 64 41 72 67 73 20 24 63 6f 6e  [appendArgs $con
1960: 66 69 67 75 72 61 74 69 6f 6e 20 43 6f 6d 70 61  figuration Compa
1970: 63 74 5d 20 62 69 6e 5d 0d 0a 0d 0a 20 20 23 0d  ct] bin]....  #.
1980: 0a 20 20 23 20 4e 4f 54 45 3a 20 54 68 65 20 6e  .  # NOTE: The n
1990: 61 74 69 76 65 20 62 69 6e 61 72 69 65 73 20 74  ative binaries t
19a0: 6f 20 62 65 20 64 65 70 6c 6f 79 65 64 20 74 6f  o be deployed to
19b0: 20 74 68 65 20 74 61 72 67 65 74 20 64 65 76 69   the target devi
19c0: 63 65 20 73 68 6f 75 6c 64 0d 0a 20 20 23 20 20  ce should..  #  
19d0: 20 20 20 20 20 62 65 20 6c 6f 63 61 74 65 64 20       be located 
19e0: 69 6e 20 74 68 65 20 22 3c 62 61 73 65 3e 5c 62  in the "<base>\b
19f0: 69 6e 5c 3c 79 65 61 72 3e 5c 3c 70 6c 61 74 66  in\<year>\<platf
1a00: 6f 72 6d 3e 5c 3c 63 6f 6e 66 69 67 75 72 61 74  orm>\<configurat
1a10: 69 6f 6e 3e 22 0d 0a 20 20 23 20 20 20 20 20 20  ion>"..  #      
1a20: 20 64 69 72 65 63 74 6f 72 79 2e 0d 0a 20 20 23   directory...  #
1a30: 0d 0a 20 20 73 65 74 20 6e 61 74 69 76 65 5f 64  ..  set native_d
1a40: 69 72 65 63 74 6f 72 79 20 5b 66 69 6c 65 20 6a  irectory [file j
1a50: 6f 69 6e 20 5c 0d 0a 20 20 20 20 20 20 24 62 61  oin \..      $ba
1a60: 73 65 5f 70 61 74 68 20 62 69 6e 20 24 79 65 61  se_path bin $yea
1a70: 72 20 24 70 6c 61 74 66 6f 72 6d 20 24 63 6f 6e  r $platform $con
1a80: 66 69 67 75 72 61 74 69 6f 6e 5d 0d 0a 0d 0a 20  figuration].... 
1a90: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 42 75   #..  # NOTE: Bu
1aa0: 69 6c 64 20 74 68 65 20 6c 69 73 74 20 6f 66 20  ild the list of 
1ab0: 61 6c 6c 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  all application 
1ac0: 66 69 6c 65 73 20 74 68 61 74 20 6e 65 65 64 20  files that need 
1ad0: 74 6f 20 62 65 20 64 65 70 6c 6f 79 65 64 20 74  to be deployed t
1ae0: 6f 0d 0a 20 20 23 20 20 20 20 20 20 20 74 68 65  o..  #       the
1af0: 20 74 61 72 67 65 74 20 64 65 76 69 63 65 2c 20   target device, 
1b00: 69 6e 63 6c 75 64 69 6e 67 20 61 6c 6c 20 74 68  including all th
1b10: 65 20 6e 61 74 69 76 65 20 61 6e 64 20 6d 61 6e  e native and man
1b20: 61 67 65 64 20 62 69 6e 61 72 69 65 73 2e 0d 0a  aged binaries...
1b30: 20 20 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66    #..  if {![inf
1b40: 6f 20 65 78 69 73 74 73 20 66 69 6c 65 4e 61 6d  o exists fileNam
1b50: 65 73 5d 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  es]} then {..   
1b60: 20 23 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20   #..    # NOTE: 
1b70: 47 72 61 62 20 74 68 65 20 61 73 73 65 6d 62 6c  Grab the assembl
1b80: 79 20 6e 61 6d 65 20 69 6e 73 74 61 6e 63 65 20  y name instance 
1b90: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 72 69  based on the pri
1ba0: 6d 61 72 79 20 6d 61 6e 61 67 65 64 0d 0a 20 20  mary managed..  
1bb0: 20 20 23 20 20 20 20 20 20 20 61 73 73 65 6d 62    #       assemb
1bc0: 6c 79 20 66 69 6c 65 20 6e 61 6d 65 2e 20 20 54  ly file name.  T
1bd0: 68 69 73 20 69 73 20 6e 65 65 64 65 64 20 62 65  his is needed be
1be0: 63 61 75 73 65 20 74 68 65 20 62 75 69 6c 64 20  cause the build 
1bf0: 70 6f 72 74 69 6f 6e 20 6f 66 0d 0a 20 20 20 20  portion of..    
1c00: 23 20 20 20 20 20 20 20 74 68 65 20 61 73 73 65  #       the asse
1c10: 6d 62 6c 79 20 76 65 72 73 69 6f 6e 20 69 73 20  mbly version is 
1c20: 75 73 65 64 20 77 68 65 6e 20 62 75 69 6c 64 69  used when buildi
1c30: 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c  ng the default l
1c40: 69 73 74 20 6f 66 0d 0a 20 20 20 20 23 20 20 20  ist of..    #   
1c50: 20 20 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20      application 
1c60: 66 69 6c 65 73 20 74 6f 20 62 65 20 64 65 70 6c  files to be depl
1c70: 6f 79 65 64 20 74 6f 20 74 68 65 20 74 61 72 67  oyed to the targ
1c80: 65 74 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20  et device...    
1c90: 23 0d 0a 20 20 20 20 73 65 74 20 61 73 73 65 6d  #..    set assem
1ca0: 62 6c 79 4e 61 6d 65 20 5b 6f 62 6a 65 63 74 20  blyName [object 
1cb0: 69 6e 76 6f 6b 65 20 2d 61 6c 69 61 73 20 53 79  invoke -alias Sy
1cc0: 73 74 65 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 2e  stem.Reflection.
1cd0: 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 5c 0d 0a  AssemblyName \..
1ce0: 20 20 20 20 20 20 20 20 47 65 74 41 73 73 65 6d          GetAssem
1cf0: 62 6c 79 4e 61 6d 65 20 5b 66 69 6c 65 20 6a 6f  blyName [file jo
1d00: 69 6e 20 24 6d 61 6e 61 67 65 64 5f 64 69 72 65  in $managed_dire
1d10: 63 74 6f 72 79 20 53 79 73 74 65 6d 2e 44 61 74  ctory System.Dat
1d20: 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 5d 5d 0d 0a  a.SQLite.dll]]..
1d30: 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e  ..    #..    # N
1d40: 4f 54 45 3a 20 54 68 65 20 64 65 66 61 75 6c 74  OTE: The default
1d50: 20 6c 69 73 74 20 6f 66 20 61 70 70 6c 69 63 61   list of applica
1d60: 74 69 6f 6e 20 66 69 6c 65 73 20 69 6e 63 6c 75  tion files inclu
1d70: 64 65 73 20 74 68 65 20 74 65 73 74 20 61 70 70  des the test app
1d80: 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 20 20 23 20  lication..    # 
1d90: 20 20 20 20 20 20 69 74 73 65 6c 66 2c 20 74 68        itself, th
1da0: 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  e System.Data.SQ
1db0: 4c 69 74 65 20 6d 61 6e 61 67 65 64 20 61 73 73  Lite managed ass
1dc0: 65 6d 62 6c 79 2c 20 74 68 65 20 53 51 4c 69 74  embly, the SQLit
1dd0: 65 20 69 6e 74 65 72 6f 70 0d 0a 20 20 20 20 23  e interop..    #
1de0: 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 2c         assembly,
1df0: 20 61 6e 64 20 74 68 65 20 74 65 73 74 20 61 70   and the test ap
1e00: 70 6c 69 63 61 74 69 6f 6e 20 63 6f 6e 66 69 67  plication config
1e10: 75 72 61 74 69 6f 6e 20 66 69 6c 65 2e 0d 0a 20  uration file... 
1e20: 20 20 20 23 0d 0a 20 20 20 20 73 65 74 20 66 69     #..    set fi
1e30: 6c 65 4e 61 6d 65 73 20 5b 6c 69 73 74 20 5b 66  leNames [list [f
1e40: 69 6c 65 20 6a 6f 69 6e 20 24 6d 61 6e 61 67 65  ile join $manage
1e50: 64 5f 64 69 72 65 63 74 6f 72 79 20 74 65 73 74  d_directory test
1e60: 63 65 2e 65 78 65 5d 20 5b 66 69 6c 65 20 5c 0d  ce.exe] [file \.
1e70: 0a 20 20 20 20 20 20 20 20 6a 6f 69 6e 20 24 6d  .        join $m
1e80: 61 6e 61 67 65 64 5f 64 69 72 65 63 74 6f 72 79  anaged_directory
1e90: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
1ea0: 69 74 65 2e 64 6c 6c 5d 20 5b 66 69 6c 65 20 6a  ite.dll] [file j
1eb0: 6f 69 6e 20 5c 0d 0a 20 20 20 20 20 20 20 20 24  oin \..        $
1ec0: 6e 61 74 69 76 65 5f 64 69 72 65 63 74 6f 72 79  native_directory
1ed0: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 53 51 4c   [appendArgs SQL
1ee0: 69 74 65 2e 49 6e 74 65 72 6f 70 2e 20 5b 66 6f  ite.Interop. [fo
1ef0: 72 6d 61 74 20 25 30 33 64 20 5c 0d 0a 20 20 20  rmat %03d \..   
1f00: 20 20 20 20 20 5b 24 61 73 73 65 6d 62 6c 79 4e       [$assemblyN
1f10: 61 6d 65 20 56 65 72 73 69 6f 6e 2e 42 75 69 6c  ame Version.Buil
1f20: 64 5d 5d 20 2e 64 6c 6c 5d 5d 20 5b 66 69 6c 65  d]] .dll]] [file
1f30: 20 6a 6f 69 6e 20 24 6d 61 6e 61 67 65 64 5f 64   join $managed_d
1f40: 69 72 65 63 74 6f 72 79 20 5c 0d 0a 20 20 20 20  irectory \..    
1f50: 20 20 20 20 74 65 73 74 2e 63 66 67 5d 5d 0d 0a      test.cfg]]..
1f60: 20 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20    }....  #..  # 
1f70: 4e 4f 54 45 3a 20 53 65 74 75 70 20 74 68 65 20  NOTE: Setup the 
1f80: 64 69 72 65 63 74 6f 72 79 20 6f 6e 20 74 68 65  directory on the
1f90: 20 74 61 72 67 65 74 20 64 65 76 69 63 65 20 77   target device w
1fa0: 68 65 72 65 20 74 68 65 20 61 70 70 6c 69 63 61  here the applica
1fb0: 74 69 6f 6e 20 66 69 6c 65 73 0d 0a 20 20 23 20  tion files..  # 
1fc0: 20 20 20 20 20 20 73 68 6f 75 6c 64 20 62 65 20        should be 
1fd0: 64 65 70 6c 6f 79 65 64 20 74 6f 2e 0d 0a 20 20  deployed to...  
1fe0: 23 0d 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  #..  if {![info 
1ff0: 65 78 69 73 74 73 20 64 65 76 69 63 65 5f 64 69  exists device_di
2000: 72 65 63 74 6f 72 79 5d 7d 20 74 68 65 6e 20 7b  rectory]} then {
2010: 0d 0a 20 20 20 20 73 65 74 20 64 65 76 69 63 65  ..    set device
2020: 5f 64 69 72 65 63 74 6f 72 79 20 22 5c 5c 50 72  _directory "\\Pr
2030: 6f 67 72 61 6d 20 46 69 6c 65 73 5c 5c 74 65 73  ogram Files\\tes
2040: 74 63 65 5c 5c 22 0d 0a 20 20 7d 0d 0a 0d 0a 20  tce\\"..  }.... 
2050: 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 4c 6f   #..  # NOTE: Lo
2060: 61 64 20 74 68 65 20 6d 61 6e 61 67 65 64 20 61  ad the managed a
2070: 73 73 65 6d 62 6c 79 20 74 68 61 74 20 61 6c 6c  ssembly that all
2080: 6f 77 73 20 75 73 20 74 6f 20 63 6f 6d 6d 75 6e  ows us to commun
2090: 69 63 61 74 65 20 77 69 74 68 20 74 68 65 0d 0a  icate with the..
20a0: 20 20 23 20 20 20 20 20 20 20 74 61 72 67 65 74    #       target
20b0: 20 64 65 76 69 63 65 2e 20 20 49 66 20 74 68 69   device.  If thi
20c0: 73 20 66 61 69 6c 73 2c 20 74 68 65 20 6e 65 63  s fails, the nec
20d0: 65 73 73 61 72 79 20 53 44 4b 20 63 6f 6d 70 6f  essary SDK compo
20e0: 6e 65 6e 74 73 20 61 72 65 0d 0a 20 20 23 20 20  nents are..  #  
20f0: 20 20 20 20 20 70 72 6f 62 61 62 6c 79 20 6e 6f       probably no
2100: 74 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 74  t available on t
2110: 68 69 73 20 73 79 73 74 65 6d 2e 0d 0a 20 20 23  his system...  #
2120: 0d 0a 20 20 6f 62 6a 65 63 74 20 6c 6f 61 64 20  ..  object load 
2130: 4d 69 63 72 6f 73 6f 66 74 2e 53 6d 61 72 74 64  Microsoft.Smartd
2140: 65 76 69 63 65 2e 43 6f 6e 6e 65 63 74 69 76 69  evice.Connectivi
2150: 74 79 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e  ty....  #..  # N
2160: 4f 54 45 3a 20 4c 6f 6f 6b 75 70 20 74 68 65 20  OTE: Lookup the 
2170: 6e 65 63 65 73 73 61 72 79 20 64 65 76 69 63 65  necessary device
2180: 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 70 6c   based on the pl
2190: 61 74 66 6f 72 6d 20 61 6e 64 20 64 65 76 69 63  atform and devic
21a0: 65 20 49 64 73 2e 0d 0a 20 20 23 0d 0a 20 20 73  e Ids...  #..  s
21b0: 65 74 20 64 65 76 69 63 65 20 5b 67 65 74 44 65  et device [getDe
21c0: 76 69 63 65 20 24 63 75 6c 74 75 72 65 49 6e 66  vice $cultureInf
21d0: 6f 20 24 70 6c 61 74 66 6f 72 6d 49 64 20 24 64  o $platformId $d
21e0: 65 76 69 63 65 49 64 5d 0d 0a 0d 0a 20 20 23 0d  eviceId]....  #.
21f0: 0a 20 20 23 20 4e 4f 54 45 3a 20 41 74 74 65 6d  .  # NOTE: Attem
2200: 70 74 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f  pt to connect to
2210: 20 74 68 65 20 74 61 72 67 65 74 20 64 65 76 69   the target devi
2220: 63 65 2c 20 77 68 69 63 68 20 6d 61 79 20 62 65  ce, which may be
2230: 20 61 6e 20 65 6d 75 6c 61 74 6f 72 2e 0d 0a 20   an emulator... 
2240: 20 23 20 20 20 20 20 20 20 42 79 20 64 65 66 61   #       By defa
2250: 75 6c 74 2c 20 77 65 20 61 74 74 65 6d 70 74 20  ult, we attempt 
2260: 74 6f 20 63 6f 6e 6e 65 63 74 20 74 6f 20 74 68  to connect to th
2270: 65 20 22 50 6f 63 6b 65 74 20 50 43 20 32 30 30  e "Pocket PC 200
2280: 33 20 53 45 20 45 6d 75 6c 61 74 6f 72 22 0d 0a  3 SE Emulator"..
2290: 20 20 23 20 20 20 20 20 20 20 64 65 76 69 63 65    #       device
22a0: 20 6f 66 20 74 68 65 20 22 50 6f 63 6b 65 74 20   of the "Pocket 
22b0: 50 43 20 32 30 30 33 22 20 70 6c 61 74 66 6f 72  PC 2003" platfor
22c0: 6d 20 28 45 6e 67 6c 69 73 68 29 2e 20 20 49 66  m (English).  If
22d0: 20 74 68 69 73 20 66 61 69 6c 73 2c 0d 0a 20 20   this fails,..  
22e0: 23 20 20 20 20 20 20 20 74 68 65 20 74 61 72 67  #       the targ
22f0: 65 74 20 64 65 76 69 63 65 20 69 73 20 70 72 6f  et device is pro
2300: 62 61 62 6c 79 20 75 6e 61 76 61 69 6c 61 62 6c  bably unavailabl
2310: 65 2c 20 65 69 74 68 65 72 20 62 65 63 61 75 73  e, either becaus
2320: 65 20 69 74 20 69 73 20 6e 6f 74 0d 0a 20 20 23  e it is not..  #
2330: 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 65 64         connected
2340: 20 6f 72 20 73 6f 6d 65 20 53 44 4b 20 63 6f 6d   or some SDK com
2350: 70 6f 6e 65 6e 74 73 20 61 72 65 20 6d 69 73 73  ponents are miss
2360: 69 6e 67 2e 0d 0a 20 20 23 0d 0a 20 20 24 64 65  ing...  #..  $de
2370: 76 69 63 65 20 43 6f 6e 6e 65 63 74 0d 0a 0d 0a  vice Connect....
2380: 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 47    #..  # NOTE: G
2390: 72 61 62 20 74 68 65 20 66 69 6c 65 20 64 65 70  rab the file dep
23a0: 6c 6f 79 65 72 20 69 6e 73 74 61 6e 63 65 20 66  loyer instance f
23b0: 6f 72 20 74 68 65 20 74 61 72 67 65 74 20 64 65  or the target de
23c0: 76 69 63 65 2e 20 20 54 68 69 73 20 77 69 6c 6c  vice.  This will
23d0: 0d 0a 20 20 23 20 20 20 20 20 20 20 62 65 20 75  ..  #       be u
23e0: 73 65 64 20 74 6f 20 64 6f 77 6e 6c 6f 61 64 20  sed to download 
23f0: 70 61 63 6b 61 67 65 73 20 61 6e 64 20 73 65 6e  packages and sen
2400: 64 20 66 69 6c 65 73 20 74 6f 20 74 68 65 20 74  d files to the t
2410: 61 72 67 65 74 20 64 65 76 69 63 65 2e 0d 0a 20  arget device... 
2420: 20 23 0d 0a 20 20 73 65 74 20 66 69 6c 65 44 65   #..  set fileDe
2430: 70 6c 6f 79 65 72 20 5b 24 64 65 76 69 63 65 20  ployer [$device 
2440: 2d 61 6c 69 61 73 20 47 65 74 46 69 6c 65 44 65  -alias GetFileDe
2450: 70 6c 6f 79 65 72 5d 0d 0a 0d 0a 20 20 23 0d 0a  ployer]....  #..
2460: 20 20 23 20 4e 4f 54 45 3a 20 49 66 20 74 68 65    # NOTE: If the
2470: 20 6c 69 73 74 20 6f 66 20 70 61 63 6b 61 67 65   list of package
2480: 73 20 72 65 6c 61 74 65 64 20 74 6f 20 74 68 65  s related to the
2490: 20 63 6f 6e 66 69 67 75 72 65 64 20 62 75 69 6c   configured buil
24a0: 64 20 79 65 61 72 20 64 6f 20 6e 6f 74 0d 0a 20  d year do not.. 
24b0: 20 23 20 20 20 20 20 20 20 65 78 69 73 74 2c 20   #       exist, 
24c0: 73 6b 69 70 20 74 68 69 73 20 73 74 65 70 2e 0d  skip this step..
24d0: 0a 20 20 23 0d 0a 20 20 69 66 20 7b 5b 69 6e 66  .  #..  if {[inf
24e0: 6f 20 65 78 69 73 74 73 20 70 61 63 6b 61 67 65  o exists package
24f0: 73 28 24 79 65 61 72 29 5d 7d 20 74 68 65 6e 20  s($year)]} then 
2500: 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20  {..    #..    # 
2510: 4e 4f 54 45 3a 20 50 72 6f 63 65 73 73 20 65 61  NOTE: Process ea
2520: 63 68 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20  ch entry in the 
2530: 6c 69 73 74 20 6f 66 20 70 61 63 6b 61 67 65 73  list of packages
2540: 20 74 6f 20 62 65 20 64 6f 77 6e 6c 6f 61 64 65   to be downloade
2550: 64 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 23 20  d to the..    # 
2560: 20 20 20 20 20 20 74 61 72 67 65 74 20 64 65 76        target dev
2570: 69 63 65 2e 20 20 54 68 65 20 70 61 63 6b 61 67  ice.  The packag
2580: 65 20 6c 69 73 74 20 6d 75 73 74 20 63 6f 6e 74  e list must cont
2590: 61 69 6e 20 74 68 65 20 70 61 63 6b 61 67 65 20  ain the package 
25a0: 49 64 20 61 6e 64 0d 0a 20 20 20 20 23 20 20 20  Id and..    #   
25b0: 20 20 20 20 74 68 65 20 66 69 6c 65 20 6e 61 6d      the file nam
25c0: 65 20 28 72 65 6c 61 74 69 76 65 20 74 6f 20 74  e (relative to t
25d0: 68 65 20 74 61 72 67 65 74 20 64 65 76 69 63 65  he target device
25e0: 29 2c 20 69 6e 20 74 68 61 74 20 6f 72 64 65 72  ), in that order
25f0: 2c 20 66 6f 72 0d 0a 20 20 20 20 23 20 20 20 20  , for..    #    
2600: 20 20 20 65 61 63 68 20 70 61 63 6b 61 67 65 20     each package 
2610: 74 6f 20 62 65 20 64 6f 77 6e 6c 6f 61 64 65 64  to be downloaded
2620: 20 74 6f 20 74 68 65 20 74 61 72 67 65 74 20 64   to the target d
2630: 65 76 69 63 65 2e 0d 0a 20 20 20 20 23 0d 0a 20  evice...    #.. 
2640: 20 20 20 66 6f 72 65 61 63 68 20 7b 70 61 63 6b     foreach {pack
2650: 61 67 65 49 64 20 70 61 63 6b 61 67 65 46 69 6c  ageId packageFil
2660: 65 4e 61 6d 65 7d 20 24 70 61 63 6b 61 67 65 73  eName} $packages
2670: 28 24 79 65 61 72 29 20 7b 0d 0a 20 20 20 20 20  ($year) {..     
2680: 20 71 70 75 74 73 20 73 74 64 6f 75 74 20 5b 61   qputs stdout [a
2690: 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20 20  ppendArgs \..   
26a0: 20 20 20 20 20 20 20 22 64 6f 77 6e 6c 6f 61 64         "download
26b0: 69 6e 67 20 70 61 63 6b 61 67 65 20 5c 22 22 20  ing package \"" 
26c0: 24 70 61 63 6b 61 67 65 49 64 20 22 5c 22 20 74  $packageId "\" t
26d0: 6f 20 64 65 76 69 63 65 2e 2e 2e 22 5d 0d 0a 0d  o device..."]...
26e0: 0a 20 20 20 20 20 20 24 66 69 6c 65 44 65 70 6c  .      $fileDepl
26f0: 6f 79 65 72 20 44 6f 77 6e 6c 6f 61 64 50 61 63  oyer DownloadPac
2700: 6b 61 67 65 20 5b 6f 62 6a 65 63 74 20 63 72 65  kage [object cre
2710: 61 74 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 20  ate \..         
2720: 20 4d 69 63 72 6f 73 6f 66 74 2e 53 6d 61 72 74   Microsoft.Smart
2730: 44 65 76 69 63 65 2e 43 6f 6e 6e 65 63 74 69 76  Device.Connectiv
2740: 69 74 79 2e 4f 62 6a 65 63 74 49 64 20 24 70 61  ity.ObjectId $pa
2750: 63 6b 61 67 65 49 64 5d 0d 0a 0d 0a 20 20 20 20  ckageId]....    
2760: 20 20 71 70 75 74 73 20 73 74 64 6f 75 74 20 5b    qputs stdout [
2770: 61 70 70 65 6e 64 41 72 67 73 20 5c 0d 0a 20 20  appendArgs \..  
2780: 20 20 20 20 20 20 20 20 22 69 6e 73 74 61 6c 6c          "install
2790: 69 6e 67 20 70 61 63 6b 61 67 65 20 66 69 6c 65  ing package file
27a0: 20 5c 22 22 20 24 70 61 63 6b 61 67 65 46 69 6c   \"" $packageFil
27b0: 65 4e 61 6d 65 20 22 5c 22 20 6f 6e 20 64 65 76  eName "\" on dev
27c0: 69 63 65 2e 2e 2e 22 5d 0d 0a 0d 0a 20 20 20 20  ice..."]....    
27d0: 20 20 73 74 61 72 74 52 65 6d 6f 74 65 50 72 6f    startRemotePro
27e0: 63 65 73 73 20 24 64 65 76 69 63 65 20 77 63 65  cess $device wce
27f0: 6c 6f 61 64 2e 65 78 65 20 5b 61 70 70 65 6e 64  load.exe [append
2800: 41 72 67 73 20 22 2f 6e 6f 75 69 20 22 20 5c 0d  Args "/noui " \.
2810: 0a 20 20 20 20 20 20 20 20 20 20 24 70 61 63 6b  .          $pack
2820: 61 67 65 46 69 6c 65 4e 61 6d 65 5d 0d 0a 20 20  ageFileName]..  
2830: 20 20 7d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 23 0d    }..  }....  #.
2840: 0a 20 20 23 20 4e 4f 54 45 3a 20 50 72 6f 63 65  .  # NOTE: Proce
2850: 73 73 20 65 61 63 68 20 61 70 70 6c 69 63 61 74  ss each applicat
2860: 69 6f 6e 20 66 69 6c 65 20 74 6f 20 62 65 20 73  ion file to be s
2870: 65 6e 74 20 74 6f 20 74 68 65 20 74 61 72 67 65  ent to the targe
2880: 74 20 64 65 76 69 63 65 2e 0d 0a 20 20 23 0d 0a  t device...  #..
2890: 20 20 66 6f 72 65 61 63 68 20 66 69 6c 65 4e 61    foreach fileNa
28a0: 6d 65 20 24 66 69 6c 65 4e 61 6d 65 73 20 7b 0d  me $fileNames {.
28b0: 0a 20 20 20 20 71 70 75 74 73 20 73 74 64 6f 75  .    qputs stdou
28c0: 74 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 0d  t [appendArgs \.
28d0: 0a 20 20 20 20 20 20 20 20 22 73 65 6e 64 69 6e  .        "sendin
28e0: 67 20 66 69 6c 65 20 5c 22 22 20 24 66 69 6c 65  g file \"" $file
28f0: 4e 61 6d 65 20 22 5c 22 20 74 6f 20 64 65 76 69  Name "\" to devi
2900: 63 65 2e 2e 2e 22 5d 0d 0a 0d 0a 20 20 20 20 23  ce..."]....    #
2910: 0d 0a 20 20 20 20 23 20 4e 4f 54 45 3a 20 41 6c  ..    # NOTE: Al
2920: 6c 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  l the applicatio
2930: 6e 20 66 69 6c 65 73 20 61 72 65 20 73 65 6e 74  n files are sent
2940: 20 74 6f 20 74 68 65 20 73 61 6d 65 20 64 69 72   to the same dir
2950: 65 63 74 6f 72 79 20 6f 6e 20 74 68 65 0d 0a 20  ectory on the.. 
2960: 20 20 20 23 20 20 20 20 20 20 20 74 61 72 67 65     #       targe
2970: 74 20 64 65 76 69 63 65 20 61 6e 64 20 74 68 65  t device and the
2980: 20 53 65 6e 64 46 69 6c 65 20 6d 65 74 68 6f 64   SendFile method
2990: 20 72 65 71 75 69 72 65 73 20 61 20 66 75 6c 6c   requires a full
29a0: 79 20 71 75 61 6c 69 66 69 65 64 0d 0a 20 20 20  y qualified..   
29b0: 20 23 20 20 20 20 20 20 20 66 69 6c 65 20 6e 61   #       file na
29c0: 6d 65 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 67  me; therefore, g
29d0: 72 61 62 20 74 68 65 20 66 69 6c 65 20 6e 61 6d  rab the file nam
29e0: 65 20 6f 6e 6c 79 20 66 72 6f 6d 20 74 68 65 20  e only from the 
29f0: 73 6f 75 72 63 65 20 66 69 6c 65 0d 0a 20 20 20  source file..   
2a00: 20 23 20 20 20 20 20 20 20 6e 61 6d 65 20 61 6e   #       name an
2a10: 64 20 61 70 70 65 6e 64 20 74 68 61 74 20 74 6f  d append that to
2a20: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 6e   the directory n
2a30: 61 6d 65 20 6f 6e 20 74 68 65 20 74 61 72 67 65  ame on the targe
2a40: 74 20 64 65 76 69 63 65 2e 0d 0a 20 20 20 20 23  t device...    #
2a50: 20 20 20 20 20 20 20 55 73 69 6e 67 20 5b 66 69         Using [fi
2a60: 6c 65 20 6a 6f 69 6e 5d 20 61 6e 64 2f 6f 72 20  le join] and/or 
2a70: 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 5d  [file normalize]
2a80: 20 73 68 6f 75 6c 64 20 62 65 20 61 76 6f 69 64   should be avoid
2a90: 65 64 20 68 65 72 65 0d 0a 20 20 20 20 23 20 20  ed here..    #  
2aa0: 20 20 20 20 20 62 65 63 61 75 73 65 20 74 68 65       because the
2ab0: 20 64 69 72 65 63 74 6f 72 79 20 6e 61 6d 65 20   directory name 
2ac0: 6f 6e 20 74 68 65 20 74 61 72 67 65 74 20 64 65  on the target de
2ad0: 76 69 63 65 20 69 73 20 6e 6f 74 20 6e 65 63 65  vice is not nece
2ae0: 73 73 61 72 69 6c 79 0d 0a 20 20 20 20 23 20 20  ssarily..    #  
2af0: 20 20 20 20 20 76 61 6c 69 64 20 61 20 66 69 6c       valid a fil
2b00: 65 20 6e 61 6d 65 20 6f 6e 20 74 68 69 73 20 73  e name on this s
2b10: 79 73 74 65 6d 20 61 6e 64 20 76 69 63 65 20 76  ystem and vice v
2b20: 65 72 73 61 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  ersa...    #..  
2b30: 20 20 24 66 69 6c 65 44 65 70 6c 6f 79 65 72 20    $fileDeployer 
2b40: 53 65 6e 64 46 69 6c 65 20 24 66 69 6c 65 4e 61  SendFile $fileNa
2b50: 6d 65 20 5b 61 70 70 65 6e 64 41 72 67 73 20 24  me [appendArgs $
2b60: 64 65 76 69 63 65 5f 64 69 72 65 63 74 6f 72 79  device_directory
2b70: 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b 66 69 6c   \..        [fil
2b80: 65 20 74 61 69 6c 20 24 66 69 6c 65 4e 61 6d 65  e tail $fileName
2b90: 5d 5d 20 74 72 75 65 20 66 61 6c 73 65 0d 0a 20  ]] true false.. 
2ba0: 20 7d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23 20 4e   }....  #..  # N
2bb0: 4f 54 45 3a 20 52 75 6e 20 74 68 65 20 74 65 73  OTE: Run the tes
2bc0: 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6f 6e  t application on
2bd0: 20 74 68 65 20 74 61 72 67 65 74 20 64 65 76 69   the target devi
2be0: 63 65 20 69 6e 20 22 61 75 74 6f 6d 61 74 69 63  ce in "automatic
2bf0: 22 20 6d 6f 64 65 0d 0a 20 20 23 20 20 20 20 20  " mode..  #     
2c00: 20 20 28 69 2e 65 2e 20 6e 6f 20 75 73 65 72 20    (i.e. no user 
2c10: 69 6e 74 65 72 61 63 74 69 6f 6e 20 69 73 20 72  interaction is r
2c20: 65 71 75 69 72 65 64 29 20 61 6e 64 20 63 61 70  equired) and cap
2c30: 74 75 72 65 20 74 68 65 20 65 78 69 74 20 63 6f  ture the exit co
2c40: 64 65 2e 0d 0a 20 20 23 20 20 20 20 20 20 20 54  de...  #       T
2c50: 68 65 20 65 78 69 74 20 63 6f 64 65 20 77 69 6c  he exit code wil
2c60: 6c 20 62 65 20 7a 65 72 6f 20 75 70 6f 6e 20 73  l be zero upon s
2c70: 75 63 63 65 73 73 20 28 69 2e 65 2e 20 61 6c 6c  uccess (i.e. all
2c80: 20 74 65 73 74 73 20 70 61 73 73 65 64 29 20 6f   tests passed) o
2c90: 72 0d 0a 20 20 23 20 20 20 20 20 20 20 6e 6f 6e  r..  #       non
2ca0: 2d 7a 65 72 6f 20 6f 74 68 65 72 77 69 73 65 2e  -zero otherwise.
2cb0: 0d 0a 20 20 23 0d 0a 20 20 73 65 74 20 74 65 73  ..  #..  set tes
2cc0: 74 46 69 6c 65 4e 61 6d 65 20 5b 66 69 6c 65 20  tFileName [file 
2cd0: 6e 61 74 69 76 65 6e 61 6d 65 20 5b 66 69 6c 65  nativename [file
2ce0: 20 6a 6f 69 6e 20 24 64 65 76 69 63 65 5f 64 69   join $device_di
2cf0: 72 65 63 74 6f 72 79 20 74 65 73 74 63 65 2e 65  rectory testce.e
2d00: 78 65 5d 5d 0d 0a 20 20 73 65 74 20 65 78 69 74  xe]]..  set exit
2d10: 43 6f 64 65 20 5b 73 74 61 72 74 52 65 6d 6f 74  Code [startRemot
2d20: 65 50 72 6f 63 65 73 73 20 24 64 65 76 69 63 65  eProcess $device
2d30: 20 24 74 65 73 74 46 69 6c 65 4e 61 6d 65 20 74   $testFileName t
2d40: 72 75 65 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  rue]....  #..  #
2d50: 20 4e 4f 54 45 3a 20 49 73 20 74 68 65 20 74 61   NOTE: Is the ta
2d60: 72 67 65 74 20 64 65 76 69 63 65 20 61 63 74 75  rget device actu
2d70: 61 6c 6c 79 20 61 6e 20 65 6d 75 6c 61 74 6f 72  ally an emulator
2d80: 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 74 68 69 73   running on this
2d90: 20 73 79 73 74 65 6d 3f 0d 0a 20 20 23 0d 0a 20   system?..  #.. 
2da0: 20 73 65 74 20 69 73 45 6d 75 6c 61 74 6f 72 20   set isEmulator 
2db0: 5b 24 64 65 76 69 63 65 20 49 73 45 6d 75 6c 61  [$device IsEmula
2dc0: 74 6f 72 5d 0d 0a 0d 0a 20 20 23 0d 0a 20 20 23  tor]....  #..  #
2dd0: 20 4e 4f 54 45 3a 20 57 65 20 6e 6f 20 6c 6f 6e   NOTE: We no lon
2de0: 67 65 72 20 6e 65 65 64 20 74 6f 20 62 65 20 63  ger need to be c
2df0: 6f 6e 6e 65 63 74 65 64 20 74 6f 20 74 68 65 20  onnected to the 
2e00: 74 61 72 67 65 74 20 64 65 76 69 63 65 2e 0d 0a  target device...
2e10: 20 20 23 0d 0a 20 20 24 64 65 76 69 63 65 20 44    #..  $device D
2e20: 69 73 63 6f 6e 6e 65 63 74 0d 0a 0d 0a 20 20 23  isconnect....  #
2e30: 0d 0a 20 20 23 20 4e 4f 54 45 3a 20 41 6c 73 6f  ..  # NOTE: Also
2e40: 2c 20 69 66 20 74 68 65 20 64 65 76 69 63 65 20  , if the device 
2e50: 69 73 20 61 6e 20 65 6d 75 6c 61 74 6f 72 2c 20  is an emulator, 
2e60: 61 74 74 65 6d 70 74 20 74 6f 20 73 68 75 74 64  attempt to shutd
2e70: 6f 77 6e 20 74 68 65 20 70 72 6f 63 65 73 73 0d  own the process.
2e80: 0a 20 20 23 20 20 20 20 20 20 20 63 6f 6e 74 61  .  #       conta
2e90: 69 6e 69 6e 67 20 69 74 20 6e 6f 77 20 28 73 69  ining it now (si
2ea0: 6e 63 65 20 77 65 20 70 72 6f 62 61 62 6c 79 20  nce we probably 
2eb0: 63 61 75 73 65 64 20 69 74 20 74 6f 20 73 74 61  caused it to sta
2ec0: 72 74 29 2e 0d 0a 20 20 23 0d 0a 20 20 69 66 20  rt)...  #..  if 
2ed0: 7b 24 69 73 45 6d 75 6c 61 74 6f 72 7d 20 74 68  {$isEmulator} th
2ee0: 65 6e 20 7b 0d 0a 20 20 20 20 23 0d 0a 20 20 20  en {..    #..   
2ef0: 20 23 20 4e 4f 54 45 3a 20 54 72 79 20 74 6f 20   # NOTE: Try to 
2f00: 66 69 6e 64 20 74 68 65 20 74 6f 70 2d 6c 65 76  find the top-lev
2f10: 65 6c 20 77 69 6e 64 6f 77 20 66 6f 72 20 74 68  el window for th
2f20: 65 20 64 65 76 69 63 65 20 65 6d 75 6c 61 74 6f  e device emulato
2f30: 72 20 70 72 6f 63 65 73 73 0d 0a 20 20 20 20 23  r process..    #
2f40: 20 20 20 20 20 20 20 62 61 73 65 64 20 6f 6e 20         based on 
2f50: 74 68 65 20 22 4c 43 44 44 69 73 70 6c 61 79 22  the "LCDDisplay"
2f60: 20 77 69 6e 64 6f 77 20 63 6c 61 73 73 20 6e 61   window class na
2f70: 6d 65 2e 20 20 55 73 69 6e 67 20 74 68 69 73 20  me.  Using this 
2f80: 6d 65 74 68 6f 64 0d 0a 20 20 20 20 23 20 20 20  method..    #   
2f90: 20 20 20 20 6f 66 20 66 69 6e 64 69 6e 67 20 74      of finding t
2fa0: 68 65 20 74 61 72 67 65 74 20 77 69 6e 64 6f 77  he target window
2fb0: 20 69 73 20 73 6f 6d 65 77 68 61 74 20 66 72 61   is somewhat fra
2fc0: 67 69 6c 65 20 61 6e 64 20 6d 61 79 20 6e 6f 74  gile and may not
2fd0: 20 77 6f 72 6b 0d 0a 20 20 20 20 23 20 20 20 20   work..    #    
2fe0: 20 20 20 72 65 6c 69 61 62 6c 79 20 69 6e 20 74     reliably in t
2ff0: 68 65 20 66 75 74 75 72 65 2e 0d 0a 20 20 20 20  he future...    
3000: 23 0d 0a 20 20 20 20 73 65 74 20 68 57 6e 64 20  #..    set hWnd 
3010: 5b 6c 69 6e 64 65 78 20 5b 6c 69 6e 64 65 78 20  [lindex [lindex 
3020: 5b 69 6e 66 6f 20 77 69 6e 64 6f 77 73 20 4c 43  [info windows LC
3030: 44 44 69 73 70 6c 61 79 5d 20 30 5d 20 30 5d 3b  DDisplay] 0] 0];
3040: 20 23 20 46 49 58 4d 45 3a 20 3f 3f 3f 0d 0a 0d   # FIXME: ???...
3050: 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 4e 4f  .    #..    # NO
3060: 54 45 3a 20 4d 61 6b 65 20 73 75 72 65 20 77 65  TE: Make sure we
3070: 20 66 6f 75 6e 64 20 69 74 20 62 65 66 6f 72 65   found it before
3080: 20 74 72 79 69 6e 67 20 74 6f 20 6c 6f 6f 6b 75   trying to looku
3090: 70 20 74 68 65 20 70 61 72 65 6e 74 20 70 72 6f  p the parent pro
30a0: 63 65 73 73 2e 0d 0a 20 20 20 20 23 0d 0a 20 20  cess...    #..  
30b0: 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 69 73    if {[string is
30c0: 20 69 6e 74 65 67 65 72 20 2d 73 74 72 69 63 74   integer -strict
30d0: 20 24 68 57 6e 64 5d 20 26 26 20 24 68 57 6e 64   $hWnd] && $hWnd
30e0: 20 21 3d 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20   != 0} then {.. 
30f0: 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 23 20       #..      # 
3100: 4e 4f 54 45 3a 20 41 74 74 65 6d 70 74 20 74 6f  NOTE: Attempt to
3110: 20 6c 6f 6f 6b 75 70 20 74 68 65 20 70 61 72 65   lookup the pare
3120: 6e 74 20 70 72 6f 63 65 73 73 20 66 6f 72 20 74  nt process for t
3130: 68 65 20 74 61 72 67 65 74 20 77 69 6e 64 6f 77  he target window
3140: 2e 0d 0a 20 20 20 20 20 20 23 0d 0a 20 20 20 20  ...      #..    
3150: 20 20 71 70 75 74 73 20 73 74 64 6f 75 74 20 5b    qputs stdout [
3160: 61 70 70 65 6e 64 41 72 67 73 20 22 66 6f 75 6e  appendArgs "foun
3170: 64 20 64 65 76 69 63 65 20 65 6d 75 6c 61 74 6f  d device emulato
3180: 72 20 77 69 6e 64 6f 77 20 68 61 6e 64 6c 65 20  r window handle 
3190: 22 20 24 68 57 6e 64 20 5c 0d 0a 20 20 20 20 20  " $hWnd \..     
31a0: 20 20 20 20 20 22 2c 20 6c 6f 6f 6b 69 6e 67 20       ", looking 
31b0: 75 70 20 74 68 65 20 70 72 6f 63 65 73 73 20 49  up the process I
31c0: 64 2e 2e 2e 22 5d 0d 0a 0d 0a 20 20 20 20 20 20  d..."]....      
31d0: 73 65 74 20 70 72 6f 63 65 73 73 49 64 20 30 3b  set processId 0;
31e0: 20 73 65 74 20 74 68 72 65 61 64 49 64 20 30 3b   set threadId 0;
31f0: 20 73 65 74 20 65 72 72 6f 72 20 6e 75 6c 6c 0d   set error null.
3200: 0a 0d 0a 20 20 20 20 20 20 69 66 20 7b 5b 6f 62  ...      if {[ob
3210: 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 66 6c 61  ject invoke -fla
3220: 67 73 20 2b 4e 6f 6e 50 75 62 6c 69 63 20 5c 0d  gs +NonPublic \.
3230: 0a 20 20 20 20 20 20 20 20 20 20 45 61 67 6c 65  .          Eagle
3240: 2e 5f 43 6f 6d 70 6f 6e 65 6e 74 73 2e 50 72 69  ._Components.Pri
3250: 76 61 74 65 2e 57 69 6e 64 6f 77 4f 70 73 20 47  vate.WindowOps G
3260: 65 74 57 69 6e 64 6f 77 54 68 72 65 61 64 50 72  etWindowThreadPr
3270: 6f 63 65 73 73 49 64 20 5c 0d 0a 20 20 20 20 20  ocessId \..     
3280: 20 20 20 20 20 5b 6f 62 6a 65 63 74 20 63 72 65       [object cre
3290: 61 74 65 20 49 6e 74 50 74 72 20 24 68 57 6e 64  ate IntPtr $hWnd
32a0: 5d 20 70 72 6f 63 65 73 73 49 64 20 74 68 72 65  ] processId thre
32b0: 61 64 49 64 20 65 72 72 6f 72 5d 20 65 71 20 22  adId error] eq "
32c0: 4f 6b 22 20 26 26 20 5c 0d 0a 20 20 20 20 20 20  Ok" && \..      
32d0: 20 20 20 20 5b 73 74 72 69 6e 67 20 69 73 20 69      [string is i
32e0: 6e 74 65 67 65 72 20 2d 73 74 72 69 63 74 20 24  nteger -strict $
32f0: 70 72 6f 63 65 73 73 49 64 5d 20 26 26 20 24 70  processId] && $p
3300: 72 6f 63 65 73 73 49 64 20 21 3d 20 30 7d 20 74  rocessId != 0} t
3310: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 23  hen {..        #
3320: 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 4f 54 45  ..        # NOTE
3330: 3a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 69 64  : This is not id
3340: 65 61 6c 3b 20 68 6f 77 65 76 65 72 2c 20 69 66  eal; however, if
3350: 20 77 65 20 73 69 6d 70 6c 79 20 74 72 79 20 74   we simply try t
3360: 6f 20 63 6c 6f 73 65 20 74 68 65 0d 0a 20 20 20  o close the..   
3370: 20 20 20 20 20 23 20 20 20 20 20 20 20 74 61 72       #       tar
3380: 67 65 74 20 77 69 6e 64 6f 77 2c 20 69 74 20 77  get window, it w
3390: 69 6c 6c 20 70 72 6f 6d 70 74 20 74 6f 20 73 61  ill prompt to sa
33a0: 76 65 20 73 74 61 74 65 20 63 68 61 6e 67 65 73  ve state changes
33b0: 20 61 6e 64 20 74 68 61 74 0d 0a 20 20 20 20 20   and that..     
33c0: 20 20 20 23 20 20 20 20 20 20 20 72 65 71 75 69     #       requi
33d0: 72 65 73 20 75 73 65 72 20 69 6e 74 65 72 61 63  res user interac
33e0: 74 69 6f 6e 2e 20 20 57 65 20 6e 65 76 65 72 20  tion.  We never 
33f0: 77 61 6e 74 20 74 6f 20 73 61 76 65 20 74 68 65  want to save the
3400: 20 73 74 61 74 65 3b 0d 0a 20 20 20 20 20 20 20   state;..       
3410: 20 23 20 20 20 20 20 20 20 74 68 65 72 65 66 6f   #       therefo
3420: 72 65 2c 20 6a 75 73 74 20 66 6f 72 63 69 62 6c  re, just forcibl
3430: 79 20 6b 69 6c 6c 20 74 68 65 20 70 72 6f 63 65  y kill the proce
3440: 73 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ss containing th
3450: 65 0d 0a 20 20 20 20 20 20 20 20 23 20 20 20 20  e..        #    
3460: 20 20 20 65 6d 75 6c 61 74 6f 72 2e 0d 0a 20 20     emulator...  
3470: 20 20 20 20 20 20 23 0d 0a 20 20 20 20 20 20 20        #..       
3480: 20 71 70 75 74 73 20 73 74 64 6f 75 74 20 5b 61   qputs stdout [a
3490: 70 70 65 6e 64 41 72 67 73 20 22 66 6f 75 6e 64  ppendArgs "found
34a0: 20 64 65 76 69 63 65 20 65 6d 75 6c 61 74 6f 72   device emulator
34b0: 20 70 72 6f 63 65 73 73 20 49 64 20 22 20 5c 0d   process Id " \.
34c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 70 72  .            $pr
34d0: 6f 63 65 73 73 49 64 20 22 2c 20 6b 69 6c 6c 69  ocessId ", killi
34e0: 6e 67 2e 2e 2e 22 5d 0d 0a 0d 0a 20 20 20 20 20  ng..."]....     
34f0: 20 20 20 6b 69 6c 6c 20 2d 66 6f 72 63 65 20 24     kill -force $
3500: 70 72 6f 63 65 73 73 49 64 0d 0a 20 20 20 20 20  processId..     
3510: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a   }..    }..  }..
3520: 0d 0a 20 20 23 0d 0a 20 20 23 20 4e 4f 54 45 3a  ..  #..  # NOTE:
3530: 20 50 72 69 6e 74 20 74 68 65 20 6f 76 65 72 61   Print the overa
3540: 6c 6c 20 72 65 73 75 6c 74 20 6f 66 20 72 75 6e  ll result of run
3550: 6e 69 6e 67 20 74 68 65 20 74 65 73 74 20 61 70  ning the test ap
3560: 70 6c 69 63 61 74 69 6f 6e 20 61 6e 64 20 65 78  plication and ex
3570: 69 74 0d 0a 20 20 23 20 20 20 20 20 20 20 75 73  it..  #       us
3580: 69 6e 67 20 74 68 65 20 65 78 69 74 20 63 6f 64  ing the exit cod
3590: 65 20 66 72 6f 6d 20 74 68 65 20 74 65 73 74 20  e from the test 
35a0: 61 70 70 6c 69 63 61 74 69 6f 6e 20 6f 6e 20 74  application on t
35b0: 68 65 20 74 61 72 67 65 74 20 64 65 76 69 63 65  he target device
35c0: 2e 0d 0a 20 20 23 0d 0a 20 20 71 70 75 74 73 20  ...  #..  qputs 
35d0: 73 74 64 6f 75 74 20 5b 65 78 70 72 20 7b 24 65  stdout [expr {$e
35e0: 78 69 74 43 6f 64 65 20 3d 3d 20 30 20 3f 20 22  xitCode == 0 ? "
35f0: 53 55 43 43 45 53 53 22 20 3a 20 22 46 41 49 4c  SUCCESS" : "FAIL
3600: 55 52 45 22 7d 5d 0d 0a 20 20 65 78 69 74 20 24  URE"}]..  exit $
3610: 65 78 69 74 43 6f 64 65 0d 0a 7d 20 65 6c 73 65  exitCode..} else
3620: 20 7b 0d 0a 20 20 75 73 61 67 65 20 22 22 0d 0a   {..  usage ""..
3630: 7d 0d 0a                                         }..