System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 893536b6522cb9a7cbc9051ffa9c116f766be475:


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 69 6e 73 74 61 6c 6c 65 72 2e  .#..# installer.
0060: 65 61 67 6c 65 20 2d 2d 0d 0a 23 0d 0a 23 20 57  eagle --..#..# W
0070: 72 69 74 74 65 6e 20 62 79 20 4a 6f 65 20 4d 69  ritten by Joe Mi
0080: 73 74 61 63 68 6b 69 6e 2e 0d 0a 23 20 52 65 6c  stachkin...# Rel
0090: 65 61 73 65 64 20 74 6f 20 74 68 65 20 70 75 62  eased to the pub
00a0: 6c 69 63 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20  lic domain, use 
00b0: 61 74 20 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b  at your own risk
00c0: 21 0d 0a 23 0d 0a 23 23 23 23 23 23 23 23 23 23  !..#..##########
00d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00f0: 23 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 0d 0a 0d 0a 70 61 63 6b 61 67 65  #####....package
0120: 20 72 65 71 75 69 72 65 20 45 61 67 6c 65 0d 0a   require Eagle..
0130: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
0140: 45 61 67 6c 65 2e 4c 69 62 72 61 72 79 0d 0a 70  Eagle.Library..p
0150: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 45  ackage require E
0160: 61 67 6c 65 2e 54 65 73 74 0d 0a 0d 0a 72 75 6e  agle.Test....run
0170: 54 65 73 74 50 72 6f 6c 6f 67 75 65 0d 0a 0d 0a  TestPrologue....
0180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
01d0: 0a 0d 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69  ...package requi
01e0: 72 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  re System.Data.S
01f0: 51 4c 69 74 65 2e 54 65 73 74 0d 0a 72 75 6e 53  QLite.Test..runS
0200: 51 4c 69 74 65 54 65 73 74 50 72 6f 6c 6f 67 75  QLiteTestPrologu
0210: 65 0d 0a 72 75 6e 53 51 4c 69 74 65 54 65 73 74  e..runSQLiteTest
0220: 46 69 6c 65 73 50 72 6f 6c 6f 67 75 65 0d 0a 0d  FilesPrologue...
0230: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0260: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0280: 0d 0a 0d 0a 70 72 6f 63 20 67 65 74 4c 69 6e 65  ....proc getLine
0290: 4e 75 6d 62 65 72 20 7b 7d 20 7b 0d 0a 20 20 72  Number {} {..  r
02a0: 65 74 75 72 6e 20 5b 69 6e 63 72 20 3a 3a 6c 69  eturn [incr ::li
02b0: 6e 65 4e 75 6d 62 65 72 5d 0d 0a 7d 0d 0a 0d 0a  neNumber]..}....
02c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
0310: 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65 73 74  ...runTest {test
0320: 20 69 6e 73 74 61 6c 6c 65 72 2d 31 2e 31 20 7b   installer-1.1 {
0330: 69 6e 73 74 61 6c 6c 65 72 20 74 6f 6f 6c 20 2f  installer tool /
0340: 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32   Visual Studio 2
0350: 30 30 35 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20  005} -setup {.. 
0360: 20 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 5b 66   set fileName [f
0370: 69 6c 65 20 6a 6f 69 6e 20 5b 67 65 74 54 65 6d  ile join [getTem
0380: 70 6f 72 61 72 79 44 69 72 65 63 74 6f 72 79 5d  poraryDirectory]
0390: 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b 73 74 72   [file tail [str
03a0: 69 6e 67 20 6d 61 70 20 5c 0d 0a 20 20 20 20 20  ing map \..     
03b0: 20 5b 6c 69 73 74 20 2e 6c 6f 67 20 5b 61 70 70   [list .log [app
03c0: 65 6e 64 41 72 67 73 20 5f 20 5b 70 69 64 5d 20  endArgs _ [pid] 
03d0: 2e 6c 6f 67 5d 5d 20 24 74 65 73 74 49 6e 73 74  .log]] $testInst
03e0: 61 6c 6c 56 73 32 30 30 35 4c 6f 67 46 69 6c 65  allVs2005LogFile
03f0: 5d 5d 5d 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70  ]]]....  cleanup
0400: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d 0a  File $fileName..
0410: 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74  } -body {..  set
0420: 20 6f 75 74 70 75 74 20 22 22 0d 0a 0d 0a 20 20   output ""....  
0430: 73 65 74 20 63 6f 64 65 20 5b 63 61 74 63 68 20  set code [catch 
0440: 7b 0d 0a 20 20 20 20 74 65 73 74 43 6c 72 45 78  {..    testClrEx
0450: 65 63 20 24 69 6e 73 74 61 6c 6c 65 72 45 78 65  ec $installerExe
0460: 46 69 6c 65 20 5b 6c 69 73 74 20 2d 65 76 65 6e  File [list -even
0470: 74 66 6c 61 67 73 20 57 61 69 74 20 2d 73 74 64  tflags Wait -std
0480: 6f 75 74 20 6f 75 74 70 75 74 20 5c 0d 0a 20 20  out output \..  
0490: 20 20 20 20 20 20 2d 73 75 63 63 65 73 73 20 53        -success S
04a0: 75 63 63 65 73 73 5d 20 2d 64 65 62 75 67 50 72  uccess] -debugPr
04b0: 69 6f 72 69 74 79 20 4c 6f 77 65 73 74 20 2d 74  iority Lowest -t
04c0: 72 61 63 65 50 72 69 6f 72 69 74 79 20 4d 65 64  racePriority Med
04d0: 69 75 6d 48 69 67 68 20 5c 0d 0a 20 20 20 20 20  iumHigh \..     
04e0: 20 20 20 2d 6e 6f 52 75 6e 74 69 6d 65 56 65 72     -noRuntimeVer
04f0: 73 69 6f 6e 20 74 72 75 65 20 2d 6e 6f 43 6f 6d  sion true -noCom
0500: 70 61 63 74 20 74 72 75 65 20 2d 6e 6f 4e 65 74  pact true -noNet
0510: 46 78 33 35 20 74 72 75 65 20 5c 0d 0a 20 20 20  Fx35 true \..   
0520: 20 20 20 20 20 2d 6e 6f 4e 65 74 46 78 34 30 20       -noNetFx40 
0530: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 20  true -noNetFx45 
0540: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 31  true -noNetFx451
0550: 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35   true -noNetFx45
0560: 32 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20  2 true \..      
0570: 20 20 2d 6e 6f 4e 65 74 46 78 34 36 20 74 72 75    -noNetFx46 tru
0580: 65 20 2d 6e 6f 4e 65 74 46 78 34 36 31 20 74 72  e -noNetFx461 tr
0590: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 36 32 20 74  ue -noNetFx462 t
05a0: 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 37 20 74  rue -noNetFx47 t
05b0: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
05c0: 6e 6f 4e 65 74 46 78 34 37 31 20 74 72 75 65 20  noNetFx471 true 
05d0: 2d 6e 6f 4e 65 74 46 78 34 37 32 20 74 72 75 65  -noNetFx472 true
05e0: 20 2d 6e 6f 56 73 32 30 30 38 20 74 72 75 65 20   -noVs2008 true 
05f0: 2d 6e 6f 56 73 32 30 31 30 20 74 72 75 65 20 5c  -noVs2010 true \
0600: 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f 56 73 32  ..        -noVs2
0610: 30 31 32 20 74 72 75 65 20 2d 6e 6f 56 73 32 30  012 true -noVs20
0620: 31 33 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31  13 true -noVs201
0630: 35 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 37  5 true -noVs2017
0640: 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20   true \..       
0650: 20 2d 77 68 61 74 49 66 20 74 72 75 65 20 2d 76   -whatIf true -v
0660: 65 72 62 6f 73 65 20 74 72 75 65 20 2d 63 6f 6e  erbose true -con
0670: 66 69 72 6d 20 74 72 75 65 20 2d 69 6e 73 74 61  firm true -insta
0680: 6c 6c 20 74 72 75 65 20 2d 64 65 62 75 67 20 74  ll true -debug t
0690: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
06a0: 77 6f 77 36 34 20 74 72 75 65 20 2d 64 69 72 65  wow64 true -dire
06b0: 63 74 6f 72 79 20 5b 66 69 6c 65 20 6e 61 74 69  ctory [file nati
06c0: 76 65 6e 61 6d 65 20 5b 67 65 74 42 75 69 6c 64  vename [getBuild
06d0: 44 69 72 65 63 74 6f 72 79 20 74 72 75 65 5d 5d  Directory true]]
06e0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6c 6f 67   \..        -log
06f0: 46 69 6c 65 4e 61 6d 65 20 5b 61 70 70 65 6e 64  FileName [append
0700: 41 72 67 73 20 5c 22 20 5b 66 69 6c 65 20 6e 61  Args \" [file na
0710: 74 69 76 65 6e 61 6d 65 20 24 66 69 6c 65 4e 61  tivename $fileNa
0720: 6d 65 5d 20 5c 22 5d 20 5c 0d 0a 20 20 20 20 20  me] \"] \..     
0730: 20 20 20 2d 74 72 61 63 65 46 6f 72 6d 61 74 20     -traceFormat 
0740: 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20 22  [appendArgs \" "
0750: 23 7b 30 7d 3a 20 7b 32 7d 22 20 5c 22 5d 0d 0a  #{0}: {2}" \"]..
0760: 20 20 7d 20 65 72 72 6f 72 5d 0d 0a 0d 0a 20 20    } error]....  
0770: 74 6c 6f 67 20 22 2d 2d 2d 2d 20 42 45 47 49 4e  tlog "---- BEGIN
0780: 20 53 54 44 4f 55 54 20 4f 55 54 50 55 54 5c 6e   STDOUT OUTPUT\n
0790: 22 0d 0a 20 20 74 6c 6f 67 20 24 6f 75 74 70 75  "..  tlog $outpu
07a0: 74 0d 0a 20 20 74 6c 6f 67 20 22 5c 6e 2d 2d 2d  t..  tlog "\n---
07b0: 2d 20 45 4e 44 20 53 54 44 4f 55 54 20 4f 55 54  - END STDOUT OUT
07c0: 50 55 54 5c 6e 22 0d 0a 0d 0a 20 20 73 65 74 20  PUT\n"....  set 
07d0: 6c 69 6e 65 4e 75 6d 62 65 72 20 30 0d 0a 20 20  lineNumber 0..  
07e0: 73 65 74 20 69 73 36 34 20 5b 68 61 76 65 43 6f  set is64 [haveCo
07f0: 6e 73 74 72 61 69 6e 74 20 61 6d 64 36 34 2e 36  nstraint amd64.6
0800: 34 62 69 74 5d 0d 0a 20 20 73 65 74 20 77 6f 77  4bit]..  set wow
0810: 36 34 20 5b 65 78 70 72 20 7b 24 69 73 36 34 20  64 [expr {$is64 
0820: 3f 20 22 5c 5c 57 6f 77 36 34 33 32 4e 6f 64 65  ? "\\Wow6432Node
0830: 22 20 3a 20 22 22 7d 5d 0d 0a 0d 0a 20 20 6c 69  " : ""}]....  li
0840: 73 74 20 24 63 6f 64 65 20 5b 65 78 70 72 20 7b  st $code [expr {
0850: 24 63 6f 64 65 20 3d 3d 20 30 20 3f 20 5b 73 74  $code == 0 ? [st
0860: 72 69 6e 67 20 65 71 75 61 6c 20 2d 6e 6f 63 61  ring equal -noca
0870: 73 65 20 5b 72 65 61 64 46 69 6c 65 20 24 66 69  se [readFile $fi
0880: 6c 65 4e 61 6d 65 5d 20 5c 0d 0a 20 20 20 20 20  leName] \..     
0890: 20 5b 73 75 62 73 74 20 2d 6e 6f 62 61 63 6b 73   [subst -nobacks
08a0: 6c 61 73 68 65 73 20 5b 72 65 61 64 46 69 6c 65  lashes [readFile
08b0: 20 24 74 65 73 74 49 6e 73 74 61 6c 6c 56 73 32   $testInstallVs2
08c0: 30 30 35 4c 6f 67 46 69 6c 65 5d 5d 5d 20 3a 20  005LogFile]]] : 
08d0: 24 65 72 72 6f 72 7d 5d 0d 0a 7d 20 2d 63 6c 65  $error}]..} -cle
08e0: 61 6e 75 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75  anup {..  cleanu
08f0: 70 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d  pFile $fileName.
0900: 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f  ...  unset -noco
0910: 6d 70 6c 61 69 6e 20 77 6f 77 36 34 20 69 73 36  mplain wow64 is6
0920: 34 20 6c 69 6e 65 4e 75 6d 62 65 72 20 63 6f 64  4 lineNumber cod
0930: 65 20 6f 75 74 70 75 74 20 65 72 72 6f 72 20 66  e output error f
0940: 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73  ileName..} -cons
0950: 74 72 61 69 6e 74 73 20 5b 66 69 78 43 6f 6e 73  traints [fixCons
0960: 74 72 61 69 6e 74 73 20 7b 65 61 67 6c 65 20 61  traints {eagle a
0970: 64 6d 69 6e 69 73 74 72 61 74 6f 72 20 21 77 6f  dministrator !wo
0980: 77 36 34 20 62 75 69 6c 64 59 65 61 72 2e 32 30  w64 buildYear.20
0990: 30 35 5c 0d 0a 76 69 73 75 61 6c 53 74 75 64 69  05\..visualStudi
09a0: 6f 32 30 30 35 20 53 79 73 74 65 6d 2e 44 61 74  o2005 System.Dat
09b0: 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 5f 76 32 2e  a.SQLite.dll_v2.
09c0: 30 2e 35 30 37 32 37 20 66 69 6c 65 5f 49 6e 73  0.50727 file_Ins
09d0: 74 61 6c 6c 65 72 2e 65 78 65 20 74 65 73 74 45  taller.exe testE
09e0: 78 65 63 5c 0d 0a 66 69 6c 65 5f 53 79 73 74 65  xec\..file_Syste
09f0: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c  m.Data.SQLite.dl
0a00: 6c 20 66 69 6c 65 5f 53 51 4c 69 74 65 2e 44 65  l file_SQLite.De
0a10: 73 69 67 6e 65 72 2e 64 6c 6c 5c 0d 0a 66 69 6c  signer.dll\..fil
0a20: 65 5f 49 6e 73 74 61 6c 6c 65 72 5f 54 65 73 74  e_Installer_Test
0a30: 5f 56 73 32 30 30 35 2e 6c 6f 67 7d 5d 20 2d 72  _Vs2005.log}] -r
0a40: 65 73 75 6c 74 20 7b 30 20 54 72 75 65 7d 7d 0d  esult {0 True}}.
0a50: 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  ...#############
0a60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0aa0: 23 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74  ##....runTest {t
0ab0: 65 73 74 20 69 6e 73 74 61 6c 6c 65 72 2d 31 2e  est installer-1.
0ac0: 32 20 7b 75 6e 69 6e 73 74 61 6c 6c 65 72 20 74  2 {uninstaller t
0ad0: 6f 6f 6c 20 2f 20 56 69 73 75 61 6c 20 53 74 75  ool / Visual Stu
0ae0: 64 69 6f 20 32 30 30 35 7d 20 2d 73 65 74 75 70  dio 2005} -setup
0af0: 20 7b 0d 0a 20 20 73 65 74 20 66 69 6c 65 4e 61   {..  set fileNa
0b00: 6d 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 67  me [file join [g
0b10: 65 74 54 65 6d 70 6f 72 61 72 79 44 69 72 65 63  etTemporaryDirec
0b20: 74 6f 72 79 5d 20 5b 66 69 6c 65 20 74 61 69 6c  tory] [file tail
0b30: 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5c 0d 0a   [string map \..
0b40: 20 20 20 20 20 20 5b 6c 69 73 74 20 2e 6c 6f 67        [list .log
0b50: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5f 20 5b   [appendArgs _ [
0b60: 70 69 64 5d 20 2e 6c 6f 67 5d 5d 20 24 74 65 73  pid] .log]] $tes
0b70: 74 55 6e 69 6e 73 74 61 6c 6c 56 73 32 30 30 35  tUninstallVs2005
0b80: 4c 6f 67 46 69 6c 65 5d 5d 5d 0d 0a 0d 0a 20 20  LogFile]]]....  
0b90: 63 6c 65 61 6e 75 70 46 69 6c 65 20 24 66 69 6c  cleanupFile $fil
0ba0: 65 4e 61 6d 65 0d 0a 7d 20 2d 62 6f 64 79 20 7b  eName..} -body {
0bb0: 0d 0a 20 20 73 65 74 20 6f 75 74 70 75 74 20 22  ..  set output "
0bc0: 22 0d 0a 0d 0a 20 20 73 65 74 20 63 6f 64 65 20  "....  set code 
0bd0: 5b 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 74 65  [catch {..    te
0be0: 73 74 43 6c 72 45 78 65 63 20 24 69 6e 73 74 61  stClrExec $insta
0bf0: 6c 6c 65 72 45 78 65 46 69 6c 65 20 5b 6c 69 73  llerExeFile [lis
0c00: 74 20 2d 65 76 65 6e 74 66 6c 61 67 73 20 57 61  t -eventflags Wa
0c10: 69 74 20 2d 73 74 64 6f 75 74 20 6f 75 74 70 75  it -stdout outpu
0c20: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 73 75  t \..        -su
0c30: 63 63 65 73 73 20 53 75 63 63 65 73 73 5d 20 2d  ccess Success] -
0c40: 64 65 62 75 67 50 72 69 6f 72 69 74 79 20 4c 6f  debugPriority Lo
0c50: 77 65 73 74 20 2d 74 72 61 63 65 50 72 69 6f 72  west -tracePrior
0c60: 69 74 79 20 4d 65 64 69 75 6d 48 69 67 68 20 5c  ity MediumHigh \
0c70: 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f 52 75 6e  ..        -noRun
0c80: 74 69 6d 65 56 65 72 73 69 6f 6e 20 74 72 75 65  timeVersion true
0c90: 20 2d 6e 6f 43 6f 6d 70 61 63 74 20 74 72 75 65   -noCompact true
0ca0: 20 2d 6e 6f 4e 65 74 46 78 33 35 20 74 72 75 65   -noNetFx35 true
0cb0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f 4e   \..        -noN
0cc0: 65 74 46 78 34 30 20 74 72 75 65 20 2d 6e 6f 4e  etFx40 true -noN
0cd0: 65 74 46 78 34 35 20 74 72 75 65 20 2d 6e 6f 4e  etFx45 true -noN
0ce0: 65 74 46 78 34 35 31 20 74 72 75 65 20 2d 6e 6f  etFx451 true -no
0cf0: 4e 65 74 46 78 34 35 32 20 74 72 75 65 20 5c 0d  NetFx452 true \.
0d00: 0a 20 20 20 20 20 20 20 20 2d 6e 6f 4e 65 74 46  .        -noNetF
0d10: 78 34 36 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46  x46 true -noNetF
0d20: 78 34 36 31 20 74 72 75 65 20 2d 6e 6f 4e 65 74  x461 true -noNet
0d30: 46 78 34 36 32 20 74 72 75 65 20 2d 6e 6f 4e 65  Fx462 true -noNe
0d40: 74 46 78 34 37 20 74 72 75 65 20 5c 0d 0a 20 20  tFx47 true \..  
0d50: 20 20 20 20 20 20 2d 6e 6f 4e 65 74 46 78 34 37        -noNetFx47
0d60: 31 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34  1 true -noNetFx4
0d70: 37 32 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 30  72 true -noVs200
0d80: 38 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 30  8 true -noVs2010
0d90: 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20   true \..       
0da0: 20 2d 6e 6f 56 73 32 30 31 32 20 74 72 75 65 20   -noVs2012 true 
0db0: 2d 6e 6f 56 73 32 30 31 33 20 74 72 75 65 20 2d  -noVs2013 true -
0dc0: 6e 6f 56 73 32 30 31 35 20 74 72 75 65 20 2d 6e  noVs2015 true -n
0dd0: 6f 56 73 32 30 31 37 20 74 72 75 65 20 5c 0d 0a  oVs2017 true \..
0de0: 20 20 20 20 20 20 20 20 2d 77 68 61 74 49 66 20          -whatIf 
0df0: 74 72 75 65 20 2d 76 65 72 62 6f 73 65 20 74 72  true -verbose tr
0e00: 75 65 20 2d 63 6f 6e 66 69 72 6d 20 74 72 75 65  ue -confirm true
0e10: 20 2d 69 6e 73 74 61 6c 6c 20 66 61 6c 73 65 20   -install false 
0e20: 2d 64 65 62 75 67 20 74 72 75 65 20 5c 0d 0a 20  -debug true \.. 
0e30: 20 20 20 20 20 20 20 2d 77 6f 77 36 34 20 74 72         -wow64 tr
0e40: 75 65 20 2d 64 69 72 65 63 74 6f 72 79 20 5b 66  ue -directory [f
0e50: 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65 20 5b  ile nativename [
0e60: 67 65 74 42 75 69 6c 64 44 69 72 65 63 74 6f 72  getBuildDirector
0e70: 79 20 74 72 75 65 5d 5d 20 5c 0d 0a 20 20 20 20  y true]] \..    
0e80: 20 20 20 20 2d 6c 6f 67 46 69 6c 65 4e 61 6d 65      -logFileName
0e90: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20   [appendArgs \" 
0ea0: 5b 66 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65  [file nativename
0eb0: 20 24 66 69 6c 65 4e 61 6d 65 5d 20 5c 22 5d 20   $fileName] \"] 
0ec0: 5c 0d 0a 20 20 20 20 20 20 20 20 2d 74 72 61 63  \..        -trac
0ed0: 65 46 6f 72 6d 61 74 20 5b 61 70 70 65 6e 64 41  eFormat [appendA
0ee0: 72 67 73 20 5c 22 20 22 23 7b 30 7d 3a 20 7b 32  rgs \" "#{0}: {2
0ef0: 7d 22 20 5c 22 5d 0d 0a 20 20 7d 20 65 72 72 6f  }" \"]..  } erro
0f00: 72 5d 0d 0a 0d 0a 20 20 74 6c 6f 67 20 22 2d 2d  r]....  tlog "--
0f10: 2d 2d 20 42 45 47 49 4e 20 53 54 44 4f 55 54 20  -- BEGIN STDOUT 
0f20: 4f 55 54 50 55 54 5c 6e 22 0d 0a 20 20 74 6c 6f  OUTPUT\n"..  tlo
0f30: 67 20 24 6f 75 74 70 75 74 0d 0a 20 20 74 6c 6f  g $output..  tlo
0f40: 67 20 22 5c 6e 2d 2d 2d 2d 20 45 4e 44 20 53 54  g "\n---- END ST
0f50: 44 4f 55 54 20 4f 55 54 50 55 54 5c 6e 22 0d 0a  DOUT OUTPUT\n"..
0f60: 0d 0a 20 20 73 65 74 20 6c 69 6e 65 4e 75 6d 62  ..  set lineNumb
0f70: 65 72 20 30 0d 0a 20 20 73 65 74 20 69 73 36 34  er 0..  set is64
0f80: 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74   [haveConstraint
0f90: 20 61 6d 64 36 34 2e 36 34 62 69 74 5d 0d 0a 20   amd64.64bit].. 
0fa0: 20 73 65 74 20 77 6f 77 36 34 20 5b 65 78 70 72   set wow64 [expr
0fb0: 20 7b 24 69 73 36 34 20 3f 20 22 5c 5c 57 6f 77   {$is64 ? "\\Wow
0fc0: 36 34 33 32 4e 6f 64 65 22 20 3a 20 22 22 7d 5d  6432Node" : ""}]
0fd0: 0d 0a 0d 0a 20 20 6c 69 73 74 20 24 63 6f 64 65  ....  list $code
0fe0: 20 5b 65 78 70 72 20 7b 24 63 6f 64 65 20 3d 3d   [expr {$code ==
0ff0: 20 30 20 3f 20 5b 73 74 72 69 6e 67 20 65 71 75   0 ? [string equ
1000: 61 6c 20 2d 6e 6f 63 61 73 65 20 5b 72 65 61 64  al -nocase [read
1010: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 5d 20  File $fileName] 
1020: 5c 0d 0a 20 20 20 20 20 20 5b 73 75 62 73 74 20  \..      [subst 
1030: 2d 6e 6f 62 61 63 6b 73 6c 61 73 68 65 73 20 5b  -nobackslashes [
1040: 72 65 61 64 46 69 6c 65 20 24 74 65 73 74 55 6e  readFile $testUn
1050: 69 6e 73 74 61 6c 6c 56 73 32 30 30 35 4c 6f 67  installVs2005Log
1060: 46 69 6c 65 5d 5d 5d 20 3a 20 24 65 72 72 6f 72  File]]] : $error
1070: 7d 5d 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b  }]..} -cleanup {
1080: 0d 0a 20 20 63 6c 65 61 6e 75 70 46 69 6c 65 20  ..  cleanupFile 
1090: 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75  $fileName....  u
10a0: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
10b0: 20 77 6f 77 36 34 20 69 73 36 34 20 6c 69 6e 65   wow64 is64 line
10c0: 4e 75 6d 62 65 72 20 63 6f 64 65 20 6f 75 74 70  Number code outp
10d0: 75 74 20 65 72 72 6f 72 20 66 69 6c 65 4e 61 6d  ut error fileNam
10e0: 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74  e..} -constraint
10f0: 73 20 5b 66 69 78 43 6f 6e 73 74 72 61 69 6e 74  s [fixConstraint
1100: 73 20 7b 65 61 67 6c 65 20 61 64 6d 69 6e 69 73  s {eagle adminis
1110: 74 72 61 74 6f 72 20 21 77 6f 77 36 34 20 62 75  trator !wow64 bu
1120: 69 6c 64 59 65 61 72 2e 32 30 30 35 5c 0d 0a 76  ildYear.2005\..v
1130: 69 73 75 61 6c 53 74 75 64 69 6f 32 30 30 35 20  isualStudio2005 
1140: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
1150: 74 65 2e 64 6c 6c 5f 76 32 2e 30 2e 35 30 37 32  te.dll_v2.0.5072
1160: 37 20 66 69 6c 65 5f 49 6e 73 74 61 6c 6c 65 72  7 file_Installer
1170: 2e 65 78 65 20 74 65 73 74 45 78 65 63 5c 0d 0a  .exe testExec\..
1180: 66 69 6c 65 5f 53 79 73 74 65 6d 2e 44 61 74 61  file_System.Data
1190: 2e 53 51 4c 69 74 65 2e 64 6c 6c 20 66 69 6c 65  .SQLite.dll file
11a0: 5f 53 51 4c 69 74 65 2e 44 65 73 69 67 6e 65 72  _SQLite.Designer
11b0: 2e 64 6c 6c 5c 0d 0a 66 69 6c 65 5f 55 6e 69 6e  .dll\..file_Unin
11c0: 73 74 61 6c 6c 65 72 5f 54 65 73 74 5f 56 73 32  staller_Test_Vs2
11d0: 30 30 35 2e 6c 6f 67 7d 5d 20 2d 72 65 73 75 6c  005.log}] -resul
11e0: 74 20 7b 30 20 54 72 75 65 7d 7d 0d 0a 0d 0a 23  t {0 True}}....#
11f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1200: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1210: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
1240: 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65 73 74 20  ..runTest {test 
1250: 69 6e 73 74 61 6c 6c 65 72 2d 31 2e 33 20 7b 69  installer-1.3 {i
1260: 6e 73 74 61 6c 6c 65 72 20 74 6f 6f 6c 20 2f 20  nstaller tool / 
1270: 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32 30  Visual Studio 20
1280: 30 38 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20  08} -setup {..  
1290: 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 5b 66 69  set fileName [fi
12a0: 6c 65 20 6a 6f 69 6e 20 5b 67 65 74 54 65 6d 70  le join [getTemp
12b0: 6f 72 61 72 79 44 69 72 65 63 74 6f 72 79 5d 20  oraryDirectory] 
12c0: 5b 66 69 6c 65 20 74 61 69 6c 20 5b 73 74 72 69  [file tail [stri
12d0: 6e 67 20 6d 61 70 20 5c 0d 0a 20 20 20 20 20 20  ng map \..      
12e0: 5b 6c 69 73 74 20 2e 6c 6f 67 20 5b 61 70 70 65  [list .log [appe
12f0: 6e 64 41 72 67 73 20 5f 20 5b 70 69 64 5d 20 2e  ndArgs _ [pid] .
1300: 6c 6f 67 5d 5d 20 24 74 65 73 74 49 6e 73 74 61  log]] $testInsta
1310: 6c 6c 56 73 32 30 30 38 4c 6f 67 46 69 6c 65 5d  llVs2008LogFile]
1320: 5d 5d 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70 46  ]]....  cleanupF
1330: 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 7d  ile $fileName..}
1340: 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74 20   -body {..  set 
1350: 6f 75 74 70 75 74 20 22 22 0d 0a 0d 0a 20 20 73  output ""....  s
1360: 65 74 20 63 6f 64 65 20 5b 63 61 74 63 68 20 7b  et code [catch {
1370: 0d 0a 20 20 20 20 74 65 73 74 43 6c 72 45 78 65  ..    testClrExe
1380: 63 20 24 69 6e 73 74 61 6c 6c 65 72 45 78 65 46  c $installerExeF
1390: 69 6c 65 20 5b 6c 69 73 74 20 2d 65 76 65 6e 74  ile [list -event
13a0: 66 6c 61 67 73 20 57 61 69 74 20 2d 73 74 64 6f  flags Wait -stdo
13b0: 75 74 20 6f 75 74 70 75 74 20 5c 0d 0a 20 20 20  ut output \..   
13c0: 20 20 20 20 20 2d 73 75 63 63 65 73 73 20 53 75       -success Su
13d0: 63 63 65 73 73 5d 20 2d 64 65 62 75 67 50 72 69  ccess] -debugPri
13e0: 6f 72 69 74 79 20 4c 6f 77 65 73 74 20 2d 74 72  ority Lowest -tr
13f0: 61 63 65 50 72 69 6f 72 69 74 79 20 4d 65 64 69  acePriority Medi
1400: 75 6d 48 69 67 68 20 5c 0d 0a 20 20 20 20 20 20  umHigh \..      
1410: 20 20 2d 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73    -noRuntimeVers
1420: 69 6f 6e 20 74 72 75 65 20 2d 6e 6f 43 6f 6d 70  ion true -noComp
1430: 61 63 74 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46  act true -noNetF
1440: 78 34 30 20 74 72 75 65 20 5c 0d 0a 20 20 20 20  x40 true \..    
1450: 20 20 20 20 2d 6e 6f 4e 65 74 46 78 34 35 20 74      -noNetFx45 t
1460: 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 31 20  rue -noNetFx451 
1470: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 32  true -noNetFx452
1480: 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 36   true -noNetFx46
1490: 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20   true \..       
14a0: 20 2d 6e 6f 4e 65 74 46 78 34 36 31 20 74 72 75   -noNetFx461 tru
14b0: 65 20 2d 6e 6f 4e 65 74 46 78 34 36 32 20 74 72  e -noNetFx462 tr
14c0: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 37 20 74 72  ue -noNetFx47 tr
14d0: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 37 31 20 74  ue -noNetFx471 t
14e0: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
14f0: 6e 6f 4e 65 74 46 78 34 37 32 20 74 72 75 65 20  noNetFx472 true 
1500: 2d 6e 6f 56 73 32 30 30 35 20 74 72 75 65 20 2d  -noVs2005 true -
1510: 6e 6f 56 73 32 30 31 30 20 74 72 75 65 20 2d 6e  noVs2010 true -n
1520: 6f 56 73 32 30 31 32 20 74 72 75 65 20 5c 0d 0a  oVs2012 true \..
1530: 20 20 20 20 20 20 20 20 2d 6e 6f 56 73 32 30 31          -noVs201
1540: 33 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 35  3 true -noVs2015
1550: 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 37 20   true -noVs2017 
1560: 74 72 75 65 20 2d 77 68 61 74 49 66 20 74 72 75  true -whatIf tru
1570: 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 76 65  e \..        -ve
1580: 72 62 6f 73 65 20 74 72 75 65 20 2d 63 6f 6e 66  rbose true -conf
1590: 69 72 6d 20 74 72 75 65 20 2d 69 6e 73 74 61 6c  irm true -instal
15a0: 6c 20 74 72 75 65 20 2d 64 65 62 75 67 20 74 72  l true -debug tr
15b0: 75 65 20 2d 77 6f 77 36 34 20 74 72 75 65 20 5c  ue -wow64 true \
15c0: 0d 0a 20 20 20 20 20 20 20 20 2d 64 69 72 65 63  ..        -direc
15d0: 74 6f 72 79 20 5b 66 69 6c 65 20 6e 61 74 69 76  tory [file nativ
15e0: 65 6e 61 6d 65 20 5b 67 65 74 42 75 69 6c 64 44  ename [getBuildD
15f0: 69 72 65 63 74 6f 72 79 20 74 72 75 65 5d 5d 20  irectory true]] 
1600: 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6c 6f 67 46  \..        -logF
1610: 69 6c 65 4e 61 6d 65 20 5b 61 70 70 65 6e 64 41  ileName [appendA
1620: 72 67 73 20 5c 22 20 5b 66 69 6c 65 20 6e 61 74  rgs \" [file nat
1630: 69 76 65 6e 61 6d 65 20 24 66 69 6c 65 4e 61 6d  ivename $fileNam
1640: 65 5d 20 5c 22 5d 20 5c 0d 0a 20 20 20 20 20 20  e] \"] \..      
1650: 20 20 2d 74 72 61 63 65 46 6f 72 6d 61 74 20 5b    -traceFormat [
1660: 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20 22 23  appendArgs \" "#
1670: 7b 30 7d 3a 20 7b 32 7d 22 20 5c 22 5d 0d 0a 20  {0}: {2}" \"].. 
1680: 20 7d 20 65 72 72 6f 72 5d 0d 0a 0d 0a 20 20 74   } error]....  t
1690: 6c 6f 67 20 22 2d 2d 2d 2d 20 42 45 47 49 4e 20  log "---- BEGIN 
16a0: 53 54 44 4f 55 54 20 4f 55 54 50 55 54 5c 6e 22  STDOUT OUTPUT\n"
16b0: 0d 0a 20 20 74 6c 6f 67 20 24 6f 75 74 70 75 74  ..  tlog $output
16c0: 0d 0a 20 20 74 6c 6f 67 20 22 5c 6e 2d 2d 2d 2d  ..  tlog "\n----
16d0: 20 45 4e 44 20 53 54 44 4f 55 54 20 4f 55 54 50   END STDOUT OUTP
16e0: 55 54 5c 6e 22 0d 0a 0d 0a 20 20 73 65 74 20 6c  UT\n"....  set l
16f0: 69 6e 65 4e 75 6d 62 65 72 20 30 0d 0a 20 20 73  ineNumber 0..  s
1700: 65 74 20 69 73 36 34 20 5b 68 61 76 65 43 6f 6e  et is64 [haveCon
1710: 73 74 72 61 69 6e 74 20 61 6d 64 36 34 2e 36 34  straint amd64.64
1720: 62 69 74 5d 0d 0a 20 20 73 65 74 20 77 6f 77 36  bit]..  set wow6
1730: 34 20 5b 65 78 70 72 20 7b 24 69 73 36 34 20 3f  4 [expr {$is64 ?
1740: 20 22 5c 5c 57 6f 77 36 34 33 32 4e 6f 64 65 22   "\\Wow6432Node"
1750: 20 3a 20 22 22 7d 5d 0d 0a 0d 0a 20 20 6c 69 73   : ""}]....  lis
1760: 74 20 24 63 6f 64 65 20 5b 65 78 70 72 20 7b 24  t $code [expr {$
1770: 63 6f 64 65 20 3d 3d 20 30 20 3f 20 5b 73 74 72  code == 0 ? [str
1780: 69 6e 67 20 65 71 75 61 6c 20 2d 6e 6f 63 61 73  ing equal -nocas
1790: 65 20 5b 72 65 61 64 46 69 6c 65 20 24 66 69 6c  e [readFile $fil
17a0: 65 4e 61 6d 65 5d 20 5c 0d 0a 20 20 20 20 20 20  eName] \..      
17b0: 5b 73 75 62 73 74 20 2d 6e 6f 62 61 63 6b 73 6c  [subst -nobacksl
17c0: 61 73 68 65 73 20 5b 72 65 61 64 46 69 6c 65 20  ashes [readFile 
17d0: 24 74 65 73 74 49 6e 73 74 61 6c 6c 56 73 32 30  $testInstallVs20
17e0: 30 38 4c 6f 67 46 69 6c 65 5d 5d 5d 20 3a 20 24  08LogFile]]] : $
17f0: 65 72 72 6f 72 7d 5d 0d 0a 7d 20 2d 63 6c 65 61  error}]..} -clea
1800: 6e 75 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75 70  nup {..  cleanup
1810: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d 0a  File $fileName..
1820: 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d  ..  unset -nocom
1830: 70 6c 61 69 6e 20 77 6f 77 36 34 20 69 73 36 34  plain wow64 is64
1840: 20 6c 69 6e 65 4e 75 6d 62 65 72 20 63 6f 64 65   lineNumber code
1850: 20 6f 75 74 70 75 74 20 65 72 72 6f 72 20 66 69   output error fi
1860: 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74  leName..} -const
1870: 72 61 69 6e 74 73 20 5b 66 69 78 43 6f 6e 73 74  raints [fixConst
1880: 72 61 69 6e 74 73 20 7b 65 61 67 6c 65 20 61 64  raints {eagle ad
1890: 6d 69 6e 69 73 74 72 61 74 6f 72 20 21 77 6f 77  ministrator !wow
18a0: 36 34 20 62 75 69 6c 64 59 65 61 72 2e 32 30 30  64 buildYear.200
18b0: 38 5c 0d 0a 76 69 73 75 61 6c 53 74 75 64 69 6f  8\..visualStudio
18c0: 32 30 30 38 20 53 79 73 74 65 6d 2e 44 61 74 61  2008 System.Data
18d0: 2e 53 51 4c 69 74 65 2e 64 6c 6c 5f 76 32 2e 30  .SQLite.dll_v2.0
18e0: 2e 35 30 37 32 37 20 66 69 6c 65 5f 49 6e 73 74  .50727 file_Inst
18f0: 61 6c 6c 65 72 2e 65 78 65 20 74 65 73 74 45 78  aller.exe testEx
1900: 65 63 5c 0d 0a 66 69 6c 65 5f 53 79 73 74 65 6d  ec\..file_System
1910: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c  .Data.SQLite.dll
1920: 20 66 69 6c 65 5f 53 79 73 74 65 6d 2e 44 61 74   file_System.Dat
1930: 61 2e 53 51 4c 69 74 65 2e 4c 69 6e 71 2e 64 6c  a.SQLite.Linq.dl
1940: 6c 5c 0d 0a 66 69 6c 65 5f 53 51 4c 69 74 65 2e  l\..file_SQLite.
1950: 44 65 73 69 67 6e 65 72 2e 64 6c 6c 20 66 69 6c  Designer.dll fil
1960: 65 5f 49 6e 73 74 61 6c 6c 65 72 5f 54 65 73 74  e_Installer_Test
1970: 5f 56 73 32 30 30 38 2e 6c 6f 67 7d 5d 20 2d 72  _Vs2008.log}] -r
1980: 65 73 75 6c 74 20 7b 30 20 54 72 75 65 7d 7d 0d  esult {0 True}}.
1990: 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  ...#############
19a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
19e0: 23 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74  ##....runTest {t
19f0: 65 73 74 20 69 6e 73 74 61 6c 6c 65 72 2d 31 2e  est installer-1.
1a00: 34 20 7b 75 6e 69 6e 73 74 61 6c 6c 65 72 20 74  4 {uninstaller t
1a10: 6f 6f 6c 20 2f 20 56 69 73 75 61 6c 20 53 74 75  ool / Visual Stu
1a20: 64 69 6f 20 32 30 30 38 7d 20 2d 73 65 74 75 70  dio 2008} -setup
1a30: 20 7b 0d 0a 20 20 73 65 74 20 66 69 6c 65 4e 61   {..  set fileNa
1a40: 6d 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 67  me [file join [g
1a50: 65 74 54 65 6d 70 6f 72 61 72 79 44 69 72 65 63  etTemporaryDirec
1a60: 74 6f 72 79 5d 20 5b 66 69 6c 65 20 74 61 69 6c  tory] [file tail
1a70: 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5c 0d 0a   [string map \..
1a80: 20 20 20 20 20 20 5b 6c 69 73 74 20 2e 6c 6f 67        [list .log
1a90: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5f 20 5b   [appendArgs _ [
1aa0: 70 69 64 5d 20 2e 6c 6f 67 5d 5d 20 24 74 65 73  pid] .log]] $tes
1ab0: 74 55 6e 69 6e 73 74 61 6c 6c 56 73 32 30 30 38  tUninstallVs2008
1ac0: 4c 6f 67 46 69 6c 65 5d 5d 5d 0d 0a 0d 0a 20 20  LogFile]]]....  
1ad0: 63 6c 65 61 6e 75 70 46 69 6c 65 20 24 66 69 6c  cleanupFile $fil
1ae0: 65 4e 61 6d 65 0d 0a 7d 20 2d 62 6f 64 79 20 7b  eName..} -body {
1af0: 0d 0a 20 20 73 65 74 20 6f 75 74 70 75 74 20 22  ..  set output "
1b00: 22 0d 0a 0d 0a 20 20 73 65 74 20 63 6f 64 65 20  "....  set code 
1b10: 5b 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 74 65  [catch {..    te
1b20: 73 74 43 6c 72 45 78 65 63 20 24 69 6e 73 74 61  stClrExec $insta
1b30: 6c 6c 65 72 45 78 65 46 69 6c 65 20 5b 6c 69 73  llerExeFile [lis
1b40: 74 20 2d 65 76 65 6e 74 66 6c 61 67 73 20 57 61  t -eventflags Wa
1b50: 69 74 20 2d 73 74 64 6f 75 74 20 6f 75 74 70 75  it -stdout outpu
1b60: 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 73 75  t \..        -su
1b70: 63 63 65 73 73 20 53 75 63 63 65 73 73 5d 20 2d  ccess Success] -
1b80: 64 65 62 75 67 50 72 69 6f 72 69 74 79 20 4c 6f  debugPriority Lo
1b90: 77 65 73 74 20 2d 74 72 61 63 65 50 72 69 6f 72  west -tracePrior
1ba0: 69 74 79 20 4d 65 64 69 75 6d 48 69 67 68 20 5c  ity MediumHigh \
1bb0: 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f 52 75 6e  ..        -noRun
1bc0: 74 69 6d 65 56 65 72 73 69 6f 6e 20 74 72 75 65  timeVersion true
1bd0: 20 2d 6e 6f 43 6f 6d 70 61 63 74 20 74 72 75 65   -noCompact true
1be0: 20 2d 6e 6f 4e 65 74 46 78 34 30 20 74 72 75 65   -noNetFx40 true
1bf0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f 4e   \..        -noN
1c00: 65 74 46 78 34 35 20 74 72 75 65 20 2d 6e 6f 4e  etFx45 true -noN
1c10: 65 74 46 78 34 35 31 20 74 72 75 65 20 2d 6e 6f  etFx451 true -no
1c20: 4e 65 74 46 78 34 35 32 20 74 72 75 65 20 2d 6e  NetFx452 true -n
1c30: 6f 4e 65 74 46 78 34 36 20 74 72 75 65 20 5c 0d  oNetFx46 true \.
1c40: 0a 20 20 20 20 20 20 20 20 2d 6e 6f 4e 65 74 46  .        -noNetF
1c50: 78 34 36 31 20 74 72 75 65 20 2d 6e 6f 4e 65 74  x461 true -noNet
1c60: 46 78 34 36 32 20 74 72 75 65 20 2d 6e 6f 4e 65  Fx462 true -noNe
1c70: 74 46 78 34 37 20 74 72 75 65 20 2d 6e 6f 4e 65  tFx47 true -noNe
1c80: 74 46 78 34 37 31 20 74 72 75 65 20 5c 0d 0a 20  tFx471 true \.. 
1c90: 20 20 20 20 20 20 20 2d 6e 6f 4e 65 74 46 78 34         -noNetFx4
1ca0: 37 32 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 30  72 true -noVs200
1cb0: 35 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 30  5 true -noVs2010
1cc0: 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 32 20   true -noVs2012 
1cd0: 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20  true \..        
1ce0: 2d 6e 6f 56 73 32 30 31 33 20 74 72 75 65 20 2d  -noVs2013 true -
1cf0: 6e 6f 56 73 32 30 31 35 20 74 72 75 65 20 2d 6e  noVs2015 true -n
1d00: 6f 56 73 32 30 31 37 20 74 72 75 65 20 2d 77 68  oVs2017 true -wh
1d10: 61 74 49 66 20 74 72 75 65 20 5c 0d 0a 20 20 20  atIf true \..   
1d20: 20 20 20 20 20 2d 76 65 72 62 6f 73 65 20 74 72       -verbose tr
1d30: 75 65 20 2d 63 6f 6e 66 69 72 6d 20 74 72 75 65  ue -confirm true
1d40: 20 2d 69 6e 73 74 61 6c 6c 20 66 61 6c 73 65 20   -install false 
1d50: 2d 64 65 62 75 67 20 74 72 75 65 20 2d 77 6f 77  -debug true -wow
1d60: 36 34 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20  64 true \..     
1d70: 20 20 20 2d 64 69 72 65 63 74 6f 72 79 20 5b 66     -directory [f
1d80: 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65 20 5b  ile nativename [
1d90: 67 65 74 42 75 69 6c 64 44 69 72 65 63 74 6f 72  getBuildDirector
1da0: 79 20 74 72 75 65 5d 5d 20 5c 0d 0a 20 20 20 20  y true]] \..    
1db0: 20 20 20 20 2d 6c 6f 67 46 69 6c 65 4e 61 6d 65      -logFileName
1dc0: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20   [appendArgs \" 
1dd0: 5b 66 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65  [file nativename
1de0: 20 24 66 69 6c 65 4e 61 6d 65 5d 20 5c 22 5d 20   $fileName] \"] 
1df0: 5c 0d 0a 20 20 20 20 20 20 20 20 2d 74 72 61 63  \..        -trac
1e00: 65 46 6f 72 6d 61 74 20 5b 61 70 70 65 6e 64 41  eFormat [appendA
1e10: 72 67 73 20 5c 22 20 22 23 7b 30 7d 3a 20 7b 32  rgs \" "#{0}: {2
1e20: 7d 22 20 5c 22 5d 0d 0a 20 20 7d 20 65 72 72 6f  }" \"]..  } erro
1e30: 72 5d 0d 0a 0d 0a 20 20 74 6c 6f 67 20 22 2d 2d  r]....  tlog "--
1e40: 2d 2d 20 42 45 47 49 4e 20 53 54 44 4f 55 54 20  -- BEGIN STDOUT 
1e50: 4f 55 54 50 55 54 5c 6e 22 0d 0a 20 20 74 6c 6f  OUTPUT\n"..  tlo
1e60: 67 20 24 6f 75 74 70 75 74 0d 0a 20 20 74 6c 6f  g $output..  tlo
1e70: 67 20 22 5c 6e 2d 2d 2d 2d 20 45 4e 44 20 53 54  g "\n---- END ST
1e80: 44 4f 55 54 20 4f 55 54 50 55 54 5c 6e 22 0d 0a  DOUT OUTPUT\n"..
1e90: 0d 0a 20 20 73 65 74 20 6c 69 6e 65 4e 75 6d 62  ..  set lineNumb
1ea0: 65 72 20 30 0d 0a 20 20 73 65 74 20 69 73 36 34  er 0..  set is64
1eb0: 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74   [haveConstraint
1ec0: 20 61 6d 64 36 34 2e 36 34 62 69 74 5d 0d 0a 20   amd64.64bit].. 
1ed0: 20 73 65 74 20 77 6f 77 36 34 20 5b 65 78 70 72   set wow64 [expr
1ee0: 20 7b 24 69 73 36 34 20 3f 20 22 5c 5c 57 6f 77   {$is64 ? "\\Wow
1ef0: 36 34 33 32 4e 6f 64 65 22 20 3a 20 22 22 7d 5d  6432Node" : ""}]
1f00: 0d 0a 0d 0a 20 20 6c 69 73 74 20 24 63 6f 64 65  ....  list $code
1f10: 20 5b 65 78 70 72 20 7b 24 63 6f 64 65 20 3d 3d   [expr {$code ==
1f20: 20 30 20 3f 20 5b 73 74 72 69 6e 67 20 65 71 75   0 ? [string equ
1f30: 61 6c 20 2d 6e 6f 63 61 73 65 20 5b 72 65 61 64  al -nocase [read
1f40: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 5d 20  File $fileName] 
1f50: 5c 0d 0a 20 20 20 20 20 20 5b 73 75 62 73 74 20  \..      [subst 
1f60: 2d 6e 6f 62 61 63 6b 73 6c 61 73 68 65 73 20 5b  -nobackslashes [
1f70: 72 65 61 64 46 69 6c 65 20 24 74 65 73 74 55 6e  readFile $testUn
1f80: 69 6e 73 74 61 6c 6c 56 73 32 30 30 38 4c 6f 67  installVs2008Log
1f90: 46 69 6c 65 5d 5d 5d 20 3a 20 24 65 72 72 6f 72  File]]] : $error
1fa0: 7d 5d 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b  }]..} -cleanup {
1fb0: 0d 0a 20 20 63 6c 65 61 6e 75 70 46 69 6c 65 20  ..  cleanupFile 
1fc0: 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75  $fileName....  u
1fd0: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
1fe0: 20 77 6f 77 36 34 20 69 73 36 34 20 6c 69 6e 65   wow64 is64 line
1ff0: 4e 75 6d 62 65 72 20 63 6f 64 65 20 6f 75 74 70  Number code outp
2000: 75 74 20 65 72 72 6f 72 20 66 69 6c 65 4e 61 6d  ut error fileNam
2010: 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74  e..} -constraint
2020: 73 20 5b 66 69 78 43 6f 6e 73 74 72 61 69 6e 74  s [fixConstraint
2030: 73 20 7b 65 61 67 6c 65 20 61 64 6d 69 6e 69 73  s {eagle adminis
2040: 74 72 61 74 6f 72 20 21 77 6f 77 36 34 20 62 75  trator !wow64 bu
2050: 69 6c 64 59 65 61 72 2e 32 30 30 38 5c 0d 0a 76  ildYear.2008\..v
2060: 69 73 75 61 6c 53 74 75 64 69 6f 32 30 30 38 20  isualStudio2008 
2070: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
2080: 74 65 2e 64 6c 6c 5f 76 32 2e 30 2e 35 30 37 32  te.dll_v2.0.5072
2090: 37 20 66 69 6c 65 5f 49 6e 73 74 61 6c 6c 65 72  7 file_Installer
20a0: 2e 65 78 65 20 74 65 73 74 45 78 65 63 5c 0d 0a  .exe testExec\..
20b0: 66 69 6c 65 5f 53 79 73 74 65 6d 2e 44 61 74 61  file_System.Data
20c0: 2e 53 51 4c 69 74 65 2e 64 6c 6c 20 66 69 6c 65  .SQLite.dll file
20d0: 5f 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c  _System.Data.SQL
20e0: 69 74 65 2e 4c 69 6e 71 2e 64 6c 6c 5c 0d 0a 66  ite.Linq.dll\..f
20f0: 69 6c 65 5f 53 51 4c 69 74 65 2e 44 65 73 69 67  ile_SQLite.Desig
2100: 6e 65 72 2e 64 6c 6c 20 66 69 6c 65 5f 55 6e 69  ner.dll file_Uni
2110: 6e 73 74 61 6c 6c 65 72 5f 54 65 73 74 5f 56 73  nstaller_Test_Vs
2120: 32 30 30 38 2e 6c 6f 67 7d 5d 20 2d 72 65 73 75  2008.log}] -resu
2130: 6c 74 20 7b 30 20 54 72 75 65 7d 7d 0d 0a 0d 0a  lt {0 True}}....
2140: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2150: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
2190: 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65 73 74  ...runTest {test
21a0: 20 69 6e 73 74 61 6c 6c 65 72 2d 31 2e 35 20 7b   installer-1.5 {
21b0: 69 6e 73 74 61 6c 6c 65 72 20 74 6f 6f 6c 20 2f  installer tool /
21c0: 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32   Visual Studio 2
21d0: 30 31 30 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20  010} -setup {.. 
21e0: 20 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 5b 66   set fileName [f
21f0: 69 6c 65 20 6a 6f 69 6e 20 5b 67 65 74 54 65 6d  ile join [getTem
2200: 70 6f 72 61 72 79 44 69 72 65 63 74 6f 72 79 5d  poraryDirectory]
2210: 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b 73 74 72   [file tail [str
2220: 69 6e 67 20 6d 61 70 20 5c 0d 0a 20 20 20 20 20  ing map \..     
2230: 20 5b 6c 69 73 74 20 2e 6c 6f 67 20 5b 61 70 70   [list .log [app
2240: 65 6e 64 41 72 67 73 20 5f 20 5b 70 69 64 5d 20  endArgs _ [pid] 
2250: 2e 6c 6f 67 5d 5d 20 24 74 65 73 74 49 6e 73 74  .log]] $testInst
2260: 61 6c 6c 56 73 32 30 31 30 4c 6f 67 46 69 6c 65  allVs2010LogFile
2270: 5d 5d 5d 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70  ]]]....  cleanup
2280: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d 0a  File $fileName..
2290: 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74  } -body {..  set
22a0: 20 6f 75 74 70 75 74 20 22 22 0d 0a 0d 0a 20 20   output ""....  
22b0: 73 65 74 20 63 6f 64 65 20 5b 63 61 74 63 68 20  set code [catch 
22c0: 7b 0d 0a 20 20 20 20 74 65 73 74 43 6c 72 45 78  {..    testClrEx
22d0: 65 63 20 24 69 6e 73 74 61 6c 6c 65 72 45 78 65  ec $installerExe
22e0: 46 69 6c 65 20 5b 6c 69 73 74 20 2d 65 76 65 6e  File [list -even
22f0: 74 66 6c 61 67 73 20 57 61 69 74 20 2d 73 74 64  tflags Wait -std
2300: 6f 75 74 20 6f 75 74 70 75 74 20 5c 0d 0a 20 20  out output \..  
2310: 20 20 20 20 20 20 2d 73 75 63 63 65 73 73 20 53        -success S
2320: 75 63 63 65 73 73 5d 20 2d 64 65 62 75 67 50 72  uccess] -debugPr
2330: 69 6f 72 69 74 79 20 4c 6f 77 65 73 74 20 2d 74  iority Lowest -t
2340: 72 61 63 65 50 72 69 6f 72 69 74 79 20 4d 65 64  racePriority Med
2350: 69 75 6d 48 69 67 68 20 5c 0d 0a 20 20 20 20 20  iumHigh \..     
2360: 20 20 20 2d 6e 6f 52 75 6e 74 69 6d 65 56 65 72     -noRuntimeVer
2370: 73 69 6f 6e 20 74 72 75 65 20 2d 6e 6f 43 6f 6d  sion true -noCom
2380: 70 61 63 74 20 74 72 75 65 20 2d 6e 6f 4e 65 74  pact true -noNet
2390: 46 78 32 30 20 74 72 75 65 20 5c 0d 0a 20 20 20  Fx20 true \..   
23a0: 20 20 20 20 20 2d 6e 6f 4e 65 74 46 78 33 35 20       -noNetFx35 
23b0: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 20  true -noNetFx45 
23c0: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 31  true -noNetFx451
23d0: 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35   true -noNetFx45
23e0: 32 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20  2 true \..      
23f0: 20 20 2d 6e 6f 4e 65 74 46 78 34 36 20 74 72 75    -noNetFx46 tru
2400: 65 20 2d 6e 6f 4e 65 74 46 78 34 36 31 20 74 72  e -noNetFx461 tr
2410: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 36 32 20 74  ue -noNetFx462 t
2420: 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 37 20 74  rue -noNetFx47 t
2430: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
2440: 6e 6f 4e 65 74 46 78 34 37 31 20 74 72 75 65 20  noNetFx471 true 
2450: 2d 6e 6f 4e 65 74 46 78 34 37 32 20 74 72 75 65  -noNetFx472 true
2460: 20 2d 6e 6f 56 73 32 30 30 35 20 74 72 75 65 20   -noVs2005 true 
2470: 2d 6e 6f 56 73 32 30 30 38 20 74 72 75 65 20 5c  -noVs2008 true \
2480: 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f 56 73 32  ..        -noVs2
2490: 30 31 32 20 74 72 75 65 20 2d 6e 6f 56 73 32 30  012 true -noVs20
24a0: 31 33 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31  13 true -noVs201
24b0: 35 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 37  5 true -noVs2017
24c0: 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20   true \..       
24d0: 20 2d 77 68 61 74 49 66 20 74 72 75 65 20 2d 76   -whatIf true -v
24e0: 65 72 62 6f 73 65 20 74 72 75 65 20 2d 63 6f 6e  erbose true -con
24f0: 66 69 72 6d 20 74 72 75 65 20 2d 69 6e 73 74 61  firm true -insta
2500: 6c 6c 20 74 72 75 65 20 2d 64 65 62 75 67 20 74  ll true -debug t
2510: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
2520: 77 6f 77 36 34 20 74 72 75 65 20 2d 64 69 72 65  wow64 true -dire
2530: 63 74 6f 72 79 20 5b 66 69 6c 65 20 6e 61 74 69  ctory [file nati
2540: 76 65 6e 61 6d 65 20 5b 67 65 74 42 75 69 6c 64  vename [getBuild
2550: 44 69 72 65 63 74 6f 72 79 20 74 72 75 65 5d 5d  Directory true]]
2560: 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6c 6f 67   \..        -log
2570: 46 69 6c 65 4e 61 6d 65 20 5b 61 70 70 65 6e 64  FileName [append
2580: 41 72 67 73 20 5c 22 20 5b 66 69 6c 65 20 6e 61  Args \" [file na
2590: 74 69 76 65 6e 61 6d 65 20 24 66 69 6c 65 4e 61  tivename $fileNa
25a0: 6d 65 5d 20 5c 22 5d 20 5c 0d 0a 20 20 20 20 20  me] \"] \..     
25b0: 20 20 20 2d 74 72 61 63 65 46 6f 72 6d 61 74 20     -traceFormat 
25c0: 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20 22  [appendArgs \" "
25d0: 23 7b 30 7d 3a 20 7b 32 7d 22 20 5c 22 5d 0d 0a  #{0}: {2}" \"]..
25e0: 20 20 7d 20 65 72 72 6f 72 5d 0d 0a 0d 0a 20 20    } error]....  
25f0: 74 6c 6f 67 20 22 2d 2d 2d 2d 20 42 45 47 49 4e  tlog "---- BEGIN
2600: 20 53 54 44 4f 55 54 20 4f 55 54 50 55 54 5c 6e   STDOUT OUTPUT\n
2610: 22 0d 0a 20 20 74 6c 6f 67 20 24 6f 75 74 70 75  "..  tlog $outpu
2620: 74 0d 0a 20 20 74 6c 6f 67 20 22 5c 6e 2d 2d 2d  t..  tlog "\n---
2630: 2d 20 45 4e 44 20 53 54 44 4f 55 54 20 4f 55 54  - END STDOUT OUT
2640: 50 55 54 5c 6e 22 0d 0a 0d 0a 20 20 73 65 74 20  PUT\n"....  set 
2650: 6c 69 6e 65 4e 75 6d 62 65 72 20 30 0d 0a 20 20  lineNumber 0..  
2660: 73 65 74 20 69 73 36 34 20 5b 68 61 76 65 43 6f  set is64 [haveCo
2670: 6e 73 74 72 61 69 6e 74 20 61 6d 64 36 34 2e 36  nstraint amd64.6
2680: 34 62 69 74 5d 0d 0a 20 20 73 65 74 20 77 6f 77  4bit]..  set wow
2690: 36 34 20 5b 65 78 70 72 20 7b 24 69 73 36 34 20  64 [expr {$is64 
26a0: 3f 20 22 5c 5c 57 6f 77 36 34 33 32 4e 6f 64 65  ? "\\Wow6432Node
26b0: 22 20 3a 20 22 22 7d 5d 0d 0a 0d 0a 20 20 6c 69  " : ""}]....  li
26c0: 73 74 20 24 63 6f 64 65 20 5b 65 78 70 72 20 7b  st $code [expr {
26d0: 24 63 6f 64 65 20 3d 3d 20 30 20 3f 20 5b 73 74  $code == 0 ? [st
26e0: 72 69 6e 67 20 65 71 75 61 6c 20 2d 6e 6f 63 61  ring equal -noca
26f0: 73 65 20 5b 72 65 61 64 46 69 6c 65 20 24 66 69  se [readFile $fi
2700: 6c 65 4e 61 6d 65 5d 20 5c 0d 0a 20 20 20 20 20  leName] \..     
2710: 20 5b 73 75 62 73 74 20 2d 6e 6f 62 61 63 6b 73   [subst -nobacks
2720: 6c 61 73 68 65 73 20 5b 72 65 61 64 46 69 6c 65  lashes [readFile
2730: 20 24 74 65 73 74 49 6e 73 74 61 6c 6c 56 73 32   $testInstallVs2
2740: 30 31 30 4c 6f 67 46 69 6c 65 5d 5d 5d 20 3a 20  010LogFile]]] : 
2750: 24 65 72 72 6f 72 7d 5d 0d 0a 7d 20 2d 63 6c 65  $error}]..} -cle
2760: 61 6e 75 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75  anup {..  cleanu
2770: 70 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d  pFile $fileName.
2780: 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f  ...  unset -noco
2790: 6d 70 6c 61 69 6e 20 77 6f 77 36 34 20 69 73 36  mplain wow64 is6
27a0: 34 20 6c 69 6e 65 4e 75 6d 62 65 72 20 63 6f 64  4 lineNumber cod
27b0: 65 20 6f 75 74 70 75 74 20 65 72 72 6f 72 20 66  e output error f
27c0: 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73  ileName..} -cons
27d0: 74 72 61 69 6e 74 73 20 5b 66 69 78 43 6f 6e 73  traints [fixCons
27e0: 74 72 61 69 6e 74 73 20 7b 65 61 67 6c 65 20 61  traints {eagle a
27f0: 64 6d 69 6e 69 73 74 72 61 74 6f 72 20 21 77 6f  dministrator !wo
2800: 77 36 34 20 62 75 69 6c 64 59 65 61 72 2e 32 30  w64 buildYear.20
2810: 31 30 5c 0d 0a 76 69 73 75 61 6c 53 74 75 64 69  10\..visualStudi
2820: 6f 32 30 31 30 20 53 79 73 74 65 6d 2e 44 61 74  o2010 System.Dat
2830: 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 5f 76 34 2e  a.SQLite.dll_v4.
2840: 30 2e 33 30 33 31 39 20 66 69 6c 65 5f 49 6e 73  0.30319 file_Ins
2850: 74 61 6c 6c 65 72 2e 65 78 65 20 74 65 73 74 45  taller.exe testE
2860: 78 65 63 5c 0d 0a 66 69 6c 65 5f 53 79 73 74 65  xec\..file_Syste
2870: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c  m.Data.SQLite.dl
2880: 6c 20 66 69 6c 65 5f 53 79 73 74 65 6d 2e 44 61  l file_System.Da
2890: 74 61 2e 53 51 4c 69 74 65 2e 4c 69 6e 71 2e 64  ta.SQLite.Linq.d
28a0: 6c 6c 5c 0d 0a 66 69 6c 65 5f 53 79 73 74 65 6d  ll\..file_System
28b0: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 45 46 36  .Data.SQLite.EF6
28c0: 2e 64 6c 6c 20 66 69 6c 65 5f 53 51 4c 69 74 65  .dll file_SQLite
28d0: 2e 44 65 73 69 67 6e 65 72 2e 64 6c 6c 5c 0d 0a  .Designer.dll\..
28e0: 66 69 6c 65 5f 49 6e 73 74 61 6c 6c 65 72 5f 54  file_Installer_T
28f0: 65 73 74 5f 56 73 32 30 31 30 2e 6c 6f 67 7d 5d  est_Vs2010.log}]
2900: 20 2d 72 65 73 75 6c 74 20 7b 30 20 54 72 75 65   -result {0 True
2910: 7d 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23  }}....##########
2920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2960: 23 23 23 23 23 0d 0a 0d 0a 72 75 6e 54 65 73 74  #####....runTest
2970: 20 7b 74 65 73 74 20 69 6e 73 74 61 6c 6c 65 72   {test installer
2980: 2d 31 2e 36 20 7b 75 6e 69 6e 73 74 61 6c 6c 65  -1.6 {uninstalle
2990: 72 20 74 6f 6f 6c 20 2f 20 56 69 73 75 61 6c 20  r tool / Visual 
29a0: 53 74 75 64 69 6f 20 32 30 31 30 7d 20 2d 73 65  Studio 2010} -se
29b0: 74 75 70 20 7b 0d 0a 20 20 73 65 74 20 66 69 6c  tup {..  set fil
29c0: 65 4e 61 6d 65 20 5b 66 69 6c 65 20 6a 6f 69 6e  eName [file join
29d0: 20 5b 67 65 74 54 65 6d 70 6f 72 61 72 79 44 69   [getTemporaryDi
29e0: 72 65 63 74 6f 72 79 5d 20 5b 66 69 6c 65 20 74  rectory] [file t
29f0: 61 69 6c 20 5b 73 74 72 69 6e 67 20 6d 61 70 20  ail [string map 
2a00: 5c 0d 0a 20 20 20 20 20 20 5b 6c 69 73 74 20 2e  \..      [list .
2a10: 6c 6f 67 20 5b 61 70 70 65 6e 64 41 72 67 73 20  log [appendArgs 
2a20: 5f 20 5b 70 69 64 5d 20 2e 6c 6f 67 5d 5d 20 24  _ [pid] .log]] $
2a30: 74 65 73 74 55 6e 69 6e 73 74 61 6c 6c 56 73 32  testUninstallVs2
2a40: 30 31 30 4c 6f 67 46 69 6c 65 5d 5d 5d 0d 0a 0d  010LogFile]]]...
2a50: 0a 20 20 63 6c 65 61 6e 75 70 46 69 6c 65 20 24  .  cleanupFile $
2a60: 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 62 6f 64  fileName..} -bod
2a70: 79 20 7b 0d 0a 20 20 73 65 74 20 6f 75 74 70 75  y {..  set outpu
2a80: 74 20 22 22 0d 0a 0d 0a 20 20 73 65 74 20 63 6f  t ""....  set co
2a90: 64 65 20 5b 63 61 74 63 68 20 7b 0d 0a 20 20 20  de [catch {..   
2aa0: 20 74 65 73 74 43 6c 72 45 78 65 63 20 24 69 6e   testClrExec $in
2ab0: 73 74 61 6c 6c 65 72 45 78 65 46 69 6c 65 20 5b  stallerExeFile [
2ac0: 6c 69 73 74 20 2d 65 76 65 6e 74 66 6c 61 67 73  list -eventflags
2ad0: 20 57 61 69 74 20 2d 73 74 64 6f 75 74 20 6f 75   Wait -stdout ou
2ae0: 74 70 75 74 20 5c 0d 0a 20 20 20 20 20 20 20 20  tput \..        
2af0: 2d 73 75 63 63 65 73 73 20 53 75 63 63 65 73 73  -success Success
2b00: 5d 20 2d 64 65 62 75 67 50 72 69 6f 72 69 74 79  ] -debugPriority
2b10: 20 4c 6f 77 65 73 74 20 2d 74 72 61 63 65 50 72   Lowest -tracePr
2b20: 69 6f 72 69 74 79 20 4d 65 64 69 75 6d 48 69 67  iority MediumHig
2b30: 68 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f  h \..        -no
2b40: 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 20 74  RuntimeVersion t
2b50: 72 75 65 20 2d 6e 6f 43 6f 6d 70 61 63 74 20 74  rue -noCompact t
2b60: 72 75 65 20 2d 6e 6f 4e 65 74 46 78 32 30 20 74  rue -noNetFx20 t
2b70: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
2b80: 6e 6f 4e 65 74 46 78 33 35 20 74 72 75 65 20 2d  noNetFx35 true -
2b90: 6e 6f 4e 65 74 46 78 34 35 20 74 72 75 65 20 2d  noNetFx45 true -
2ba0: 6e 6f 4e 65 74 46 78 34 35 31 20 74 72 75 65 20  noNetFx451 true 
2bb0: 2d 6e 6f 4e 65 74 46 78 34 35 32 20 74 72 75 65  -noNetFx452 true
2bc0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f 4e   \..        -noN
2bd0: 65 74 46 78 34 36 20 74 72 75 65 20 2d 6e 6f 4e  etFx46 true -noN
2be0: 65 74 46 78 34 36 31 20 74 72 75 65 20 2d 6e 6f  etFx461 true -no
2bf0: 4e 65 74 46 78 34 36 32 20 74 72 75 65 20 2d 6e  NetFx462 true -n
2c00: 6f 4e 65 74 46 78 34 37 20 74 72 75 65 20 5c 0d  oNetFx47 true \.
2c10: 0a 20 20 20 20 20 20 20 20 2d 6e 6f 4e 65 74 46  .        -noNetF
2c20: 78 34 37 31 20 74 72 75 65 20 2d 6e 6f 4e 65 74  x471 true -noNet
2c30: 46 78 34 37 32 20 74 72 75 65 20 2d 6e 6f 56 73  Fx472 true -noVs
2c40: 32 30 30 35 20 74 72 75 65 20 2d 6e 6f 56 73 32  2005 true -noVs2
2c50: 30 30 38 20 74 72 75 65 20 5c 0d 0a 20 20 20 20  008 true \..    
2c60: 20 20 20 20 2d 6e 6f 56 73 32 30 31 32 20 74 72      -noVs2012 tr
2c70: 75 65 20 2d 6e 6f 56 73 32 30 31 33 20 74 72 75  ue -noVs2013 tru
2c80: 65 20 2d 6e 6f 56 73 32 30 31 35 20 74 72 75 65  e -noVs2015 true
2c90: 20 2d 6e 6f 56 73 32 30 31 37 20 74 72 75 65 20   -noVs2017 true 
2ca0: 5c 0d 0a 20 20 20 20 20 20 20 20 2d 77 68 61 74  \..        -what
2cb0: 49 66 20 74 72 75 65 20 2d 76 65 72 62 6f 73 65  If true -verbose
2cc0: 20 74 72 75 65 20 2d 63 6f 6e 66 69 72 6d 20 74   true -confirm t
2cd0: 72 75 65 20 2d 69 6e 73 74 61 6c 6c 20 66 61 6c  rue -install fal
2ce0: 73 65 20 2d 64 65 62 75 67 20 74 72 75 65 20 5c  se -debug true \
2cf0: 0d 0a 20 20 20 20 20 20 20 20 2d 77 6f 77 36 34  ..        -wow64
2d00: 20 74 72 75 65 20 2d 64 69 72 65 63 74 6f 72 79   true -directory
2d10: 20 5b 66 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d   [file nativenam
2d20: 65 20 5b 67 65 74 42 75 69 6c 64 44 69 72 65 63  e [getBuildDirec
2d30: 74 6f 72 79 20 74 72 75 65 5d 5d 20 5c 0d 0a 20  tory true]] \.. 
2d40: 20 20 20 20 20 20 20 2d 6c 6f 67 46 69 6c 65 4e         -logFileN
2d50: 61 6d 65 20 5b 61 70 70 65 6e 64 41 72 67 73 20  ame [appendArgs 
2d60: 5c 22 20 5b 66 69 6c 65 20 6e 61 74 69 76 65 6e  \" [file nativen
2d70: 61 6d 65 20 24 66 69 6c 65 4e 61 6d 65 5d 20 5c  ame $fileName] \
2d80: 22 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 74  "] \..        -t
2d90: 72 61 63 65 46 6f 72 6d 61 74 20 5b 61 70 70 65  raceFormat [appe
2da0: 6e 64 41 72 67 73 20 5c 22 20 22 23 7b 30 7d 3a  ndArgs \" "#{0}:
2db0: 20 7b 32 7d 22 20 5c 22 5d 0d 0a 20 20 7d 20 65   {2}" \"]..  } e
2dc0: 72 72 6f 72 5d 0d 0a 0d 0a 20 20 74 6c 6f 67 20  rror]....  tlog 
2dd0: 22 2d 2d 2d 2d 20 42 45 47 49 4e 20 53 54 44 4f  "---- BEGIN STDO
2de0: 55 54 20 4f 55 54 50 55 54 5c 6e 22 0d 0a 20 20  UT OUTPUT\n"..  
2df0: 74 6c 6f 67 20 24 6f 75 74 70 75 74 0d 0a 20 20  tlog $output..  
2e00: 74 6c 6f 67 20 22 5c 6e 2d 2d 2d 2d 20 45 4e 44  tlog "\n---- END
2e10: 20 53 54 44 4f 55 54 20 4f 55 54 50 55 54 5c 6e   STDOUT OUTPUT\n
2e20: 22 0d 0a 0d 0a 20 20 73 65 74 20 6c 69 6e 65 4e  "....  set lineN
2e30: 75 6d 62 65 72 20 30 0d 0a 20 20 73 65 74 20 69  umber 0..  set i
2e40: 73 36 34 20 5b 68 61 76 65 43 6f 6e 73 74 72 61  s64 [haveConstra
2e50: 69 6e 74 20 61 6d 64 36 34 2e 36 34 62 69 74 5d  int amd64.64bit]
2e60: 0d 0a 20 20 73 65 74 20 77 6f 77 36 34 20 5b 65  ..  set wow64 [e
2e70: 78 70 72 20 7b 24 69 73 36 34 20 3f 20 22 5c 5c  xpr {$is64 ? "\\
2e80: 57 6f 77 36 34 33 32 4e 6f 64 65 22 20 3a 20 22  Wow6432Node" : "
2e90: 22 7d 5d 0d 0a 0d 0a 20 20 6c 69 73 74 20 24 63  "}]....  list $c
2ea0: 6f 64 65 20 5b 65 78 70 72 20 7b 24 63 6f 64 65  ode [expr {$code
2eb0: 20 3d 3d 20 30 20 3f 20 5b 73 74 72 69 6e 67 20   == 0 ? [string 
2ec0: 65 71 75 61 6c 20 2d 6e 6f 63 61 73 65 20 5b 72  equal -nocase [r
2ed0: 65 61 64 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d  eadFile $fileNam
2ee0: 65 5d 20 5c 0d 0a 20 20 20 20 20 20 5b 73 75 62  e] \..      [sub
2ef0: 73 74 20 2d 6e 6f 62 61 63 6b 73 6c 61 73 68 65  st -nobackslashe
2f00: 73 20 5b 72 65 61 64 46 69 6c 65 20 24 74 65 73  s [readFile $tes
2f10: 74 55 6e 69 6e 73 74 61 6c 6c 56 73 32 30 31 30  tUninstallVs2010
2f20: 4c 6f 67 46 69 6c 65 5d 5d 5d 20 3a 20 24 65 72  LogFile]]] : $er
2f30: 72 6f 72 7d 5d 0d 0a 7d 20 2d 63 6c 65 61 6e 75  ror}]..} -cleanu
2f40: 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75 70 46 69  p {..  cleanupFi
2f50: 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a  le $fileName....
2f60: 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c    unset -nocompl
2f70: 61 69 6e 20 77 6f 77 36 34 20 69 73 36 34 20 6c  ain wow64 is64 l
2f80: 69 6e 65 4e 75 6d 62 65 72 20 63 6f 64 65 20 6f  ineNumber code o
2f90: 75 74 70 75 74 20 65 72 72 6f 72 20 66 69 6c 65  utput error file
2fa0: 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61  Name..} -constra
2fb0: 69 6e 74 73 20 5b 66 69 78 43 6f 6e 73 74 72 61  ints [fixConstra
2fc0: 69 6e 74 73 20 7b 65 61 67 6c 65 20 61 64 6d 69  ints {eagle admi
2fd0: 6e 69 73 74 72 61 74 6f 72 20 21 77 6f 77 36 34  nistrator !wow64
2fe0: 20 62 75 69 6c 64 59 65 61 72 2e 32 30 31 30 5c   buildYear.2010\
2ff0: 0d 0a 76 69 73 75 61 6c 53 74 75 64 69 6f 32 30  ..visualStudio20
3000: 31 30 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  10 System.Data.S
3010: 51 4c 69 74 65 2e 64 6c 6c 5f 76 34 2e 30 2e 33  QLite.dll_v4.0.3
3020: 30 33 31 39 20 66 69 6c 65 5f 49 6e 73 74 61 6c  0319 file_Instal
3030: 6c 65 72 2e 65 78 65 20 74 65 73 74 45 78 65 63  ler.exe testExec
3040: 5c 0d 0a 66 69 6c 65 5f 53 79 73 74 65 6d 2e 44  \..file_System.D
3050: 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 20 66  ata.SQLite.dll f
3060: 69 6c 65 5f 53 79 73 74 65 6d 2e 44 61 74 61 2e  ile_System.Data.
3070: 53 51 4c 69 74 65 2e 4c 69 6e 71 2e 64 6c 6c 5c  SQLite.Linq.dll\
3080: 0d 0a 66 69 6c 65 5f 53 79 73 74 65 6d 2e 44 61  ..file_System.Da
3090: 74 61 2e 53 51 4c 69 74 65 2e 45 46 36 2e 64 6c  ta.SQLite.EF6.dl
30a0: 6c 20 66 69 6c 65 5f 53 51 4c 69 74 65 2e 44 65  l file_SQLite.De
30b0: 73 69 67 6e 65 72 2e 64 6c 6c 5c 0d 0a 66 69 6c  signer.dll\..fil
30c0: 65 5f 55 6e 69 6e 73 74 61 6c 6c 65 72 5f 54 65  e_Uninstaller_Te
30d0: 73 74 5f 56 73 32 30 31 30 2e 6c 6f 67 7d 5d 20  st_Vs2010.log}] 
30e0: 2d 72 65 73 75 6c 74 20 7b 30 20 54 72 75 65 7d  -result {0 True}
30f0: 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23  }....###########
3100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3140: 23 23 23 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20  ####....runTest 
3150: 7b 74 65 73 74 20 69 6e 73 74 61 6c 6c 65 72 2d  {test installer-
3160: 31 2e 37 20 7b 69 6e 73 74 61 6c 6c 65 72 20 74  1.7 {installer t
3170: 6f 6f 6c 20 2f 20 56 69 73 75 61 6c 20 53 74 75  ool / Visual Stu
3180: 64 69 6f 20 32 30 31 32 7d 20 2d 73 65 74 75 70  dio 2012} -setup
3190: 20 7b 0d 0a 20 20 73 65 74 20 66 69 6c 65 4e 61   {..  set fileNa
31a0: 6d 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 67  me [file join [g
31b0: 65 74 54 65 6d 70 6f 72 61 72 79 44 69 72 65 63  etTemporaryDirec
31c0: 74 6f 72 79 5d 20 5b 66 69 6c 65 20 74 61 69 6c  tory] [file tail
31d0: 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5c 0d 0a   [string map \..
31e0: 20 20 20 20 20 20 5b 6c 69 73 74 20 2e 6c 6f 67        [list .log
31f0: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5f 20 5b   [appendArgs _ [
3200: 70 69 64 5d 20 2e 6c 6f 67 5d 5d 20 24 74 65 73  pid] .log]] $tes
3210: 74 49 6e 73 74 61 6c 6c 56 73 32 30 31 32 4c 6f  tInstallVs2012Lo
3220: 67 46 69 6c 65 5d 5d 5d 0d 0a 0d 0a 20 20 63 6c  gFile]]]....  cl
3230: 65 61 6e 75 70 46 69 6c 65 20 24 66 69 6c 65 4e  eanupFile $fileN
3240: 61 6d 65 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a  ame..} -body {..
3250: 20 20 73 65 74 20 6f 75 74 70 75 74 20 22 22 0d    set output "".
3260: 0a 0d 0a 20 20 73 65 74 20 63 6f 64 65 20 5b 63  ...  set code [c
3270: 61 74 63 68 20 7b 0d 0a 20 20 20 20 74 65 73 74  atch {..    test
3280: 43 6c 72 45 78 65 63 20 24 69 6e 73 74 61 6c 6c  ClrExec $install
3290: 65 72 45 78 65 46 69 6c 65 20 5b 6c 69 73 74 20  erExeFile [list 
32a0: 2d 65 76 65 6e 74 66 6c 61 67 73 20 57 61 69 74  -eventflags Wait
32b0: 20 2d 73 74 64 6f 75 74 20 6f 75 74 70 75 74 20   -stdout output 
32c0: 5c 0d 0a 20 20 20 20 20 20 20 20 2d 73 75 63 63  \..        -succ
32d0: 65 73 73 20 53 75 63 63 65 73 73 5d 20 2d 64 65  ess Success] -de
32e0: 62 75 67 50 72 69 6f 72 69 74 79 20 4c 6f 77 65  bugPriority Lowe
32f0: 73 74 20 2d 74 72 61 63 65 50 72 69 6f 72 69 74  st -tracePriorit
3300: 79 20 4d 65 64 69 75 6d 48 69 67 68 20 5c 0d 0a  y MediumHigh \..
3310: 20 20 20 20 20 20 20 20 2d 6e 6f 52 75 6e 74 69          -noRunti
3320: 6d 65 56 65 72 73 69 6f 6e 20 74 72 75 65 20 2d  meVersion true -
3330: 6e 6f 43 6f 6d 70 61 63 74 20 74 72 75 65 20 2d  noCompact true -
3340: 6e 6f 4e 65 74 46 78 32 30 20 74 72 75 65 20 5c  noNetFx20 true \
3350: 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f 4e 65 74  ..        -noNet
3360: 46 78 33 35 20 74 72 75 65 20 2d 6e 6f 4e 65 74  Fx35 true -noNet
3370: 46 78 34 30 20 74 72 75 65 20 2d 6e 6f 4e 65 74  Fx40 true -noNet
3380: 46 78 34 35 31 20 74 72 75 65 20 2d 6e 6f 4e 65  Fx451 true -noNe
3390: 74 46 78 34 35 32 20 74 72 75 65 20 5c 0d 0a 20  tFx452 true \.. 
33a0: 20 20 20 20 20 20 20 2d 6e 6f 4e 65 74 46 78 34         -noNetFx4
33b0: 36 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34  6 true -noNetFx4
33c0: 36 31 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78  61 true -noNetFx
33d0: 34 36 32 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46  462 true -noNetF
33e0: 78 34 37 20 74 72 75 65 20 5c 0d 0a 20 20 20 20  x47 true \..    
33f0: 20 20 20 20 2d 6e 6f 4e 65 74 46 78 34 37 31 20      -noNetFx471 
3400: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 37 32  true -noNetFx472
3410: 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 30 35 20   true -noVs2005 
3420: 74 72 75 65 20 2d 6e 6f 56 73 32 30 30 38 20 74  true -noVs2008 t
3430: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
3440: 6e 6f 56 73 32 30 31 30 20 74 72 75 65 20 2d 6e  noVs2010 true -n
3450: 6f 56 73 32 30 31 33 20 74 72 75 65 20 2d 6e 6f  oVs2013 true -no
3460: 56 73 32 30 31 35 20 74 72 75 65 20 2d 6e 6f 56  Vs2015 true -noV
3470: 73 32 30 31 37 20 74 72 75 65 20 5c 0d 0a 20 20  s2017 true \..  
3480: 20 20 20 20 20 20 2d 77 68 61 74 49 66 20 74 72        -whatIf tr
3490: 75 65 20 2d 76 65 72 62 6f 73 65 20 74 72 75 65  ue -verbose true
34a0: 20 2d 63 6f 6e 66 69 72 6d 20 74 72 75 65 20 2d   -confirm true -
34b0: 69 6e 73 74 61 6c 6c 20 74 72 75 65 20 2d 64 65  install true -de
34c0: 62 75 67 20 74 72 75 65 20 5c 0d 0a 20 20 20 20  bug true \..    
34d0: 20 20 20 20 2d 77 6f 77 36 34 20 74 72 75 65 20      -wow64 true 
34e0: 2d 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 20 34  -configVersion 4
34f0: 2e 30 2e 33 30 33 31 39 20 5c 0d 0a 20 20 20 20  .0.30319 \..    
3500: 20 20 20 20 2d 64 69 72 65 63 74 6f 72 79 20 5b      -directory [
3510: 66 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65 20  file nativename 
3520: 5b 67 65 74 42 75 69 6c 64 44 69 72 65 63 74 6f  [getBuildDirecto
3530: 72 79 20 74 72 75 65 5d 5d 20 5c 0d 0a 20 20 20  ry true]] \..   
3540: 20 20 20 20 20 2d 6c 6f 67 46 69 6c 65 4e 61 6d       -logFileNam
3550: 65 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22  e [appendArgs \"
3560: 20 5b 66 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d   [file nativenam
3570: 65 20 24 66 69 6c 65 4e 61 6d 65 5d 20 5c 22 5d  e $fileName] \"]
3580: 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 74 72 61   \..        -tra
3590: 63 65 46 6f 72 6d 61 74 20 5b 61 70 70 65 6e 64  ceFormat [append
35a0: 41 72 67 73 20 5c 22 20 22 23 7b 30 7d 3a 20 7b  Args \" "#{0}: {
35b0: 32 7d 22 20 5c 22 5d 0d 0a 20 20 7d 20 65 72 72  2}" \"]..  } err
35c0: 6f 72 5d 0d 0a 0d 0a 20 20 74 6c 6f 67 20 22 2d  or]....  tlog "-
35d0: 2d 2d 2d 20 42 45 47 49 4e 20 53 54 44 4f 55 54  --- BEGIN STDOUT
35e0: 20 4f 55 54 50 55 54 5c 6e 22 0d 0a 20 20 74 6c   OUTPUT\n"..  tl
35f0: 6f 67 20 24 6f 75 74 70 75 74 0d 0a 20 20 74 6c  og $output..  tl
3600: 6f 67 20 22 5c 6e 2d 2d 2d 2d 20 45 4e 44 20 53  og "\n---- END S
3610: 54 44 4f 55 54 20 4f 55 54 50 55 54 5c 6e 22 0d  TDOUT OUTPUT\n".
3620: 0a 0d 0a 20 20 73 65 74 20 6c 69 6e 65 4e 75 6d  ...  set lineNum
3630: 62 65 72 20 30 0d 0a 20 20 73 65 74 20 69 73 36  ber 0..  set is6
3640: 34 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e  4 [haveConstrain
3650: 74 20 61 6d 64 36 34 2e 36 34 62 69 74 5d 0d 0a  t amd64.64bit]..
3660: 20 20 73 65 74 20 77 6f 77 36 34 20 5b 65 78 70    set wow64 [exp
3670: 72 20 7b 24 69 73 36 34 20 3f 20 22 5c 5c 57 6f  r {$is64 ? "\\Wo
3680: 77 36 34 33 32 4e 6f 64 65 22 20 3a 20 22 22 7d  w6432Node" : ""}
3690: 5d 0d 0a 0d 0a 20 20 6c 69 73 74 20 24 63 6f 64  ]....  list $cod
36a0: 65 20 5b 65 78 70 72 20 7b 24 63 6f 64 65 20 3d  e [expr {$code =
36b0: 3d 20 30 20 3f 20 5b 73 74 72 69 6e 67 20 65 71  = 0 ? [string eq
36c0: 75 61 6c 20 2d 6e 6f 63 61 73 65 20 5b 72 65 61  ual -nocase [rea
36d0: 64 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 5d  dFile $fileName]
36e0: 20 5c 0d 0a 20 20 20 20 20 20 5b 73 75 62 73 74   \..      [subst
36f0: 20 2d 6e 6f 62 61 63 6b 73 6c 61 73 68 65 73 20   -nobackslashes 
3700: 5b 72 65 61 64 46 69 6c 65 20 24 74 65 73 74 49  [readFile $testI
3710: 6e 73 74 61 6c 6c 56 73 32 30 31 32 4c 6f 67 46  nstallVs2012LogF
3720: 69 6c 65 5d 5d 5d 20 3a 20 24 65 72 72 6f 72 7d  ile]]] : $error}
3730: 5d 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d  ]..} -cleanup {.
3740: 0a 20 20 63 6c 65 61 6e 75 70 46 69 6c 65 20 24  .  cleanupFile $
3750: 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e  fileName....  un
3760: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
3770: 77 6f 77 36 34 20 69 73 36 34 20 6c 69 6e 65 4e  wow64 is64 lineN
3780: 75 6d 62 65 72 20 63 6f 64 65 20 6f 75 74 70 75  umber code outpu
3790: 74 20 65 72 72 6f 72 20 66 69 6c 65 4e 61 6d 65  t error fileName
37a0: 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73  ..} -constraints
37b0: 20 5b 66 69 78 43 6f 6e 73 74 72 61 69 6e 74 73   [fixConstraints
37c0: 20 7b 65 61 67 6c 65 20 61 64 6d 69 6e 69 73 74   {eagle administ
37d0: 72 61 74 6f 72 20 21 77 6f 77 36 34 20 62 75 69  rator !wow64 bui
37e0: 6c 64 59 65 61 72 2e 32 30 31 32 5c 0d 0a 76 69  ldYear.2012\..vi
37f0: 73 75 61 6c 53 74 75 64 69 6f 32 30 31 32 20 53  sualStudio2012 S
3800: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
3810: 65 2e 64 6c 6c 5f 76 34 2e 30 2e 33 30 33 31 39  e.dll_v4.0.30319
3820: 20 66 69 6c 65 5f 49 6e 73 74 61 6c 6c 65 72 2e   file_Installer.
3830: 65 78 65 20 74 65 73 74 45 78 65 63 5c 0d 0a 66  exe testExec\..f
3840: 69 6c 65 5f 53 79 73 74 65 6d 2e 44 61 74 61 2e  ile_System.Data.
3850: 53 51 4c 69 74 65 2e 64 6c 6c 20 66 69 6c 65 5f  SQLite.dll file_
3860: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
3870: 74 65 2e 4c 69 6e 71 2e 64 6c 6c 5c 0d 0a 66 69  te.Linq.dll\..fi
3880: 6c 65 5f 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  le_System.Data.S
3890: 51 4c 69 74 65 2e 45 46 36 2e 64 6c 6c 20 66 69  QLite.EF6.dll fi
38a0: 6c 65 5f 53 51 4c 69 74 65 2e 44 65 73 69 67 6e  le_SQLite.Design
38b0: 65 72 2e 64 6c 6c 5c 0d 0a 66 69 6c 65 5f 49 6e  er.dll\..file_In
38c0: 73 74 61 6c 6c 65 72 5f 54 65 73 74 5f 56 73 32  staller_Test_Vs2
38d0: 30 31 32 2e 6c 6f 67 7d 5d 20 2d 72 65 73 75 6c  012.log}] -resul
38e0: 74 20 7b 30 20 54 72 75 65 7d 7d 0d 0a 0d 0a 23  t {0 True}}....#
38f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
3940: 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65 73 74 20  ..runTest {test 
3950: 69 6e 73 74 61 6c 6c 65 72 2d 31 2e 38 20 7b 75  installer-1.8 {u
3960: 6e 69 6e 73 74 61 6c 6c 65 72 20 74 6f 6f 6c 20  ninstaller tool 
3970: 2f 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20  / Visual Studio 
3980: 32 30 31 32 7d 20 2d 73 65 74 75 70 20 7b 0d 0a  2012} -setup {..
3990: 20 20 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 5b    set fileName [
39a0: 66 69 6c 65 20 6a 6f 69 6e 20 5b 67 65 74 54 65  file join [getTe
39b0: 6d 70 6f 72 61 72 79 44 69 72 65 63 74 6f 72 79  mporaryDirectory
39c0: 5d 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b 73 74  ] [file tail [st
39d0: 72 69 6e 67 20 6d 61 70 20 5c 0d 0a 20 20 20 20  ring map \..    
39e0: 20 20 5b 6c 69 73 74 20 2e 6c 6f 67 20 5b 61 70    [list .log [ap
39f0: 70 65 6e 64 41 72 67 73 20 5f 20 5b 70 69 64 5d  pendArgs _ [pid]
3a00: 20 2e 6c 6f 67 5d 5d 20 24 74 65 73 74 55 6e 69   .log]] $testUni
3a10: 6e 73 74 61 6c 6c 56 73 32 30 31 32 4c 6f 67 46  nstallVs2012LogF
3a20: 69 6c 65 5d 5d 5d 0d 0a 0d 0a 20 20 63 6c 65 61  ile]]]....  clea
3a30: 6e 75 70 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d  nupFile $fileNam
3a40: 65 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20  e..} -body {..  
3a50: 73 65 74 20 6f 75 74 70 75 74 20 22 22 0d 0a 0d  set output ""...
3a60: 0a 20 20 73 65 74 20 63 6f 64 65 20 5b 63 61 74  .  set code [cat
3a70: 63 68 20 7b 0d 0a 20 20 20 20 74 65 73 74 43 6c  ch {..    testCl
3a80: 72 45 78 65 63 20 24 69 6e 73 74 61 6c 6c 65 72  rExec $installer
3a90: 45 78 65 46 69 6c 65 20 5b 6c 69 73 74 20 2d 65  ExeFile [list -e
3aa0: 76 65 6e 74 66 6c 61 67 73 20 57 61 69 74 20 2d  ventflags Wait -
3ab0: 73 74 64 6f 75 74 20 6f 75 74 70 75 74 20 5c 0d  stdout output \.
3ac0: 0a 20 20 20 20 20 20 20 20 2d 73 75 63 63 65 73  .        -succes
3ad0: 73 20 53 75 63 63 65 73 73 5d 20 2d 64 65 62 75  s Success] -debu
3ae0: 67 50 72 69 6f 72 69 74 79 20 4c 6f 77 65 73 74  gPriority Lowest
3af0: 20 2d 74 72 61 63 65 50 72 69 6f 72 69 74 79 20   -tracePriority 
3b00: 4d 65 64 69 75 6d 48 69 67 68 20 5c 0d 0a 20 20  MediumHigh \..  
3b10: 20 20 20 20 20 20 2d 6e 6f 52 75 6e 74 69 6d 65        -noRuntime
3b20: 56 65 72 73 69 6f 6e 20 74 72 75 65 20 2d 6e 6f  Version true -no
3b30: 43 6f 6d 70 61 63 74 20 74 72 75 65 20 2d 6e 6f  Compact true -no
3b40: 4e 65 74 46 78 32 30 20 74 72 75 65 20 5c 0d 0a  NetFx20 true \..
3b50: 20 20 20 20 20 20 20 20 2d 6e 6f 4e 65 74 46 78          -noNetFx
3b60: 33 35 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78  35 true -noNetFx
3b70: 34 30 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78  40 true -noNetFx
3b80: 34 35 31 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46  451 true -noNetF
3b90: 78 34 35 32 20 74 72 75 65 20 5c 0d 0a 20 20 20  x452 true \..   
3ba0: 20 20 20 20 20 2d 6e 6f 4e 65 74 46 78 34 36 20       -noNetFx46 
3bb0: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 36 31  true -noNetFx461
3bc0: 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 36   true -noNetFx46
3bd0: 32 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34  2 true -noNetFx4
3be0: 37 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20  7 true \..      
3bf0: 20 20 2d 6e 6f 4e 65 74 46 78 34 37 31 20 74 72    -noNetFx471 tr
3c00: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 37 32 20 74  ue -noNetFx472 t
3c10: 72 75 65 20 2d 6e 6f 56 73 32 30 30 35 20 74 72  rue -noVs2005 tr
3c20: 75 65 20 2d 6e 6f 56 73 32 30 30 38 20 74 72 75  ue -noVs2008 tru
3c30: 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f  e \..        -no
3c40: 56 73 32 30 31 30 20 74 72 75 65 20 2d 6e 6f 56  Vs2010 true -noV
3c50: 73 32 30 31 33 20 74 72 75 65 20 2d 6e 6f 56 73  s2013 true -noVs
3c60: 32 30 31 35 20 74 72 75 65 20 2d 6e 6f 56 73 32  2015 true -noVs2
3c70: 30 31 37 20 74 72 75 65 20 5c 0d 0a 20 20 20 20  017 true \..    
3c80: 20 20 20 20 2d 77 68 61 74 49 66 20 74 72 75 65      -whatIf true
3c90: 20 2d 76 65 72 62 6f 73 65 20 74 72 75 65 20 2d   -verbose true -
3ca0: 63 6f 6e 66 69 72 6d 20 74 72 75 65 20 2d 69 6e  confirm true -in
3cb0: 73 74 61 6c 6c 20 66 61 6c 73 65 20 2d 64 65 62  stall false -deb
3cc0: 75 67 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20  ug true \..     
3cd0: 20 20 20 2d 77 6f 77 36 34 20 74 72 75 65 20 2d     -wow64 true -
3ce0: 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 20 34 2e  configVersion 4.
3cf0: 30 2e 33 30 33 31 39 20 5c 0d 0a 20 20 20 20 20  0.30319 \..     
3d00: 20 20 20 2d 64 69 72 65 63 74 6f 72 79 20 5b 66     -directory [f
3d10: 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65 20 5b  ile nativename [
3d20: 67 65 74 42 75 69 6c 64 44 69 72 65 63 74 6f 72  getBuildDirector
3d30: 79 20 74 72 75 65 5d 5d 20 5c 0d 0a 20 20 20 20  y true]] \..    
3d40: 20 20 20 20 2d 6c 6f 67 46 69 6c 65 4e 61 6d 65      -logFileName
3d50: 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c 22 20   [appendArgs \" 
3d60: 5b 66 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65  [file nativename
3d70: 20 24 66 69 6c 65 4e 61 6d 65 5d 20 5c 22 5d 20   $fileName] \"] 
3d80: 5c 0d 0a 20 20 20 20 20 20 20 20 2d 74 72 61 63  \..        -trac
3d90: 65 46 6f 72 6d 61 74 20 5b 61 70 70 65 6e 64 41  eFormat [appendA
3da0: 72 67 73 20 5c 22 20 22 23 7b 30 7d 3a 20 7b 32  rgs \" "#{0}: {2
3db0: 7d 22 20 5c 22 5d 0d 0a 20 20 7d 20 65 72 72 6f  }" \"]..  } erro
3dc0: 72 5d 0d 0a 0d 0a 20 20 74 6c 6f 67 20 22 2d 2d  r]....  tlog "--
3dd0: 2d 2d 20 42 45 47 49 4e 20 53 54 44 4f 55 54 20  -- BEGIN STDOUT 
3de0: 4f 55 54 50 55 54 5c 6e 22 0d 0a 20 20 74 6c 6f  OUTPUT\n"..  tlo
3df0: 67 20 24 6f 75 74 70 75 74 0d 0a 20 20 74 6c 6f  g $output..  tlo
3e00: 67 20 22 5c 6e 2d 2d 2d 2d 20 45 4e 44 20 53 54  g "\n---- END ST
3e10: 44 4f 55 54 20 4f 55 54 50 55 54 5c 6e 22 0d 0a  DOUT OUTPUT\n"..
3e20: 0d 0a 20 20 73 65 74 20 6c 69 6e 65 4e 75 6d 62  ..  set lineNumb
3e30: 65 72 20 30 0d 0a 20 20 73 65 74 20 69 73 36 34  er 0..  set is64
3e40: 20 5b 68 61 76 65 43 6f 6e 73 74 72 61 69 6e 74   [haveConstraint
3e50: 20 61 6d 64 36 34 2e 36 34 62 69 74 5d 0d 0a 20   amd64.64bit].. 
3e60: 20 73 65 74 20 77 6f 77 36 34 20 5b 65 78 70 72   set wow64 [expr
3e70: 20 7b 24 69 73 36 34 20 3f 20 22 5c 5c 57 6f 77   {$is64 ? "\\Wow
3e80: 36 34 33 32 4e 6f 64 65 22 20 3a 20 22 22 7d 5d  6432Node" : ""}]
3e90: 0d 0a 0d 0a 20 20 6c 69 73 74 20 24 63 6f 64 65  ....  list $code
3ea0: 20 5b 65 78 70 72 20 7b 24 63 6f 64 65 20 3d 3d   [expr {$code ==
3eb0: 20 30 20 3f 20 5b 73 74 72 69 6e 67 20 65 71 75   0 ? [string equ
3ec0: 61 6c 20 2d 6e 6f 63 61 73 65 20 5b 72 65 61 64  al -nocase [read
3ed0: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 5d 20  File $fileName] 
3ee0: 5c 0d 0a 20 20 20 20 20 20 5b 73 75 62 73 74 20  \..      [subst 
3ef0: 2d 6e 6f 62 61 63 6b 73 6c 61 73 68 65 73 20 5b  -nobackslashes [
3f00: 72 65 61 64 46 69 6c 65 20 24 74 65 73 74 55 6e  readFile $testUn
3f10: 69 6e 73 74 61 6c 6c 56 73 32 30 31 32 4c 6f 67  installVs2012Log
3f20: 46 69 6c 65 5d 5d 5d 20 3a 20 24 65 72 72 6f 72  File]]] : $error
3f30: 7d 5d 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b  }]..} -cleanup {
3f40: 0d 0a 20 20 63 6c 65 61 6e 75 70 46 69 6c 65 20  ..  cleanupFile 
3f50: 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75  $fileName....  u
3f60: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
3f70: 20 77 6f 77 36 34 20 69 73 36 34 20 6c 69 6e 65   wow64 is64 line
3f80: 4e 75 6d 62 65 72 20 63 6f 64 65 20 6f 75 74 70  Number code outp
3f90: 75 74 20 65 72 72 6f 72 20 66 69 6c 65 4e 61 6d  ut error fileNam
3fa0: 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74  e..} -constraint
3fb0: 73 20 5b 66 69 78 43 6f 6e 73 74 72 61 69 6e 74  s [fixConstraint
3fc0: 73 20 7b 65 61 67 6c 65 20 61 64 6d 69 6e 69 73  s {eagle adminis
3fd0: 74 72 61 74 6f 72 20 21 77 6f 77 36 34 20 62 75  trator !wow64 bu
3fe0: 69 6c 64 59 65 61 72 2e 32 30 31 32 5c 0d 0a 76  ildYear.2012\..v
3ff0: 69 73 75 61 6c 53 74 75 64 69 6f 32 30 31 32 20  isualStudio2012 
4000: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
4010: 74 65 2e 64 6c 6c 5f 76 34 2e 30 2e 33 30 33 31  te.dll_v4.0.3031
4020: 39 20 66 69 6c 65 5f 49 6e 73 74 61 6c 6c 65 72  9 file_Installer
4030: 2e 65 78 65 20 74 65 73 74 45 78 65 63 5c 0d 0a  .exe testExec\..
4040: 66 69 6c 65 5f 53 79 73 74 65 6d 2e 44 61 74 61  file_System.Data
4050: 2e 53 51 4c 69 74 65 2e 64 6c 6c 20 66 69 6c 65  .SQLite.dll file
4060: 5f 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c  _System.Data.SQL
4070: 69 74 65 2e 4c 69 6e 71 2e 64 6c 6c 5c 0d 0a 66  ite.Linq.dll\..f
4080: 69 6c 65 5f 53 79 73 74 65 6d 2e 44 61 74 61 2e  ile_System.Data.
4090: 53 51 4c 69 74 65 2e 45 46 36 2e 64 6c 6c 20 66  SQLite.EF6.dll f
40a0: 69 6c 65 5f 53 51 4c 69 74 65 2e 44 65 73 69 67  ile_SQLite.Desig
40b0: 6e 65 72 2e 64 6c 6c 5c 0d 0a 66 69 6c 65 5f 55  ner.dll\..file_U
40c0: 6e 69 6e 73 74 61 6c 6c 65 72 5f 54 65 73 74 5f  ninstaller_Test_
40d0: 56 73 32 30 31 32 2e 6c 6f 67 7d 5d 20 2d 72 65  Vs2012.log}] -re
40e0: 73 75 6c 74 20 7b 30 20 54 72 75 65 7d 7d 0d 0a  sult {0 True}}..
40f0: 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ..##############
4100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4130: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4140: 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65  #....runTest {te
4150: 73 74 20 69 6e 73 74 61 6c 6c 65 72 2d 31 2e 39  st installer-1.9
4160: 20 7b 69 6e 73 74 61 6c 6c 65 72 20 74 6f 6f 6c   {installer tool
4170: 20 2f 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f   / Visual Studio
4180: 20 32 30 31 33 7d 20 2d 73 65 74 75 70 20 7b 0d   2013} -setup {.
4190: 0a 20 20 73 65 74 20 66 69 6c 65 4e 61 6d 65 20  .  set fileName 
41a0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 67 65 74 54  [file join [getT
41b0: 65 6d 70 6f 72 61 72 79 44 69 72 65 63 74 6f 72  emporaryDirector
41c0: 79 5d 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b 73  y] [file tail [s
41d0: 74 72 69 6e 67 20 6d 61 70 20 5c 0d 0a 20 20 20  tring map \..   
41e0: 20 20 20 5b 6c 69 73 74 20 2e 6c 6f 67 20 5b 61     [list .log [a
41f0: 70 70 65 6e 64 41 72 67 73 20 5f 20 5b 70 69 64  ppendArgs _ [pid
4200: 5d 20 2e 6c 6f 67 5d 5d 20 24 74 65 73 74 49 6e  ] .log]] $testIn
4210: 73 74 61 6c 6c 56 73 32 30 31 33 4c 6f 67 46 69  stallVs2013LogFi
4220: 6c 65 5d 5d 5d 0d 0a 0d 0a 20 20 63 6c 65 61 6e  le]]]....  clean
4230: 75 70 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65  upFile $fileName
4240: 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73  ..} -body {..  s
4250: 65 74 20 6f 75 74 70 75 74 20 22 22 0d 0a 0d 0a  et output ""....
4260: 20 20 73 65 74 20 63 6f 64 65 20 5b 63 61 74 63    set code [catc
4270: 68 20 7b 0d 0a 20 20 20 20 74 65 73 74 43 6c 72  h {..    testClr
4280: 45 78 65 63 20 24 69 6e 73 74 61 6c 6c 65 72 45  Exec $installerE
4290: 78 65 46 69 6c 65 20 5b 6c 69 73 74 20 2d 65 76  xeFile [list -ev
42a0: 65 6e 74 66 6c 61 67 73 20 57 61 69 74 20 2d 73  entflags Wait -s
42b0: 74 64 6f 75 74 20 6f 75 74 70 75 74 20 5c 0d 0a  tdout output \..
42c0: 20 20 20 20 20 20 20 20 2d 73 75 63 63 65 73 73          -success
42d0: 20 53 75 63 63 65 73 73 5d 20 2d 64 65 62 75 67   Success] -debug
42e0: 50 72 69 6f 72 69 74 79 20 4c 6f 77 65 73 74 20  Priority Lowest 
42f0: 2d 74 72 61 63 65 50 72 69 6f 72 69 74 79 20 4d  -tracePriority M
4300: 65 64 69 75 6d 48 69 67 68 20 5c 0d 0a 20 20 20  ediumHigh \..   
4310: 20 20 20 20 20 2d 6e 6f 52 75 6e 74 69 6d 65 56       -noRuntimeV
4320: 65 72 73 69 6f 6e 20 74 72 75 65 20 2d 6e 6f 43  ersion true -noC
4330: 6f 6d 70 61 63 74 20 74 72 75 65 20 2d 6e 6f 4e  ompact true -noN
4340: 65 74 46 78 32 30 20 74 72 75 65 20 5c 0d 0a 20  etFx20 true \.. 
4350: 20 20 20 20 20 20 20 2d 6e 6f 4e 65 74 46 78 33         -noNetFx3
4360: 35 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34  5 true -noNetFx4
4370: 30 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34  0 true -noNetFx4
4380: 35 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34  5 true -noNetFx4
4390: 35 32 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20  52 true \..     
43a0: 20 20 20 2d 6e 6f 4e 65 74 46 78 34 36 20 74 72     -noNetFx46 tr
43b0: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 36 31 20 74  ue -noNetFx461 t
43c0: 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 36 32 20  rue -noNetFx462 
43d0: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 37 20  true -noNetFx47 
43e0: 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20  true \..        
43f0: 2d 6e 6f 4e 65 74 46 78 34 37 31 20 74 72 75 65  -noNetFx471 true
4400: 20 2d 6e 6f 4e 65 74 46 78 34 37 32 20 74 72 75   -noNetFx472 tru
4410: 65 20 2d 6e 6f 56 73 32 30 30 35 20 74 72 75 65  e -noVs2005 true
4420: 20 2d 6e 6f 56 73 32 30 30 38 20 74 72 75 65 20   -noVs2008 true 
4430: 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f 56 73  \..        -noVs
4440: 32 30 31 30 20 74 72 75 65 20 2d 6e 6f 56 73 32  2010 true -noVs2
4450: 30 31 32 20 74 72 75 65 20 2d 6e 6f 56 73 32 30  012 true -noVs20
4460: 31 35 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31  15 true -noVs201
4470: 37 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20  7 true \..      
4480: 20 20 2d 77 68 61 74 49 66 20 74 72 75 65 20 2d    -whatIf true -
4490: 76 65 72 62 6f 73 65 20 74 72 75 65 20 2d 63 6f  verbose true -co
44a0: 6e 66 69 72 6d 20 74 72 75 65 20 2d 69 6e 73 74  nfirm true -inst
44b0: 61 6c 6c 20 74 72 75 65 20 2d 64 65 62 75 67 20  all true -debug 
44c0: 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20  true \..        
44d0: 2d 77 6f 77 36 34 20 74 72 75 65 20 2d 63 6f 6e  -wow64 true -con
44e0: 66 69 67 56 65 72 73 69 6f 6e 20 34 2e 30 2e 33  figVersion 4.0.3
44f0: 30 33 31 39 20 5c 0d 0a 20 20 20 20 20 20 20 20  0319 \..        
4500: 2d 64 69 72 65 63 74 6f 72 79 20 5b 66 69 6c 65  -directory [file
4510: 20 6e 61 74 69 76 65 6e 61 6d 65 20 5b 67 65 74   nativename [get
4520: 42 75 69 6c 64 44 69 72 65 63 74 6f 72 79 20 74  BuildDirectory t
4530: 72 75 65 5d 5d 20 5c 0d 0a 20 20 20 20 20 20 20  rue]] \..       
4540: 20 2d 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 5b 61   -logFileName [a
4550: 70 70 65 6e 64 41 72 67 73 20 5c 22 20 5b 66 69  ppendArgs \" [fi
4560: 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65 20 24 66  le nativename $f
4570: 69 6c 65 4e 61 6d 65 5d 20 5c 22 5d 20 5c 0d 0a  ileName] \"] \..
4580: 20 20 20 20 20 20 20 20 2d 74 72 61 63 65 46 6f          -traceFo
4590: 72 6d 61 74 20 5b 61 70 70 65 6e 64 41 72 67 73  rmat [appendArgs
45a0: 20 5c 22 20 22 23 7b 30 7d 3a 20 7b 32 7d 22 20   \" "#{0}: {2}" 
45b0: 5c 22 5d 0d 0a 20 20 7d 20 65 72 72 6f 72 5d 0d  \"]..  } error].
45c0: 0a 0d 0a 20 20 74 6c 6f 67 20 22 2d 2d 2d 2d 20  ...  tlog "---- 
45d0: 42 45 47 49 4e 20 53 54 44 4f 55 54 20 4f 55 54  BEGIN STDOUT OUT
45e0: 50 55 54 5c 6e 22 0d 0a 20 20 74 6c 6f 67 20 24  PUT\n"..  tlog $
45f0: 6f 75 74 70 75 74 0d 0a 20 20 74 6c 6f 67 20 22  output..  tlog "
4600: 5c 6e 2d 2d 2d 2d 20 45 4e 44 20 53 54 44 4f 55  \n---- END STDOU
4610: 54 20 4f 55 54 50 55 54 5c 6e 22 0d 0a 0d 0a 20  T OUTPUT\n".... 
4620: 20 73 65 74 20 6c 69 6e 65 4e 75 6d 62 65 72 20   set lineNumber 
4630: 30 0d 0a 20 20 73 65 74 20 69 73 36 34 20 5b 68  0..  set is64 [h
4640: 61 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 61 6d  aveConstraint am
4650: 64 36 34 2e 36 34 62 69 74 5d 0d 0a 20 20 73 65  d64.64bit]..  se
4660: 74 20 77 6f 77 36 34 20 5b 65 78 70 72 20 7b 24  t wow64 [expr {$
4670: 69 73 36 34 20 3f 20 22 5c 5c 57 6f 77 36 34 33  is64 ? "\\Wow643
4680: 32 4e 6f 64 65 22 20 3a 20 22 22 7d 5d 0d 0a 0d  2Node" : ""}]...
4690: 0a 20 20 6c 69 73 74 20 24 63 6f 64 65 20 5b 65  .  list $code [e
46a0: 78 70 72 20 7b 24 63 6f 64 65 20 3d 3d 20 30 20  xpr {$code == 0 
46b0: 3f 20 5b 73 74 72 69 6e 67 20 65 71 75 61 6c 20  ? [string equal 
46c0: 2d 6e 6f 63 61 73 65 20 5b 72 65 61 64 46 69 6c  -nocase [readFil
46d0: 65 20 24 66 69 6c 65 4e 61 6d 65 5d 20 5c 0d 0a  e $fileName] \..
46e0: 20 20 20 20 20 20 5b 73 75 62 73 74 20 2d 6e 6f        [subst -no
46f0: 62 61 63 6b 73 6c 61 73 68 65 73 20 5b 72 65 61  backslashes [rea
4700: 64 46 69 6c 65 20 24 74 65 73 74 49 6e 73 74 61  dFile $testInsta
4710: 6c 6c 56 73 32 30 31 33 4c 6f 67 46 69 6c 65 5d  llVs2013LogFile]
4720: 5d 5d 20 3a 20 24 65 72 72 6f 72 7d 5d 0d 0a 7d  ]] : $error}]..}
4730: 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 63   -cleanup {..  c
4740: 6c 65 61 6e 75 70 46 69 6c 65 20 24 66 69 6c 65  leanupFile $file
4750: 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74 20  Name....  unset 
4760: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 77 6f 77 36  -nocomplain wow6
4770: 34 20 69 73 36 34 20 6c 69 6e 65 4e 75 6d 62 65  4 is64 lineNumbe
4780: 72 20 63 6f 64 65 20 6f 75 74 70 75 74 20 65 72  r code output er
4790: 72 6f 72 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20  ror fileName..} 
47a0: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 5b 66 69  -constraints [fi
47b0: 78 43 6f 6e 73 74 72 61 69 6e 74 73 20 7b 65 61  xConstraints {ea
47c0: 67 6c 65 20 61 64 6d 69 6e 69 73 74 72 61 74 6f  gle administrato
47d0: 72 20 21 77 6f 77 36 34 20 62 75 69 6c 64 59 65  r !wow64 buildYe
47e0: 61 72 2e 32 30 31 33 5c 0d 0a 76 69 73 75 61 6c  ar.2013\..visual
47f0: 53 74 75 64 69 6f 32 30 31 33 20 53 79 73 74 65  Studio2013 Syste
4800: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c  m.Data.SQLite.dl
4810: 6c 5f 76 34 2e 30 2e 33 30 33 31 39 20 66 69 6c  l_v4.0.30319 fil
4820: 65 5f 49 6e 73 74 61 6c 6c 65 72 2e 65 78 65 20  e_Installer.exe 
4830: 74 65 73 74 45 78 65 63 5c 0d 0a 66 69 6c 65 5f  testExec\..file_
4840: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
4850: 74 65 2e 64 6c 6c 20 66 69 6c 65 5f 53 79 73 74  te.dll file_Syst
4860: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 4c  em.Data.SQLite.L
4870: 69 6e 71 2e 64 6c 6c 5c 0d 0a 66 69 6c 65 5f 53  inq.dll\..file_S
4880: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
4890: 65 2e 45 46 36 2e 64 6c 6c 20 66 69 6c 65 5f 53  e.EF6.dll file_S
48a0: 51 4c 69 74 65 2e 44 65 73 69 67 6e 65 72 2e 64  QLite.Designer.d
48b0: 6c 6c 5c 0d 0a 66 69 6c 65 5f 49 6e 73 74 61 6c  ll\..file_Instal
48c0: 6c 65 72 5f 54 65 73 74 5f 56 73 32 30 31 33 2e  ler_Test_Vs2013.
48d0: 6c 6f 67 7d 5d 20 2d 72 65 73 75 6c 74 20 7b 30  log}] -result {0
48e0: 20 54 72 75 65 7d 7d 0d 0a 0d 0a 23 23 23 23 23   True}}....#####
48f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4930: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75  ##########....ru
4940: 6e 54 65 73 74 20 7b 74 65 73 74 20 69 6e 73 74  nTest {test inst
4950: 61 6c 6c 65 72 2d 31 2e 31 30 20 7b 75 6e 69 6e  aller-1.10 {unin
4960: 73 74 61 6c 6c 65 72 20 74 6f 6f 6c 20 2f 20 56  staller tool / V
4970: 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32 30 31  isual Studio 201
4980: 33 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73  3} -setup {..  s
4990: 65 74 20 66 69 6c 65 4e 61 6d 65 20 5b 66 69 6c  et fileName [fil
49a0: 65 20 6a 6f 69 6e 20 5b 67 65 74 54 65 6d 70 6f  e join [getTempo
49b0: 72 61 72 79 44 69 72 65 63 74 6f 72 79 5d 20 5b  raryDirectory] [
49c0: 66 69 6c 65 20 74 61 69 6c 20 5b 73 74 72 69 6e  file tail [strin
49d0: 67 20 6d 61 70 20 5c 0d 0a 20 20 20 20 20 20 5b  g map \..      [
49e0: 6c 69 73 74 20 2e 6c 6f 67 20 5b 61 70 70 65 6e  list .log [appen
49f0: 64 41 72 67 73 20 5f 20 5b 70 69 64 5d 20 2e 6c  dArgs _ [pid] .l
4a00: 6f 67 5d 5d 20 24 74 65 73 74 55 6e 69 6e 73 74  og]] $testUninst
4a10: 61 6c 6c 56 73 32 30 31 33 4c 6f 67 46 69 6c 65  allVs2013LogFile
4a20: 5d 5d 5d 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70  ]]]....  cleanup
4a30: 46 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d 0a  File $fileName..
4a40: 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74  } -body {..  set
4a50: 20 6f 75 74 70 75 74 20 22 22 0d 0a 0d 0a 20 20   output ""....  
4a60: 73 65 74 20 63 6f 64 65 20 5b 63 61 74 63 68 20  set code [catch 
4a70: 7b 0d 0a 20 20 20 20 74 65 73 74 43 6c 72 45 78  {..    testClrEx
4a80: 65 63 20 24 69 6e 73 74 61 6c 6c 65 72 45 78 65  ec $installerExe
4a90: 46 69 6c 65 20 5b 6c 69 73 74 20 2d 65 76 65 6e  File [list -even
4aa0: 74 66 6c 61 67 73 20 57 61 69 74 20 2d 73 74 64  tflags Wait -std
4ab0: 6f 75 74 20 6f 75 74 70 75 74 20 5c 0d 0a 20 20  out output \..  
4ac0: 20 20 20 20 20 20 2d 73 75 63 63 65 73 73 20 53        -success S
4ad0: 75 63 63 65 73 73 5d 20 2d 64 65 62 75 67 50 72  uccess] -debugPr
4ae0: 69 6f 72 69 74 79 20 4c 6f 77 65 73 74 20 2d 74  iority Lowest -t
4af0: 72 61 63 65 50 72 69 6f 72 69 74 79 20 4d 65 64  racePriority Med
4b00: 69 75 6d 48 69 67 68 20 5c 0d 0a 20 20 20 20 20  iumHigh \..     
4b10: 20 20 20 2d 6e 6f 52 75 6e 74 69 6d 65 56 65 72     -noRuntimeVer
4b20: 73 69 6f 6e 20 74 72 75 65 20 2d 6e 6f 43 6f 6d  sion true -noCom
4b30: 70 61 63 74 20 74 72 75 65 20 2d 6e 6f 4e 65 74  pact true -noNet
4b40: 46 78 32 30 20 74 72 75 65 20 5c 0d 0a 20 20 20  Fx20 true \..   
4b50: 20 20 20 20 20 2d 6e 6f 4e 65 74 46 78 33 35 20       -noNetFx35 
4b60: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 30 20  true -noNetFx40 
4b70: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 20  true -noNetFx45 
4b80: 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 32  true -noNetFx452
4b90: 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20   true \..       
4ba0: 20 2d 6e 6f 4e 65 74 46 78 34 36 20 74 72 75 65   -noNetFx46 true
4bb0: 20 2d 6e 6f 4e 65 74 46 78 34 36 31 20 74 72 75   -noNetFx461 tru
4bc0: 65 20 2d 6e 6f 4e 65 74 46 78 34 36 32 20 74 72  e -noNetFx462 tr
4bd0: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 37 20 74 72  ue -noNetFx47 tr
4be0: 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6e  ue \..        -n
4bf0: 6f 4e 65 74 46 78 34 37 31 20 74 72 75 65 20 2d  oNetFx471 true -
4c00: 6e 6f 4e 65 74 46 78 34 37 32 20 74 72 75 65 20  noNetFx472 true 
4c10: 2d 6e 6f 56 73 32 30 30 35 20 74 72 75 65 20 2d  -noVs2005 true -
4c20: 6e 6f 56 73 32 30 30 38 20 74 72 75 65 20 5c 0d  noVs2008 true \.
4c30: 0a 20 20 20 20 20 20 20 20 2d 6e 6f 56 73 32 30  .        -noVs20
4c40: 31 30 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31  10 true -noVs201
4c50: 32 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 35  2 true -noVs2015
4c60: 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 37 20   true -noVs2017 
4c70: 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20  true \..        
4c80: 2d 77 68 61 74 49 66 20 74 72 75 65 20 2d 76 65  -whatIf true -ve
4c90: 72 62 6f 73 65 20 74 72 75 65 20 2d 63 6f 6e 66  rbose true -conf
4ca0: 69 72 6d 20 74 72 75 65 20 2d 69 6e 73 74 61 6c  irm true -instal
4cb0: 6c 20 66 61 6c 73 65 20 2d 64 65 62 75 67 20 74  l false -debug t
4cc0: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
4cd0: 77 6f 77 36 34 20 74 72 75 65 20 2d 63 6f 6e 66  wow64 true -conf
4ce0: 69 67 56 65 72 73 69 6f 6e 20 34 2e 30 2e 33 30  igVersion 4.0.30
4cf0: 33 31 39 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  319 \..        -
4d00: 64 69 72 65 63 74 6f 72 79 20 5b 66 69 6c 65 20  directory [file 
4d10: 6e 61 74 69 76 65 6e 61 6d 65 20 5b 67 65 74 42  nativename [getB
4d20: 75 69 6c 64 44 69 72 65 63 74 6f 72 79 20 74 72  uildDirectory tr
4d30: 75 65 5d 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20  ue]] \..        
4d40: 2d 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 5b 61 70  -logFileName [ap
4d50: 70 65 6e 64 41 72 67 73 20 5c 22 20 5b 66 69 6c  pendArgs \" [fil
4d60: 65 20 6e 61 74 69 76 65 6e 61 6d 65 20 24 66 69  e nativename $fi
4d70: 6c 65 4e 61 6d 65 5d 20 5c 22 5d 20 5c 0d 0a 20  leName] \"] \.. 
4d80: 20 20 20 20 20 20 20 2d 74 72 61 63 65 46 6f 72         -traceFor
4d90: 6d 61 74 20 5b 61 70 70 65 6e 64 41 72 67 73 20  mat [appendArgs 
4da0: 5c 22 20 22 23 7b 30 7d 3a 20 7b 32 7d 22 20 5c  \" "#{0}: {2}" \
4db0: 22 5d 0d 0a 20 20 7d 20 65 72 72 6f 72 5d 0d 0a  "]..  } error]..
4dc0: 0d 0a 20 20 74 6c 6f 67 20 22 2d 2d 2d 2d 20 42  ..  tlog "---- B
4dd0: 45 47 49 4e 20 53 54 44 4f 55 54 20 4f 55 54 50  EGIN STDOUT OUTP
4de0: 55 54 5c 6e 22 0d 0a 20 20 74 6c 6f 67 20 24 6f  UT\n"..  tlog $o
4df0: 75 74 70 75 74 0d 0a 20 20 74 6c 6f 67 20 22 5c  utput..  tlog "\
4e00: 6e 2d 2d 2d 2d 20 45 4e 44 20 53 54 44 4f 55 54  n---- END STDOUT
4e10: 20 4f 55 54 50 55 54 5c 6e 22 0d 0a 0d 0a 20 20   OUTPUT\n"....  
4e20: 73 65 74 20 6c 69 6e 65 4e 75 6d 62 65 72 20 30  set lineNumber 0
4e30: 0d 0a 20 20 73 65 74 20 69 73 36 34 20 5b 68 61  ..  set is64 [ha
4e40: 76 65 43 6f 6e 73 74 72 61 69 6e 74 20 61 6d 64  veConstraint amd
4e50: 36 34 2e 36 34 62 69 74 5d 0d 0a 20 20 73 65 74  64.64bit]..  set
4e60: 20 77 6f 77 36 34 20 5b 65 78 70 72 20 7b 24 69   wow64 [expr {$i
4e70: 73 36 34 20 3f 20 22 5c 5c 57 6f 77 36 34 33 32  s64 ? "\\Wow6432
4e80: 4e 6f 64 65 22 20 3a 20 22 22 7d 5d 0d 0a 0d 0a  Node" : ""}]....
4e90: 20 20 6c 69 73 74 20 24 63 6f 64 65 20 5b 65 78    list $code [ex
4ea0: 70 72 20 7b 24 63 6f 64 65 20 3d 3d 20 30 20 3f  pr {$code == 0 ?
4eb0: 20 5b 73 74 72 69 6e 67 20 65 71 75 61 6c 20 2d   [string equal -
4ec0: 6e 6f 63 61 73 65 20 5b 72 65 61 64 46 69 6c 65  nocase [readFile
4ed0: 20 24 66 69 6c 65 4e 61 6d 65 5d 20 5c 0d 0a 20   $fileName] \.. 
4ee0: 20 20 20 20 20 5b 73 75 62 73 74 20 2d 6e 6f 62       [subst -nob
4ef0: 61 63 6b 73 6c 61 73 68 65 73 20 5b 72 65 61 64  ackslashes [read
4f00: 46 69 6c 65 20 24 74 65 73 74 55 6e 69 6e 73 74  File $testUninst
4f10: 61 6c 6c 56 73 32 30 31 33 4c 6f 67 46 69 6c 65  allVs2013LogFile
4f20: 5d 5d 5d 20 3a 20 24 65 72 72 6f 72 7d 5d 0d 0a  ]]] : $error}]..
4f30: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20  } -cleanup {..  
4f40: 63 6c 65 61 6e 75 70 46 69 6c 65 20 24 66 69 6c  cleanupFile $fil
4f50: 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74  eName....  unset
4f60: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 77 6f 77   -nocomplain wow
4f70: 36 34 20 69 73 36 34 20 6c 69 6e 65 4e 75 6d 62  64 is64 lineNumb
4f80: 65 72 20 63 6f 64 65 20 6f 75 74 70 75 74 20 65  er code output e
4f90: 72 72 6f 72 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d  rror fileName..}
4fa0: 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 5b 66   -constraints [f
4fb0: 69 78 43 6f 6e 73 74 72 61 69 6e 74 73 20 7b 65  ixConstraints {e
4fc0: 61 67 6c 65 20 61 64 6d 69 6e 69 73 74 72 61 74  agle administrat
4fd0: 6f 72 20 21 77 6f 77 36 34 20 62 75 69 6c 64 59  or !wow64 buildY
4fe0: 65 61 72 2e 32 30 31 33 5c 0d 0a 76 69 73 75 61  ear.2013\..visua
4ff0: 6c 53 74 75 64 69 6f 32 30 31 33 20 53 79 73 74  lStudio2013 Syst
5000: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
5010: 6c 6c 5f 76 34 2e 30 2e 33 30 33 31 39 20 66 69  ll_v4.0.30319 fi
5020: 6c 65 5f 49 6e 73 74 61 6c 6c 65 72 2e 65 78 65  le_Installer.exe
5030: 20 74 65 73 74 45 78 65 63 5c 0d 0a 66 69 6c 65   testExec\..file
5040: 5f 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c  _System.Data.SQL
5050: 69 74 65 2e 64 6c 6c 20 66 69 6c 65 5f 53 79 73  ite.dll file_Sys
5060: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
5070: 4c 69 6e 71 2e 64 6c 6c 5c 0d 0a 66 69 6c 65 5f  Linq.dll\..file_
5080: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
5090: 74 65 2e 45 46 36 2e 64 6c 6c 20 66 69 6c 65 5f  te.EF6.dll file_
50a0: 53 51 4c 69 74 65 2e 44 65 73 69 67 6e 65 72 2e  SQLite.Designer.
50b0: 64 6c 6c 5c 0d 0a 66 69 6c 65 5f 55 6e 69 6e 73  dll\..file_Unins
50c0: 74 61 6c 6c 65 72 5f 54 65 73 74 5f 56 73 32 30  taller_Test_Vs20
50d0: 31 33 2e 6c 6f 67 7d 5d 20 2d 72 65 73 75 6c 74  13.log}] -result
50e0: 20 7b 30 20 54 72 75 65 7d 7d 0d 0a 0d 0a 23 23   {0 True}}....##
50f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5130: 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d  #############...
5140: 0a 72 75 6e 54 65 73 74 20 7b 74 65 73 74 20 69  .runTest {test i
5150: 6e 73 74 61 6c 6c 65 72 2d 31 2e 31 31 20 7b 69  nstaller-1.11 {i
5160: 6e 73 74 61 6c 6c 65 72 20 74 6f 6f 6c 20 2f 20  nstaller tool / 
5170: 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32 30  Visual Studio 20
5180: 31 35 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20  15} -setup {..  
5190: 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 5b 66 69  set fileName [fi
51a0: 6c 65 20 6a 6f 69 6e 20 5b 67 65 74 54 65 6d 70  le join [getTemp
51b0: 6f 72 61 72 79 44 69 72 65 63 74 6f 72 79 5d 20  oraryDirectory] 
51c0: 5b 66 69 6c 65 20 74 61 69 6c 20 5b 73 74 72 69  [file tail [stri
51d0: 6e 67 20 6d 61 70 20 5c 0d 0a 20 20 20 20 20 20  ng map \..      
51e0: 5b 6c 69 73 74 20 2e 6c 6f 67 20 5b 61 70 70 65  [list .log [appe
51f0: 6e 64 41 72 67 73 20 5f 20 5b 70 69 64 5d 20 2e  ndArgs _ [pid] .
5200: 6c 6f 67 5d 5d 20 24 74 65 73 74 49 6e 73 74 61  log]] $testInsta
5210: 6c 6c 56 73 32 30 31 35 4c 6f 67 46 69 6c 65 5d  llVs2015LogFile]
5220: 5d 5d 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70 46  ]]....  cleanupF
5230: 69 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 7d  ile $fileName..}
5240: 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74 20   -body {..  set 
5250: 6f 75 74 70 75 74 20 22 22 0d 0a 0d 0a 20 20 73  output ""....  s
5260: 65 74 20 63 6f 64 65 20 5b 63 61 74 63 68 20 7b  et code [catch {
5270: 0d 0a 20 20 20 20 74 65 73 74 43 6c 72 45 78 65  ..    testClrExe
5280: 63 20 24 69 6e 73 74 61 6c 6c 65 72 45 78 65 46  c $installerExeF
5290: 69 6c 65 20 5b 6c 69 73 74 20 2d 65 76 65 6e 74  ile [list -event
52a0: 66 6c 61 67 73 20 57 61 69 74 20 2d 73 74 64 6f  flags Wait -stdo
52b0: 75 74 20 6f 75 74 70 75 74 20 5c 0d 0a 20 20 20  ut output \..   
52c0: 20 20 20 20 20 2d 73 75 63 63 65 73 73 20 53 75       -success Su
52d0: 63 63 65 73 73 5d 20 2d 64 65 62 75 67 50 72 69  ccess] -debugPri
52e0: 6f 72 69 74 79 20 4c 6f 77 65 73 74 20 2d 74 72  ority Lowest -tr
52f0: 61 63 65 50 72 69 6f 72 69 74 79 20 4d 65 64 69  acePriority Medi
5300: 75 6d 48 69 67 68 20 5c 0d 0a 20 20 20 20 20 20  umHigh \..      
5310: 20 20 2d 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73    -noRuntimeVers
5320: 69 6f 6e 20 74 72 75 65 20 2d 6e 6f 43 6f 6d 70  ion true -noComp
5330: 61 63 74 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46  act true -noNetF
5340: 78 32 30 20 74 72 75 65 20 5c 0d 0a 20 20 20 20  x20 true \..    
5350: 20 20 20 20 2d 6e 6f 4e 65 74 46 78 33 35 20 74      -noNetFx35 t
5360: 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 30 20 74  rue -noNetFx40 t
5370: 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 20 74  rue -noNetFx45 t
5380: 72 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 31 20  rue -noNetFx451 
5390: 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20  true \..        
53a0: 2d 6e 6f 4e 65 74 46 78 34 35 32 20 74 72 75 65  -noNetFx452 true
53b0: 20 2d 6e 6f 4e 65 74 46 78 34 36 31 20 74 72 75   -noNetFx461 tru
53c0: 65 20 2d 6e 6f 4e 65 74 46 78 34 36 32 20 74 72  e -noNetFx462 tr
53d0: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 37 20 74 72  ue -noNetFx47 tr
53e0: 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6e  ue \..        -n
53f0: 6f 4e 65 74 46 78 34 37 31 20 74 72 75 65 20 2d  oNetFx471 true -
5400: 6e 6f 4e 65 74 46 78 34 37 32 20 74 72 75 65 20  noNetFx472 true 
5410: 2d 6e 6f 56 73 32 30 30 35 20 74 72 75 65 20 2d  -noVs2005 true -
5420: 6e 6f 56 73 32 30 30 38 20 74 72 75 65 20 5c 0d  noVs2008 true \.
5430: 0a 20 20 20 20 20 20 20 20 2d 6e 6f 56 73 32 30  .        -noVs20
5440: 31 30 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31  10 true -noVs201
5450: 32 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 33  2 true -noVs2013
5460: 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 37 20   true -noVs2017 
5470: 74 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20  true \..        
5480: 2d 77 68 61 74 49 66 20 74 72 75 65 20 2d 76 65  -whatIf true -ve
5490: 72 62 6f 73 65 20 74 72 75 65 20 2d 63 6f 6e 66  rbose true -conf
54a0: 69 72 6d 20 74 72 75 65 20 2d 69 6e 73 74 61 6c  irm true -instal
54b0: 6c 20 74 72 75 65 20 2d 64 65 62 75 67 20 74 72  l true -debug tr
54c0: 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 77  ue \..        -w
54d0: 6f 77 36 34 20 74 72 75 65 20 2d 63 6f 6e 66 69  ow64 true -confi
54e0: 67 56 65 72 73 69 6f 6e 20 34 2e 30 2e 33 30 33  gVersion 4.0.303
54f0: 31 39 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 64  19 \..        -d
5500: 69 72 65 63 74 6f 72 79 20 5b 66 69 6c 65 20 6e  irectory [file n
5510: 61 74 69 76 65 6e 61 6d 65 20 5b 67 65 74 42 75  ativename [getBu
5520: 69 6c 64 44 69 72 65 63 74 6f 72 79 20 74 72 75  ildDirectory tru
5530: 65 5d 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  e]] \..        -
5540: 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 5b 61 70 70  logFileName [app
5550: 65 6e 64 41 72 67 73 20 5c 22 20 5b 66 69 6c 65  endArgs \" [file
5560: 20 6e 61 74 69 76 65 6e 61 6d 65 20 24 66 69 6c   nativename $fil
5570: 65 4e 61 6d 65 5d 20 5c 22 5d 20 5c 0d 0a 20 20  eName] \"] \..  
5580: 20 20 20 20 20 20 2d 74 72 61 63 65 46 6f 72 6d        -traceForm
5590: 61 74 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c  at [appendArgs \
55a0: 22 20 22 23 7b 30 7d 3a 20 7b 32 7d 22 20 5c 22  " "#{0}: {2}" \"
55b0: 5d 0d 0a 20 20 7d 20 65 72 72 6f 72 5d 0d 0a 0d  ]..  } error]...
55c0: 0a 20 20 74 6c 6f 67 20 22 2d 2d 2d 2d 20 42 45  .  tlog "---- BE
55d0: 47 49 4e 20 53 54 44 4f 55 54 20 4f 55 54 50 55  GIN STDOUT OUTPU
55e0: 54 5c 6e 22 0d 0a 20 20 74 6c 6f 67 20 24 6f 75  T\n"..  tlog $ou
55f0: 74 70 75 74 0d 0a 20 20 74 6c 6f 67 20 22 5c 6e  tput..  tlog "\n
5600: 2d 2d 2d 2d 20 45 4e 44 20 53 54 44 4f 55 54 20  ---- END STDOUT 
5610: 4f 55 54 50 55 54 5c 6e 22 0d 0a 0d 0a 20 20 73  OUTPUT\n"....  s
5620: 65 74 20 6c 69 6e 65 4e 75 6d 62 65 72 20 30 0d  et lineNumber 0.
5630: 0a 20 20 73 65 74 20 69 73 36 34 20 5b 68 61 76  .  set is64 [hav
5640: 65 43 6f 6e 73 74 72 61 69 6e 74 20 61 6d 64 36  eConstraint amd6
5650: 34 2e 36 34 62 69 74 5d 0d 0a 20 20 73 65 74 20  4.64bit]..  set 
5660: 77 6f 77 36 34 20 5b 65 78 70 72 20 7b 24 69 73  wow64 [expr {$is
5670: 36 34 20 3f 20 22 5c 5c 57 6f 77 36 34 33 32 4e  64 ? "\\Wow6432N
5680: 6f 64 65 22 20 3a 20 22 22 7d 5d 0d 0a 0d 0a 20  ode" : ""}].... 
5690: 20 6c 69 73 74 20 24 63 6f 64 65 20 5b 65 78 70   list $code [exp
56a0: 72 20 7b 24 63 6f 64 65 20 3d 3d 20 30 20 3f 20  r {$code == 0 ? 
56b0: 5b 73 74 72 69 6e 67 20 65 71 75 61 6c 20 2d 6e  [string equal -n
56c0: 6f 63 61 73 65 20 5b 72 65 61 64 46 69 6c 65 20  ocase [readFile 
56d0: 24 66 69 6c 65 4e 61 6d 65 5d 20 5c 0d 0a 20 20  $fileName] \..  
56e0: 20 20 20 20 5b 73 75 62 73 74 20 2d 6e 6f 62 61      [subst -noba
56f0: 63 6b 73 6c 61 73 68 65 73 20 5b 72 65 61 64 46  ckslashes [readF
5700: 69 6c 65 20 24 74 65 73 74 49 6e 73 74 61 6c 6c  ile $testInstall
5710: 56 73 32 30 31 35 4c 6f 67 46 69 6c 65 5d 5d 5d  Vs2015LogFile]]]
5720: 20 3a 20 24 65 72 72 6f 72 7d 5d 0d 0a 7d 20 2d   : $error}]..} -
5730: 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 63 6c 65  cleanup {..  cle
5740: 61 6e 75 70 46 69 6c 65 20 24 66 69 6c 65 4e 61  anupFile $fileNa
5750: 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e  me....  unset -n
5760: 6f 63 6f 6d 70 6c 61 69 6e 20 77 6f 77 36 34 20  ocomplain wow64 
5770: 69 73 36 34 20 6c 69 6e 65 4e 75 6d 62 65 72 20  is64 lineNumber 
5780: 63 6f 64 65 20 6f 75 74 70 75 74 20 65 72 72 6f  code output erro
5790: 72 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63  r fileName..} -c
57a0: 6f 6e 73 74 72 61 69 6e 74 73 20 5b 66 69 78 43  onstraints [fixC
57b0: 6f 6e 73 74 72 61 69 6e 74 73 20 7b 65 61 67 6c  onstraints {eagl
57c0: 65 20 61 64 6d 69 6e 69 73 74 72 61 74 6f 72 20  e administrator 
57d0: 21 77 6f 77 36 34 20 62 75 69 6c 64 59 65 61 72  !wow64 buildYear
57e0: 2e 32 30 31 35 5c 0d 0a 76 69 73 75 61 6c 53 74  .2015\..visualSt
57f0: 75 64 69 6f 32 30 31 35 20 53 79 73 74 65 6d 2e  udio2015 System.
5800: 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 5f  Data.SQLite.dll_
5810: 76 34 2e 30 2e 33 30 33 31 39 20 66 69 6c 65 5f  v4.0.30319 file_
5820: 49 6e 73 74 61 6c 6c 65 72 2e 65 78 65 20 74 65  Installer.exe te
5830: 73 74 45 78 65 63 5c 0d 0a 66 69 6c 65 5f 53 79  stExec\..file_Sy
5840: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
5850: 2e 64 6c 6c 20 66 69 6c 65 5f 53 79 73 74 65 6d  .dll file_System
5860: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 4c 69 6e  .Data.SQLite.Lin
5870: 71 2e 64 6c 6c 5c 0d 0a 66 69 6c 65 5f 53 79 73  q.dll\..file_Sys
5880: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
5890: 45 46 36 2e 64 6c 6c 20 66 69 6c 65 5f 53 51 4c  EF6.dll file_SQL
58a0: 69 74 65 2e 44 65 73 69 67 6e 65 72 2e 64 6c 6c  ite.Designer.dll
58b0: 5c 0d 0a 66 69 6c 65 5f 49 6e 73 74 61 6c 6c 65  \..file_Installe
58c0: 72 5f 54 65 73 74 5f 56 73 32 30 31 35 2e 6c 6f  r_Test_Vs2015.lo
58d0: 67 7d 5d 20 2d 72 65 73 75 6c 74 20 7b 30 20 54  g}] -result {0 T
58e0: 72 75 65 7d 7d 0d 0a 0d 0a 23 23 23 23 23 23 23  rue}}....#######
58f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5900: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5930: 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75 6e 54  ########....runT
5940: 65 73 74 20 7b 74 65 73 74 20 69 6e 73 74 61 6c  est {test instal
5950: 6c 65 72 2d 31 2e 31 32 20 7b 75 6e 69 6e 73 74  ler-1.12 {uninst
5960: 61 6c 6c 65 72 20 74 6f 6f 6c 20 2f 20 56 69 73  aller tool / Vis
5970: 75 61 6c 20 53 74 75 64 69 6f 20 32 30 31 35 7d  ual Studio 2015}
5980: 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73 65 74   -setup {..  set
5990: 20 66 69 6c 65 4e 61 6d 65 20 5b 66 69 6c 65 20   fileName [file 
59a0: 6a 6f 69 6e 20 5b 67 65 74 54 65 6d 70 6f 72 61  join [getTempora
59b0: 72 79 44 69 72 65 63 74 6f 72 79 5d 20 5b 66 69  ryDirectory] [fi
59c0: 6c 65 20 74 61 69 6c 20 5b 73 74 72 69 6e 67 20  le tail [string 
59d0: 6d 61 70 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 69  map \..      [li
59e0: 73 74 20 2e 6c 6f 67 20 5b 61 70 70 65 6e 64 41  st .log [appendA
59f0: 72 67 73 20 5f 20 5b 70 69 64 5d 20 2e 6c 6f 67  rgs _ [pid] .log
5a00: 5d 5d 20 24 74 65 73 74 55 6e 69 6e 73 74 61 6c  ]] $testUninstal
5a10: 6c 56 73 32 30 31 35 4c 6f 67 46 69 6c 65 5d 5d  lVs2015LogFile]]
5a20: 5d 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70 46 69  ]....  cleanupFi
5a30: 6c 65 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20  le $fileName..} 
5a40: 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74 20 6f  -body {..  set o
5a50: 75 74 70 75 74 20 22 22 0d 0a 0d 0a 20 20 73 65  utput ""....  se
5a60: 74 20 63 6f 64 65 20 5b 63 61 74 63 68 20 7b 0d  t code [catch {.
5a70: 0a 20 20 20 20 74 65 73 74 43 6c 72 45 78 65 63  .    testClrExec
5a80: 20 24 69 6e 73 74 61 6c 6c 65 72 45 78 65 46 69   $installerExeFi
5a90: 6c 65 20 5b 6c 69 73 74 20 2d 65 76 65 6e 74 66  le [list -eventf
5aa0: 6c 61 67 73 20 57 61 69 74 20 2d 73 74 64 6f 75  lags Wait -stdou
5ab0: 74 20 6f 75 74 70 75 74 20 5c 0d 0a 20 20 20 20  t output \..    
5ac0: 20 20 20 20 2d 73 75 63 63 65 73 73 20 53 75 63      -success Suc
5ad0: 63 65 73 73 5d 20 2d 64 65 62 75 67 50 72 69 6f  cess] -debugPrio
5ae0: 72 69 74 79 20 4c 6f 77 65 73 74 20 2d 74 72 61  rity Lowest -tra
5af0: 63 65 50 72 69 6f 72 69 74 79 20 4d 65 64 69 75  cePriority Mediu
5b00: 6d 48 69 67 68 20 5c 0d 0a 20 20 20 20 20 20 20  mHigh \..       
5b10: 20 2d 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69   -noRuntimeVersi
5b20: 6f 6e 20 74 72 75 65 20 2d 6e 6f 43 6f 6d 70 61  on true -noCompa
5b30: 63 74 20 74 72 75 65 20 2d 6e 6f 4e 65 74 46 78  ct true -noNetFx
5b40: 32 30 20 74 72 75 65 20 5c 0d 0a 20 20 20 20 20  20 true \..     
5b50: 20 20 20 2d 6e 6f 4e 65 74 46 78 33 35 20 74 72     -noNetFx35 tr
5b60: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 30 20 74 72  ue -noNetFx40 tr
5b70: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 20 74 72  ue -noNetFx45 tr
5b80: 75 65 20 2d 6e 6f 4e 65 74 46 78 34 35 31 20 74  ue -noNetFx451 t
5b90: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
5ba0: 6e 6f 4e 65 74 46 78 34 35 32 20 74 72 75 65 20  noNetFx452 true 
5bb0: 2d 6e 6f 4e 65 74 46 78 34 36 31 20 74 72 75 65  -noNetFx461 true
5bc0: 20 2d 6e 6f 4e 65 74 46 78 34 36 32 20 74 72 75   -noNetFx462 tru
5bd0: 65 20 2d 6e 6f 4e 65 74 46 78 34 37 20 74 72 75  e -noNetFx47 tru
5be0: 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 6e 6f  e \..        -no
5bf0: 4e 65 74 46 78 34 37 31 20 74 72 75 65 20 2d 6e  NetFx471 true -n
5c00: 6f 4e 65 74 46 78 34 37 32 20 74 72 75 65 20 2d  oNetFx472 true -
5c10: 6e 6f 56 73 32 30 30 35 20 74 72 75 65 20 2d 6e  noVs2005 true -n
5c20: 6f 56 73 32 30 30 38 20 74 72 75 65 20 5c 0d 0a  oVs2008 true \..
5c30: 20 20 20 20 20 20 20 20 2d 6e 6f 56 73 32 30 31          -noVs201
5c40: 30 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 32  0 true -noVs2012
5c50: 20 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 33 20   true -noVs2013 
5c60: 74 72 75 65 20 2d 6e 6f 56 73 32 30 31 37 20 74  true -noVs2017 t
5c70: 72 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  rue \..        -
5c80: 77 68 61 74 49 66 20 74 72 75 65 20 2d 76 65 72  whatIf true -ver
5c90: 62 6f 73 65 20 74 72 75 65 20 2d 63 6f 6e 66 69  bose true -confi
5ca0: 72 6d 20 74 72 75 65 20 2d 69 6e 73 74 61 6c 6c  rm true -install
5cb0: 20 66 61 6c 73 65 20 2d 64 65 62 75 67 20 74 72   false -debug tr
5cc0: 75 65 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 77  ue \..        -w
5cd0: 6f 77 36 34 20 74 72 75 65 20 2d 63 6f 6e 66 69  ow64 true -confi
5ce0: 67 56 65 72 73 69 6f 6e 20 34 2e 30 2e 33 30 33  gVersion 4.0.303
5cf0: 31 39 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d 64  19 \..        -d
5d00: 69 72 65 63 74 6f 72 79 20 5b 66 69 6c 65 20 6e  irectory [file n
5d10: 61 74 69 76 65 6e 61 6d 65 20 5b 67 65 74 42 75  ativename [getBu
5d20: 69 6c 64 44 69 72 65 63 74 6f 72 79 20 74 72 75  ildDirectory tru
5d30: 65 5d 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 2d  e]] \..        -
5d40: 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 5b 61 70 70  logFileName [app
5d50: 65 6e 64 41 72 67 73 20 5c 22 20 5b 66 69 6c 65  endArgs \" [file
5d60: 20 6e 61 74 69 76 65 6e 61 6d 65 20 24 66 69 6c   nativename $fil
5d70: 65 4e 61 6d 65 5d 20 5c 22 5d 20 5c 0d 0a 20 20  eName] \"] \..  
5d80: 20 20 20 20 20 20 2d 74 72 61 63 65 46 6f 72 6d        -traceForm
5d90: 61 74 20 5b 61 70 70 65 6e 64 41 72 67 73 20 5c  at [appendArgs \
5da0: 22 20 22 23 7b 30 7d 3a 20 7b 32 7d 22 20 5c 22  " "#{0}: {2}" \"
5db0: 5d 0d 0a 20 20 7d 20 65 72 72 6f 72 5d 0d 0a 0d  ]..  } error]...
5dc0: 0a 20 20 74 6c 6f 67 20 22 2d 2d 2d 2d 20 42 45  .  tlog "---- BE
5dd0: 47 49 4e 20 53 54 44 4f 55 54 20 4f 55 54 50 55  GIN STDOUT OUTPU
5de0: 54 5c 6e 22 0d 0a 20 20 74 6c 6f 67 20 24 6f 75  T\n"..  tlog $ou
5df0: 74 70 75 74 0d 0a 20 20 74 6c 6f 67 20 22 5c 6e  tput..  tlog "\n
5e00: 2d 2d 2d 2d 20 45 4e 44 20 53 54 44 4f 55 54 20  ---- END STDOUT 
5e10: 4f 55 54 50 55 54 5c 6e 22 0d 0a 0d 0a 20 20 73  OUTPUT\n"....  s
5e20: 65 74 20 6c 69 6e 65 4e 75 6d 62 65 72 20 30 0d  et lineNumber 0.
5e30: 0a 20 20 73 65 74 20 69 73 36 34 20 5b 68 61 76  .  set is64 [hav
5e40: 65 43 6f 6e 73 74 72 61 69 6e 74 20 61 6d 64 36  eConstraint amd6
5e50: 34 2e 36 34 62 69 74 5d 0d 0a 20 20 73 65 74 20  4.64bit]..  set 
5e60: 77 6f 77 36 34 20 5b 65 78 70 72 20 7b 24 69 73  wow64 [expr {$is
5e70: 36 34 20 3f 20 22 5c 5c 57 6f 77 36 34 33 32 4e  64 ? "\\Wow6432N
5e80: 6f 64 65 22 20 3a 20 22 22 7d 5d 0d 0a 0d 0a 20  ode" : ""}].... 
5e90: 20 6c 69 73 74 20 24 63 6f 64 65 20 5b 65 78 70   list $code [exp
5ea0: 72 20 7b 24 63 6f 64 65 20 3d 3d 20 30 20 3f 20  r {$code == 0 ? 
5eb0: 5b 73 74 72 69 6e 67 20 65 71 75 61 6c 20 2d 6e  [string equal -n
5ec0: 6f 63 61 73 65 20 5b 72 65 61 64 46 69 6c 65 20  ocase [readFile 
5ed0: 24 66 69 6c 65 4e 61 6d 65 5d 20 5c 0d 0a 20 20  $fileName] \..  
5ee0: 20 20 20 20 5b 73 75 62 73 74 20 2d 6e 6f 62 61      [subst -noba
5ef0: 63 6b 73 6c 61 73 68 65 73 20 5b 72 65 61 64 46  ckslashes [readF
5f00: 69 6c 65 20 24 74 65 73 74 55 6e 69 6e 73 74 61  ile $testUninsta
5f10: 6c 6c 56 73 32 30 31 35 4c 6f 67 46 69 6c 65 5d  llVs2015LogFile]
5f20: 5d 5d 20 3a 20 24 65 72 72 6f 72 7d 5d 0d 0a 7d  ]] : $error}]..}
5f30: 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 63   -cleanup {..  c
5f40: 6c 65 61 6e 75 70 46 69 6c 65 20 24 66 69 6c 65  leanupFile $file
5f50: 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74 20  Name....  unset 
5f60: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 77 6f 77 36  -nocomplain wow6
5f70: 34 20 69 73 36 34 20 6c 69 6e 65 4e 75 6d 62 65  4 is64 lineNumbe
5f80: 72 20 63 6f 64 65 20 6f 75 74 70 75 74 20 65 72  r code output er
5f90: 72 6f 72 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20  ror fileName..} 
5fa0: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 5b 66 69  -constraints [fi
5fb0: 78 43 6f 6e 73 74 72 61 69 6e 74 73 20 7b 65 61  xConstraints {ea
5fc0: 67 6c 65 20 61 64 6d 69 6e 69 73 74 72 61 74 6f  gle administrato
5fd0: 72 20 21 77 6f 77 36 34 20 62 75 69 6c 64 59 65  r !wow64 buildYe
5fe0: 61 72 2e 32 30 31 35 5c 0d 0a 76 69 73 75 61 6c  ar.2015\..visual
5ff0: 53 74 75 64 69 6f 32 30 31 35 20 53 79 73 74 65  Studio2015 Syste
6000: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c  m.Data.SQLite.dl
6010: 6c 5f 76 34 2e 30 2e 33 30 33 31 39 20 66 69 6c  l_v4.0.30319 fil
6020: 65 5f 49 6e 73 74 61 6c 6c 65 72 2e 65 78 65 20  e_Installer.exe 
6030: 74 65 73 74 45 78 65 63 5c 0d 0a 66 69 6c 65 5f  testExec\..file_
6040: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
6050: 74 65 2e 64 6c 6c 20 66 69 6c 65 5f 53 79 73 74  te.dll file_Syst
6060: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 4c  em.Data.SQLite.L
6070: 69 6e 71 2e 64 6c 6c 5c 0d 0a 66 69 6c 65 5f 53  inq.dll\..file_S
6080: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
6090: 65 2e 45 46 36 2e 64 6c 6c 20 66 69 6c 65 5f 53  e.EF6.dll file_S
60a0: 51 4c 69 74 65 2e 44 65 73 69 67 6e 65 72 2e 64  QLite.Designer.d
60b0: 6c 6c 5c 0d 0a 66 69 6c 65 5f 55 6e 69 6e 73 74  ll\..file_Uninst
60c0: 61 6c 6c 65 72 5f 54 65 73 74 5f 56 73 32 30 31  aller_Test_Vs201
60d0: 35 2e 6c 6f 67 7d 5d 20 2d 72 65 73 75 6c 74 20  5.log}] -result 
60e0: 7b 30 20 54 72 75 65 7d 7d 0d 0a 0d 0a 23 23 23  {0 True}}....###
60f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6110: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6120: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6130: 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a  ############....
6140: 72 65 6e 61 6d 65 20 67 65 74 4c 69 6e 65 4e 75  rename getLineNu
6150: 6d 62 65 72 20 22 22 0d 0a 0d 0a 23 23 23 23 23  mber ""....#####
6160: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
6190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
61a0: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75  ##########....ru
61b0: 6e 53 51 4c 69 74 65 54 65 73 74 46 69 6c 65 73  nSQLiteTestFiles
61c0: 45 70 69 6c 6f 67 75 65 0d 0a 72 75 6e 53 51 4c  Epilogue..runSQL
61d0: 69 74 65 54 65 73 74 45 70 69 6c 6f 67 75 65 0d  iteTestEpilogue.
61e0: 0a 72 75 6e 54 65 73 74 45 70 69 6c 6f 67 75 65  .runTestEpilogue
61f0: 0d 0a                                            ..