System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact be9dd21b1654c056842e01312a70a9d8f56d4c4b:


0000: 43 6f 6e 73 74 20 53 51 4c 69 74 65 56 65 72 73  Const SQLiteVers
0010: 69 6f 6e 20 3d 20 22 31 2e 30 2e 31 37 2e 30 22  ion = "1.0.17.0"
0020: 0a 0a 4d 61 69 6e 0a 0a 53 75 62 20 4d 61 69 6e  ..Main..Sub Main
0030: 28 29 0a 0a 20 20 20 44 69 6d 20 57 73 68 53 68  ()..   Dim WshSh
0040: 65 6c 6c 0a 20 20 20 53 65 74 20 57 73 68 53 68  ell.   Set WshSh
0050: 65 6c 6c 20 3d 20 57 53 63 72 69 70 74 2e 43 72  ell = WScript.Cr
0060: 65 61 74 65 4f 62 6a 65 63 74 28 22 57 53 63 72  eateObject("WScr
0070: 69 70 74 2e 53 68 65 6c 6c 22 29 0a 0a 20 20 20  ipt.Shell")..   
0080: 44 69 6d 20 66 73 6f 0a 20 20 20 53 65 74 20 66  Dim fso.   Set f
0090: 73 6f 20 3d 20 57 53 63 72 69 70 74 2e 43 72 65  so = WScript.Cre
00a0: 61 74 65 4f 62 6a 65 63 74 28 22 53 63 72 69 70  ateObject("Scrip
00b0: 74 69 6e 67 2e 46 69 6c 65 53 79 73 74 65 6d 4f  ting.FileSystemO
00c0: 62 6a 65 63 74 22 29 0a 0a 20 20 20 44 69 6d 20  bject")..   Dim 
00d0: 6d 79 44 69 72 0a 20 20 20 6d 79 44 69 72 20 3d  myDir.   myDir =
00e0: 20 66 73 6f 2e 47 65 74 50 61 72 65 6e 74 46 6f   fso.GetParentFo
00f0: 6c 64 65 72 4e 61 6d 65 28 57 53 63 72 69 70 74  lderName(WScript
0100: 2e 53 63 72 69 70 74 46 75 6c 6c 4e 61 6d 65 29  .ScriptFullName)
0110: 0a 0a 20 20 20 44 69 6d 20 72 65 67 52 6f 6f 74  ..   Dim regRoot
0120: 0a 20 20 20 72 65 67 52 6f 6f 74 20 3d 20 57 53  .   regRoot = WS
0130: 63 72 69 70 74 2e 41 72 67 75 6d 65 6e 74 73 28  cript.Arguments(
0140: 30 29 0a 20 20 20 49 66 20 52 69 67 68 74 28 72  0).   If Right(r
0150: 65 67 52 6f 6f 74 2c 20 31 29 20 3d 20 22 5c 22  egRoot, 1) = "\"
0160: 20 54 68 65 6e 0a 20 20 20 20 20 20 72 65 67 52   Then.      regR
0170: 6f 6f 74 20 3d 20 4c 65 66 74 28 72 65 67 52 6f  oot = Left(regRo
0180: 6f 74 2c 20 4c 65 6e 28 72 65 67 52 6f 6f 74 29  ot, Len(regRoot)
0190: 20 2d 20 31 29 0a 20 20 20 45 6e 64 20 49 66 0a   - 1).   End If.
01a0: 0a 20 20 20 44 69 6d 20 78 6d 6c 50 61 74 68 0a  .   Dim xmlPath.
01b0: 20 20 20 78 6d 6c 50 61 74 68 20 3d 20 66 73 6f     xmlPath = fso
01c0: 2e 47 65 74 41 62 73 6f 6c 75 74 65 50 61 74 68  .GetAbsolutePath
01d0: 4e 61 6d 65 28 57 53 63 72 69 70 74 2e 41 72 67  Name(WScript.Arg
01e0: 75 6d 65 6e 74 73 28 31 29 29 0a 20 20 20 49 66  uments(1)).   If
01f0: 20 52 69 67 68 74 28 78 6d 6c 50 61 74 68 2c 20   Right(xmlPath, 
0200: 31 29 20 3d 20 22 5c 22 20 54 68 65 6e 0a 20 20  1) = "\" Then.  
0210: 20 20 20 20 78 6d 6c 50 61 74 68 20 3d 20 4c 65      xmlPath = Le
0220: 66 74 28 78 6d 6c 50 61 74 68 2c 20 4c 65 6e 28  ft(xmlPath, Len(
0230: 78 6d 6c 50 61 74 68 29 20 2d 20 31 29 0a 20 20  xmlPath) - 1).  
0240: 20 45 6e 64 20 49 66 0a 0a 20 20 20 44 69 6d 20   End If..   Dim 
0250: 72 65 67 46 69 6c 65 0a 20 20 20 44 69 6d 20 67  regFile.   Dim g
0260: 65 6e 52 65 67 46 69 6c 65 0a 20 20 20 44 69 6d  enRegFile.   Dim
0270: 20 72 65 67 46 69 6c 65 43 6f 6e 74 65 6e 74 73   regFileContents
0280: 0a 20 20 20 53 65 74 20 72 65 67 46 69 6c 65 20  .   Set regFile 
0290: 3d 20 66 73 6f 2e 4f 70 65 6e 54 65 78 74 46 69  = fso.OpenTextFi
02a0: 6c 65 28 6d 79 44 69 72 20 26 20 22 5c 53 51 4c  le(myDir & "\SQL
02b0: 69 74 65 44 65 73 69 67 6e 65 72 2e 72 65 67 22  iteDesigner.reg"
02c0: 2c 20 31 29 0a 20 20 20 53 65 74 20 67 65 6e 52  , 1).   Set genR
02d0: 65 67 46 69 6c 65 20 3d 20 66 73 6f 2e 43 72 65  egFile = fso.Cre
02e0: 61 74 65 54 65 78 74 46 69 6c 65 28 6d 79 44 69  ateTextFile(myDi
02f0: 72 20 26 20 22 5c 53 51 4c 69 74 65 44 65 73 69  r & "\SQLiteDesi
0300: 67 6e 65 72 2e 67 65 6e 2e 72 65 67 22 2c 20 74  gner.gen.reg", t
0310: 72 75 65 29 0a 20 20 20 72 65 67 46 69 6c 65 43  rue).   regFileC
0320: 6f 6e 74 65 6e 74 73 20 3d 20 72 65 67 46 69 6c  ontents = regFil
0330: 65 2e 52 65 61 64 41 6c 6c 28 29 0a 20 20 20 72  e.ReadAll().   r
0340: 65 67 46 69 6c 65 43 6f 6e 74 65 6e 74 73 20 3d  egFileContents =
0350: 20 52 65 70 6c 61 63 65 28 72 65 67 46 69 6c 65   Replace(regFile
0360: 43 6f 6e 74 65 6e 74 73 2c 20 22 25 52 45 47 52  Contents, "%REGR
0370: 4f 4f 54 25 22 2c 20 72 65 67 52 6f 6f 74 29 0a  OOT%", regRoot).
0380: 20 20 20 72 65 67 46 69 6c 65 43 6f 6e 74 65 6e     regFileConten
0390: 74 73 20 3d 20 52 65 70 6c 61 63 65 28 72 65 67  ts = Replace(reg
03a0: 46 69 6c 65 43 6f 6e 74 65 6e 74 73 2c 20 22 25  FileContents, "%
03b0: 58 4d 4c 50 41 54 48 25 22 2c 20 52 65 70 6c 61  XMLPATH%", Repla
03c0: 63 65 28 78 6d 6c 50 61 74 68 2c 20 22 5c 22 2c  ce(xmlPath, "\",
03d0: 20 22 5c 5c 22 29 29 0a 20 20 20 67 65 6e 52 65   "\\")).   genRe
03e0: 67 46 69 6c 65 2e 57 72 69 74 65 28 72 65 67 46  gFile.Write(regF
03f0: 69 6c 65 43 6f 6e 74 65 6e 74 73 29 0a 20 20 20  ileContents).   
0400: 67 65 6e 52 65 67 46 69 6c 65 2e 43 6c 6f 73 65  genRegFile.Close
0410: 28 29 0a 20 20 20 72 65 67 46 69 6c 65 2e 43 6c  ().   regFile.Cl
0420: 6f 73 65 28 29 0a 0a 20 20 20 44 69 6d 20 6f 45  ose()..   Dim oE
0430: 78 65 63 0a 20 20 20 53 65 74 20 6f 45 78 65 63  xec.   Set oExec
0440: 20 3d 20 57 73 68 53 68 65 6c 6c 2e 45 78 65 63   = WshShell.Exec
0450: 28 22 72 65 67 65 64 69 74 20 2f 73 20 22 22 22  ("regedit /s """
0460: 20 26 20 6d 79 44 69 72 20 26 20 22 5c 53 51 4c   & myDir & "\SQL
0470: 69 74 65 44 65 73 69 67 6e 65 72 2e 67 65 6e 2e  iteDesigner.gen.
0480: 72 65 67 22 22 22 29 0a 20 20 20 44 6f 20 57 68  reg""").   Do Wh
0490: 69 6c 65 20 6f 45 78 65 63 2e 53 74 61 74 75 73  ile oExec.Status
04a0: 20 3d 20 30 0a 20 20 20 20 20 20 57 53 63 72 69   = 0.      WScri
04b0: 70 74 2e 53 6c 65 65 70 28 31 30 30 29 0a 20 20  pt.Sleep(100).  
04c0: 20 4c 6f 6f 70 0a 0a 20 20 20 66 73 6f 2e 44 65   Loop..   fso.De
04d0: 6c 65 74 65 46 69 6c 65 28 6d 79 44 69 72 20 26  leteFile(myDir &
04e0: 20 22 5c 53 51 4c 69 74 65 44 65 73 69 67 6e 65   "\SQLiteDesigne
04f0: 72 2e 67 65 6e 2e 72 65 67 22 29 0a 0a 20 20 20  r.gen.reg")..   
0500: 44 69 6d 20 6d 61 63 68 69 6e 65 43 6f 6e 66 69  Dim machineConfi
0510: 67 0a 20 20 20 44 69 6d 20 6d 61 63 68 69 6e 65  g.   Dim machine
0520: 43 6f 6e 66 69 67 46 69 6c 65 0a 20 20 20 44 69  ConfigFile.   Di
0530: 6d 20 6d 61 63 68 69 6e 65 43 6f 6e 66 69 67 50  m machineConfigP
0540: 61 74 68 0a 20 20 20 0a 20 20 20 6d 61 63 68 69  ath.   .   machi
0550: 6e 65 43 6f 6e 66 69 67 50 61 74 68 20 3d 20 66  neConfigPath = f
0560: 73 6f 2e 47 65 74 53 70 65 63 69 61 6c 46 6f 6c  so.GetSpecialFol
0570: 64 65 72 28 57 69 6e 64 6f 77 73 46 6f 6c 64 65  der(WindowsFolde
0580: 72 29 2e 50 61 74 68 20 26 20 22 5c 4d 69 63 72  r).Path & "\Micr
0590: 6f 73 6f 66 74 2e 4e 45 54 5c 46 72 61 6d 65 77  osoft.NET\Framew
05a0: 6f 72 6b 5c 76 32 2e 30 2e 35 30 32 31 35 5c 43  ork\v2.0.50215\C
05b0: 4f 4e 46 49 47 22 20 20 20 0a 20 20 20 53 65 74  ONFIG"   .   Set
05c0: 20 6d 61 63 68 69 6e 65 43 6f 6e 66 69 67 46 69   machineConfigFi
05d0: 6c 65 20 3d 20 66 73 6f 2e 4f 70 65 6e 54 65 78  le = fso.OpenTex
05e0: 74 46 69 6c 65 28 6d 61 63 68 69 6e 65 43 6f 6e  tFile(machineCon
05f0: 66 69 67 50 61 74 68 20 26 20 22 5c 6d 61 63 68  figPath & "\mach
0600: 69 6e 65 2e 63 6f 6e 66 69 67 22 29 0a 20 20 20  ine.config").   
0610: 6d 61 63 68 69 6e 65 43 6f 6e 66 69 67 20 3d 20  machineConfig = 
0620: 6d 61 63 68 69 6e 65 43 6f 6e 66 69 67 46 69 6c  machineConfigFil
0630: 65 2e 52 65 61 64 41 6c 6c 28 29 0a 20 20 20 6d  e.ReadAll().   m
0640: 61 63 68 69 6e 65 43 6f 6e 66 69 67 46 69 6c 65  achineConfigFile
0650: 2e 43 6c 6f 73 65 28 29 0a 20 20 20 0a 20 20 20  .Close().   .   
0660: 44 69 6d 20 6e 0a 20 20 20 44 69 6d 20 78 0a 20  Dim n.   Dim x. 
0670: 20 20 0a 20 20 20 6e 20 3d 20 49 6e 53 74 72 28    .   n = InStr(
0680: 31 2c 20 6d 61 63 68 69 6e 65 43 6f 6e 66 69 67  1, machineConfig
0690: 2c 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  , "System.Data.S
06a0: 51 4c 69 74 65 2c 20 56 65 72 73 69 6f 6e 3d 31  QLite, Version=1
06b0: 22 2c 20 31 29 0a 20 20 20 0a 20 20 20 49 66 20  ", 1).   .   If 
06c0: 28 6e 20 3d 20 30 29 20 54 68 65 6e 0a 20 20 20  (n = 0) Then.   
06d0: 20 20 6e 20 3d 20 49 6e 53 74 72 28 31 2c 20 6d    n = InStr(1, m
06e0: 61 63 68 69 6e 65 43 6f 6e 66 69 67 2c 20 22 3c  achineConfig, "<
06f0: 2f 44 62 50 72 6f 76 69 64 65 72 46 61 63 74 6f  /DbProviderFacto
0700: 72 69 65 73 3e 22 2c 20 31 29 0a 20 20 20 20 20  ries>", 1).     
0710: 49 66 20 6e 20 3e 20 30 20 54 68 65 6e 0a 20 20  If n > 0 Then.  
0720: 20 20 20 20 20 6e 20 3d 20 49 6e 53 74 72 52 65       n = InStrRe
0730: 76 28 6d 61 63 68 69 6e 65 43 6f 6e 66 69 67 2c  v(machineConfig,
0740: 20 76 62 43 72 4c 66 2c 20 6e 2c 20 31 29 0a 20   vbCrLf, n, 1). 
0750: 20 20 20 20 20 20 49 66 20 6e 20 3e 20 30 20 54        If n > 0 T
0760: 68 65 6e 0a 20 20 20 20 20 20 20 20 20 6d 61 63  hen.         mac
0770: 68 69 6e 65 43 6f 6e 66 69 67 20 3d 20 4c 65 66  hineConfig = Lef
0780: 74 28 6d 61 63 68 69 6e 65 43 6f 6e 66 69 67 2c  t(machineConfig,
0790: 20 6e 20 2b 20 31 29 20 26 20 22 20 20 20 20 20   n + 1) & "     
07a0: 20 3c 61 64 64 20 6e 61 6d 65 3d 22 22 53 51 4c   <add name=""SQL
07b0: 69 74 65 20 44 61 74 61 20 50 72 6f 76 69 64 65  ite Data Provide
07c0: 72 22 22 20 69 6e 76 61 72 69 61 6e 74 3d 22 22  r"" invariant=""
07d0: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
07e0: 74 65 22 22 20 64 65 73 63 72 69 70 74 69 6f 6e  te"" description
07f0: 3d 22 22 2e 4e 65 74 20 46 72 61 6d 65 77 6f 72  ="".Net Framewor
0800: 6b 20 44 61 74 61 20 50 72 6f 76 69 64 65 72 20  k Data Provider 
0810: 66 6f 72 20 53 51 4c 69 74 65 22 22 20 74 79 70  for SQLite"" typ
0820: 65 3d 22 22 53 79 73 74 65 6d 2e 44 61 74 61 2e  e=""System.Data.
0830: 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 46 61 63  SQLite.SQLiteFac
0840: 74 6f 72 79 2c 20 53 79 73 74 65 6d 2e 44 61 74  tory, System.Dat
0850: 61 2e 53 51 4c 69 74 65 2c 20 56 65 72 73 69 6f  a.SQLite, Versio
0860: 6e 3d 22 20 26 20 53 51 4c 69 74 65 56 65 72 73  n=" & SQLiteVers
0870: 69 6f 6e 20 26 20 22 2c 20 43 75 6c 74 75 72 65  ion & ", Culture
0880: 3d 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63  =neutral, Public
0890: 4b 65 79 54 6f 6b 65 6e 3d 64 62 39 33 37 62 63  KeyToken=db937bc
08a0: 32 64 34 34 66 66 31 33 39 22 22 20 2f 3e 22 20  2d44ff139"" />" 
08b0: 26 20 76 62 43 72 4c 66 20 26 20 4d 69 64 28 6d  & vbCrLf & Mid(m
08c0: 61 63 68 69 6e 65 43 6f 6e 66 69 67 2c 20 6e 20  achineConfig, n 
08d0: 2b 20 32 29 0a 20 20 20 20 20 20 20 45 6e 64 20  + 2).       End 
08e0: 49 66 0a 20 20 20 20 20 45 6e 64 20 49 66 0a 20  If.     End If. 
08f0: 20 20 45 6c 73 65 0a 20 20 20 20 20 6e 20 3d 20    Else.     n = 
0900: 6e 20 2b 20 32 37 0a 20 20 20 20 20 78 20 3d 20  n + 27.     x = 
0910: 49 6e 53 74 72 28 6e 2c 20 6d 61 63 68 69 6e 65  InStr(n, machine
0920: 43 6f 6e 66 69 67 2c 20 22 2c 22 2c 20 31 29 0a  Config, ",", 1).
0930: 20 20 20 20 20 49 66 20 78 20 3e 20 30 20 54 68       If x > 0 Th
0940: 65 6e 0a 20 20 20 20 20 20 20 6d 61 63 68 69 6e  en.       machin
0950: 65 43 6f 6e 66 69 67 20 3d 20 4c 65 66 74 28 6d  eConfig = Left(m
0960: 61 63 68 69 6e 65 43 6f 6e 66 69 67 2c 20 6e 29  achineConfig, n)
0970: 20 26 20 53 51 4c 69 74 65 56 65 72 73 69 6f 6e   & SQLiteVersion
0980: 20 26 20 4d 69 64 28 6d 61 63 68 69 6e 65 43 6f   & Mid(machineCo
0990: 6e 66 69 67 2c 20 78 29 0a 20 20 20 20 20 45 6e  nfig, x).     En
09a0: 64 20 49 66 0a 20 20 20 45 6e 64 20 49 66 0a 20  d If.   End If. 
09b0: 20 20 0a 20 20 20 53 65 74 20 6d 61 63 68 69 6e    .   Set machin
09c0: 65 43 6f 6e 66 69 67 46 69 6c 65 20 3d 20 66 73  eConfigFile = fs
09d0: 6f 2e 43 72 65 61 74 65 54 65 78 74 46 69 6c 65  o.CreateTextFile
09e0: 28 6d 61 63 68 69 6e 65 43 6f 6e 66 69 67 50 61  (machineConfigPa
09f0: 74 68 20 26 20 22 5c 6d 61 63 68 69 6e 65 2e 63  th & "\machine.c
0a00: 6f 6e 66 69 67 22 2c 20 74 72 75 65 29 0a 20 20  onfig", true).  
0a10: 20 6d 61 63 68 69 6e 65 43 6f 6e 66 69 67 46 69   machineConfigFi
0a20: 6c 65 2e 57 72 69 74 65 28 6d 61 63 68 69 6e 65  le.Write(machine
0a30: 43 6f 6e 66 69 67 29 0a 20 20 20 6d 61 63 68 69  Config).   machi
0a40: 6e 65 43 6f 6e 66 69 67 46 69 6c 65 2e 43 6c 6f  neConfigFile.Clo
0a50: 73 65 28 29 0a 20 20 20 0a 45 6e 64 20 53 75 62  se().   .End Sub
0a60: 0a                                               .