Index: Externals/Eagle/lib/Eagle1.0/test.eagle
==================================================================
--- Externals/Eagle/lib/Eagle1.0/test.eagle
+++ Externals/Eagle/lib/Eagle1.0/test.eagle
@@ -49,10 +49,29 @@
if {[string length $fileName] > 0} then {
appendSharedLogFile $fileName $string
}
}
+
+ proc getSoftwareRegistryKey { wow64 } {
+ if {$wow64 && [info exists ::tcl_platform(machine)] && \
+ $::tcl_platform(machine) eq "amd64"} then {
+ #
+ # NOTE: Return the WoW64 registry key name because we are running on a
+ # 64-bit operating system and the caller specifically requested
+ # the Win32 registry key name.
+ #
+ return Software\\Wow6432Node
+ } else {
+ #
+ # NOTE: Return the native registry key name because we are either not
+ # running on a 64-bit operating system or the caller wants the
+ # native registry key name (i.e. not the WoW64 registry key name).
+ #
+ return Software
+ }
+ }
proc haveConstraint { name } {
if {[isEagle]} then {
return [expr {
[info exists ::eagle_tests(constraints)] && \
Index: Externals/Eagle/lib/Test1.0/constraints.eagle
==================================================================
--- Externals/Eagle/lib/Test1.0/constraints.eagle
+++ Externals/Eagle/lib/Test1.0/constraints.eagle
@@ -1570,14 +1570,16 @@
#
# NOTE: Have we not found the directory yet?
#
if {[string length $directory] == 0} then {
#
- # NOTE: Registry hive where WiX install information
- # is stored.
+ # NOTE: Registry hive where WiX install information is stored. Make
+ # sure to look in the WoW64 registry because WiX is currently
+ # always installed as a 32-bit application.
#
- set key {HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Installer XML}
+ set key [appendArgs HKEY_LOCAL_MACHINE\\ \
+ [getSoftwareRegistryKey true] {\Microsoft\Windows Installer XML}]
#
# NOTE: The versions of WiX that we support.
#
set versions [list 3.5 3.0]
@@ -1678,14 +1680,16 @@
#
set visualStudioVersions [list]
if {$::tcl_platform(platform) eq "windows"} then {
#
- # NOTE: Registry hive where Visual Studio install information
- # is stored.
+ # NOTE: Registry hive where Visual Studio install information is
+ # stored. Make sure to look in the WoW64 registry because
+ # Visual Studio is currently always a 32-bit application.
#
- set key {HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio}
+ set key [appendArgs HKEY_LOCAL_MACHINE\\ \
+ [getSoftwareRegistryKey true] {\Microsoft\VisualStudio}]
#
# NOTE: The versions of Visual Studio that we support.
#
set versions [list [list 8.0 2005] [list 9.0 2008] [list 10.0 2010]]
Index: SQLite.Designer/SQLite.Designer.2008.csproj
==================================================================
--- SQLite.Designer/SQLite.Designer.2008.csproj
+++ SQLite.Designer/SQLite.Designer.2008.csproj
@@ -22,10 +22,11 @@
$(MSBuildProjectDirectory)\..
true
2008
+
$(BinaryOutputPath)
$(BinaryOutputPath)SQLite.Designer.xml
@@ -193,13 +194,28 @@
+
+
+
+ MissingVsSdk
+
+
Index: SQLite.Designer/SQLite.Designer.2010.csproj
==================================================================
--- SQLite.Designer/SQLite.Designer.2010.csproj
+++ SQLite.Designer/SQLite.Designer.2010.csproj
@@ -21,10 +21,11 @@
3.5
$(MSBuildProjectDirectory)\..
2010
+
$(BinaryOutputPath)
$(BinaryOutputPath)SQLite.Designer.xml
@@ -192,13 +193,28 @@
+
+
+
+ MissingVsSdk
+
+
Index: SQLite.NET.targets
==================================================================
--- SQLite.NET.targets
+++ SQLite.NET.targets
@@ -67,6 +67,37 @@
Command=""$(DirForStrongName)bin\sn.exe" -Ra "$(TargetPath)" "$(AssemblyOriginatorKeyFile)"" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: Setup/SQLite.iss
==================================================================
--- Setup/SQLite.iss
+++ Setup/SQLite.iss
@@ -64,12 +64,15 @@
Name: Application\Documentation; Description: Documentation components.; Types: custom compact full
Name: Application\Test; Description: Test components.; Types: custom compact full
[Tasks]
Components: Application\Core\MSIL Or Application\LINQ; Name: ngen; Description: Generate native images for the assemblies and install the images in the native image cache.; Check: CheckIsNetFx2Setup() or CheckIsNetFx4Setup()
+
+#if AppProcessor == "x86"
Components: {#InstallerCondition}; Name: vs2008; Description: Install the designer components for Visual Studio 2008.; Check: CheckIsNetFx2Setup()
Components: {#InstallerCondition}; Name: vs2010; Description: Install the designer components for Visual Studio 2010.; Check: CheckIsNetFx4Setup()
+#endif
#if Pos("NativeOnly", AppConfiguration) == 0
Components: Application\Core\MSIL Or Application\LINQ; Name: gac; Description: Install the assemblies into the global assembly cache.; Flags: unchecked; Check: CheckIsNetFx2Setup() or CheckIsNetFx4Setup()
#endif
@@ -76,16 +79,22 @@
[Run]
Components: Application\Core\MSIL; Tasks: ngen; Filename: {code:GetNetFx2InstallRoot|Ngen.exe}; Parameters: "install ""{app}\bin\System.Data.SQLite.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
Components: Application\Core\MSIL; Tasks: ngen; Filename: {code:GetNetFx4InstallRoot|Ngen.exe}; Parameters: "install ""{app}\bin\System.Data.SQLite.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
Components: Application\LINQ; Tasks: ngen; Filename: {code:GetNetFx2InstallRoot|Ngen.exe}; Parameters: "install ""{app}\bin\System.Data.SQLite.Linq.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup() and CheckForNetFx35(1)
Components: Application\LINQ; Tasks: ngen; Filename: {code:GetNetFx4InstallRoot|Ngen.exe}; Parameters: "install ""{app}\bin\System.Data.SQLite.Linq.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
-Components: {#InstallerCondition}; Tasks: vs2008; Filename: {app}\bin\Installer.exe; Parameters: "-install true -installFlags AllExceptGAC -tracePriority Lowest -verbose true -noCompact true -noNetFx40 true -noVs2010 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
-Components: {#InstallerCondition}; Tasks: vs2010; Filename: {app}\bin\Installer.exe; Parameters: "-install true -installFlags AllExceptGAC -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noVs2008 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
+
+#if AppProcessor == "x86"
+Components: {#InstallerCondition}; Tasks: vs2008; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGAC -tracePriority Lowest -verbose true -noCompact true -noNetFx40 true -noVs2010 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
+Components: {#InstallerCondition}; Tasks: vs2010; Filename: {app}\bin\Installer.exe; Parameters: "-install true -wow64 true -installFlags AllExceptGAC -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noVs2008 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
+#endif
[UninstallRun]
-Components: {#InstallerCondition}; Tasks: vs2010; Filename: {app}\bin\Installer.exe; Parameters: "-install false -installFlags AllExceptGAC -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noVs2008 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
-Components: {#InstallerCondition}; Tasks: vs2008; Filename: {app}\bin\Installer.exe; Parameters: "-install false -installFlags AllExceptGAC -tracePriority Lowest -verbose true -noCompact true -noNetFx40 true -noVs2010 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
+#if AppProcessor == "x86"
+Components: {#InstallerCondition}; Tasks: vs2010; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGAC -tracePriority Lowest -verbose true -noCompact true -noNetFx20 true -noVs2008 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
+Components: {#InstallerCondition}; Tasks: vs2008; Filename: {app}\bin\Installer.exe; Parameters: "-install false -wow64 true -installFlags AllExceptGAC -tracePriority Lowest -verbose true -noCompact true -noNetFx40 true -noVs2010 true -whatIf false -confirm true"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
+#endif
+
Components: Application\LINQ; Tasks: ngen; Filename: {code:GetNetFx4InstallRoot|Ngen.exe}; Parameters: "uninstall ""{app}\bin\System.Data.SQLite.Linq.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
Components: Application\LINQ; Tasks: ngen; Filename: {code:GetNetFx2InstallRoot|Ngen.exe}; Parameters: "uninstall ""{app}\bin\System.Data.SQLite.Linq.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup() and CheckForNetFx35(1)
Components: Application\Core\MSIL; Tasks: ngen; Filename: {code:GetNetFx4InstallRoot|Ngen.exe}; Parameters: "uninstall ""{app}\bin\System.Data.SQLite.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx4Setup()
Components: Application\Core\MSIL; Tasks: ngen; Filename: {code:GetNetFx2InstallRoot|Ngen.exe}; Parameters: "uninstall ""{app}\bin\System.Data.SQLite.dll"" /nologo"; Flags: skipifdoesntexist; Check: CheckIsNetFx2Setup()
Index: Tests/Installer_Test_Vs2008.log
==================================================================
--- Tests/Installer_Test_Vs2008.log
+++ Tests/Installer_Test_Vs2008.log
@@ -1,64 +1,64 @@
Installer.exe: #1: Configuration.Process: No actual changes will be made to this system because "what-if" mode is enabled.
Installer.exe: #2: Installer.Main: GacInstall: assemblyPath = "[file nativename [file join [getBuildDirectory] System.Data.SQLite.dll]]"
Installer.exe: #3: Installer.Main: GacInstall: assemblyPath = "[file nativename [file join [getBuildDirectory] System.Data.SQLite.Linq.dll]]"
-Installer.exe: #4: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v2.0.50727", writable = False
-Installer.exe: #5: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #6: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
-Installer.exe: #7: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", writable = True
-Installer.exe: #8: RegistryHelper.DeleteSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", subKeyName = "SQLite"
-Installer.exe: #9: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", writable = True
-Installer.exe: #10: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", subKeyName = "System.Data.SQLite"
-Installer.exe: #11: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\System.Data.SQLite", name = , value = "[file nativename [getBuildDirectory]]"
-Installer.exe: #12: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v2.0.50727", writable = False
-Installer.exe: #13: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #14: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
-Installer.exe: #15: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #16: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #4: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v2.0.50727", writable = False
+Installer.exe: #5: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #6: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #7: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", writable = True
+Installer.exe: #8: RegistryHelper.DeleteSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", subKeyName = "SQLite"
+Installer.exe: #9: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", writable = True
+Installer.exe: #10: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", subKeyName = "System.Data.SQLite"
+Installer.exe: #11: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\System.Data.SQLite", name = , value = "[file nativename [getBuildDirectory]]"
+Installer.exe: #12: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v2.0.50727", writable = False
+Installer.exe: #13: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #14: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #15: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #16: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
Installer.exe: #17: Installer.RemoveDbProviderFactory: element =
Installer.exe: #18: Installer.AddDbProviderFactory: element =
-Installer.exe: #19: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #20: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
-Installer.exe: #21: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #22: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "Packages", writable = True
-Installer.exe: #23: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
-Installer.exe: #24: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = , value = "System.Data.SQLite Designer Package"
-Installer.exe: #25: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "Class", value = "SQLite.Designer.SQLitePackage"
-Installer.exe: #26: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "CodeBase", value = "[file nativename [file join [getBuildDirectory] SQLite.Designer.dll]]"
-Installer.exe: #27: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ID", value = 400
-Installer.exe: #28: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "InprocServer32", value = "[file nativename [file join $::env(windir) system32 mscoree.dll]]"
-Installer.exe: #29: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "CompanyName", value = "http://system.data.sqlite.org/"
-Installer.exe: #30: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "MinEdition", value = "standard"
-Installer.exe: #31: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ProductName", value = "System.Data.SQLite Designer Package"
-Installer.exe: #32: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ProductVersion", value = "1.0"
-Installer.exe: #33: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", subKeyName = "Toolbox"
-Installer.exe: #34: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages\Toolbox", name = "Default Items", value = 3
-Installer.exe: #35: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "Menus", writable = True
-Installer.exe: #36: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Menus", name = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", value = ", 1000, 3"
-Installer.exe: #37: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "Services", writable = True
-Installer.exe: #38: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Services", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
-Installer.exe: #39: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Services\{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}", name = , value = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
-Installer.exe: #40: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Services\{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}", name = "Name", value = "System.Data.SQLite Designer Service"
-Installer.exe: #41: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #42: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
-Installer.exe: #43: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #44: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "DataSources", writable = True
-Installer.exe: #45: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataSources", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}"
-Installer.exe: #46: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataSources\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}", name = , value = "System.Data.SQLite Database File"
-Installer.exe: #47: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataSources\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}", subKeyName = "SupportingProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
-Installer.exe: #48: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #49: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
-Installer.exe: #50: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #51: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "DataProviders", writable = True
-Installer.exe: #52: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
-Installer.exe: #53: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = , value = ".NET Framework Data Provider for SQLite"
-Installer.exe: #54: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "InvariantName", value = "System.Data.SQLite"
-Installer.exe: #55: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "Technology", value = "{77ab9a9d-78b9-4ba7-91ac-873f5338f1d2}"
-Installer.exe: #56: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "CodeBase", value = "[file nativename [file join [getBuildDirectory] SQLite.Designer.dll]]"
-Installer.exe: #57: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "FactoryService", value = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
-Installer.exe: #58: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionUIControl"
-Installer.exe: #59: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionProperties"
-Installer.exe: #60: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionSupport"
-Installer.exe: #61: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataObjectSupport"
-Installer.exe: #62: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataViewSupport"
+Installer.exe: #19: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #20: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
+Installer.exe: #21: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #22: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "Packages", writable = True
+Installer.exe: #23: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
+Installer.exe: #24: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = , value = "System.Data.SQLite Designer Package"
+Installer.exe: #25: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "Class", value = "SQLite.Designer.SQLitePackage"
+Installer.exe: #26: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "CodeBase", value = "[file nativename [file join [getBuildDirectory] SQLite.Designer.dll]]"
+Installer.exe: #27: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ID", value = 400
+Installer.exe: #28: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "InprocServer32", value = "[file nativename [file join $::env(windir) system32 mscoree.dll]]"
+Installer.exe: #29: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "CompanyName", value = "http://system.data.sqlite.org/"
+Installer.exe: #30: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "MinEdition", value = "standard"
+Installer.exe: #31: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ProductName", value = "System.Data.SQLite Designer Package"
+Installer.exe: #32: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ProductVersion", value = "1.0"
+Installer.exe: #33: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", subKeyName = "Toolbox"
+Installer.exe: #34: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages\Toolbox", name = "Default Items", value = 3
+Installer.exe: #35: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "Menus", writable = True
+Installer.exe: #36: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Menus", name = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", value = ", 1000, 3"
+Installer.exe: #37: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "Services", writable = True
+Installer.exe: #38: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Services", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
+Installer.exe: #39: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Services\{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}", name = , value = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
+Installer.exe: #40: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Services\{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}", name = "Name", value = "System.Data.SQLite Designer Service"
+Installer.exe: #41: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #42: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
+Installer.exe: #43: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #44: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "DataSources", writable = True
+Installer.exe: #45: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataSources", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}"
+Installer.exe: #46: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataSources\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}", name = , value = "System.Data.SQLite Database File"
+Installer.exe: #47: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataSources\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}", subKeyName = "SupportingProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
+Installer.exe: #48: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #49: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
+Installer.exe: #50: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #51: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "DataProviders", writable = True
+Installer.exe: #52: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
+Installer.exe: #53: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = , value = ".NET Framework Data Provider for SQLite"
+Installer.exe: #54: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "InvariantName", value = "System.Data.SQLite"
+Installer.exe: #55: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "Technology", value = "{77ab9a9d-78b9-4ba7-91ac-873f5338f1d2}"
+Installer.exe: #56: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "CodeBase", value = "[file nativename [file join [getBuildDirectory] SQLite.Designer.dll]]"
+Installer.exe: #57: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "FactoryService", value = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
+Installer.exe: #58: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionUIControl"
+Installer.exe: #59: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionProperties"
+Installer.exe: #60: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionSupport"
+Installer.exe: #61: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataObjectSupport"
+Installer.exe: #62: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataViewSupport"
Installer.exe: #63: Installer.Main: subKeysCreated = 12, subKeysDeleted = 1, keyValuesSet = 20, keyValuesDeleted = 0
Installer.exe: #64: Installer.Main: Success.
Index: Tests/Installer_Test_Vs2010.log
==================================================================
--- Tests/Installer_Test_Vs2010.log
+++ Tests/Installer_Test_Vs2010.log
@@ -1,64 +1,64 @@
Installer.exe: #1: Configuration.Process: No actual changes will be made to this system because "what-if" mode is enabled.
Installer.exe: #2: Installer.Main: GacInstall: assemblyPath = "[file nativename [file join [getBuildDirectory] System.Data.SQLite.dll]]"
Installer.exe: #3: Installer.Main: GacInstall: assemblyPath = "[file nativename [file join [getBuildDirectory] System.Data.SQLite.Linq.dll]]"
-Installer.exe: #4: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v4.0.30319", writable = False
-Installer.exe: #5: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #6: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
-Installer.exe: #7: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", writable = True
-Installer.exe: #8: RegistryHelper.DeleteSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", subKeyName = "SQLite"
-Installer.exe: #9: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", writable = True
-Installer.exe: #10: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", subKeyName = "System.Data.SQLite"
-Installer.exe: #11: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\System.Data.SQLite", name = , value = "[file nativename [getBuildDirectory]]"
-Installer.exe: #12: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v4.0.30319", writable = False
-Installer.exe: #13: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #14: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
-Installer.exe: #15: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #16: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #4: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v4.0.30319", writable = False
+Installer.exe: #5: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #6: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #7: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", writable = True
+Installer.exe: #8: RegistryHelper.DeleteSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", subKeyName = "SQLite"
+Installer.exe: #9: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", writable = True
+Installer.exe: #10: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", subKeyName = "System.Data.SQLite"
+Installer.exe: #11: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\System.Data.SQLite", name = , value = "[file nativename [getBuildDirectory]]"
+Installer.exe: #12: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v4.0.30319", writable = False
+Installer.exe: #13: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #14: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #15: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #16: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
Installer.exe: #17: Installer.RemoveDbProviderFactory: element =
Installer.exe: #18: Installer.AddDbProviderFactory: element =
-Installer.exe: #19: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #20: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
-Installer.exe: #21: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #22: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "Packages", writable = True
-Installer.exe: #23: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
-Installer.exe: #24: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = , value = "System.Data.SQLite Designer Package"
-Installer.exe: #25: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "Class", value = "SQLite.Designer.SQLitePackage"
-Installer.exe: #26: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "CodeBase", value = "[file nativename [file join [getBuildDirectory] SQLite.Designer.dll]]"
-Installer.exe: #27: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ID", value = 400
-Installer.exe: #28: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "InprocServer32", value = "[file nativename [file join $::env(windir) system32 mscoree.dll]]"
-Installer.exe: #29: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "CompanyName", value = "http://system.data.sqlite.org/"
-Installer.exe: #30: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "MinEdition", value = "standard"
-Installer.exe: #31: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ProductName", value = "System.Data.SQLite Designer Package"
-Installer.exe: #32: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ProductVersion", value = "1.0"
-Installer.exe: #33: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", subKeyName = "Toolbox"
-Installer.exe: #34: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages\Toolbox", name = "Default Items", value = 3
-Installer.exe: #35: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "Menus", writable = True
-Installer.exe: #36: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Menus", name = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", value = ", 1000, 3"
-Installer.exe: #37: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "Services", writable = True
-Installer.exe: #38: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Services", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
-Installer.exe: #39: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Services\{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}", name = , value = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
-Installer.exe: #40: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Services\{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}", name = "Name", value = "System.Data.SQLite Designer Service"
-Installer.exe: #41: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #42: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
-Installer.exe: #43: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #44: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "DataSources", writable = True
-Installer.exe: #45: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataSources", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}"
-Installer.exe: #46: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataSources\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}", name = , value = "System.Data.SQLite Database File"
-Installer.exe: #47: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataSources\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}", subKeyName = "SupportingProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
-Installer.exe: #48: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #49: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
-Installer.exe: #50: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #51: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "DataProviders", writable = True
-Installer.exe: #52: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
-Installer.exe: #53: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = , value = ".NET Framework Data Provider for SQLite"
-Installer.exe: #54: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "InvariantName", value = "System.Data.SQLite"
-Installer.exe: #55: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "Technology", value = "{77ab9a9d-78b9-4ba7-91ac-873f5338f1d2}"
-Installer.exe: #56: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "CodeBase", value = "[file nativename [file join [getBuildDirectory] SQLite.Designer.dll]]"
-Installer.exe: #57: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "FactoryService", value = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
-Installer.exe: #58: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionUIControl"
-Installer.exe: #59: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionProperties"
-Installer.exe: #60: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionSupport"
-Installer.exe: #61: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataObjectSupport"
-Installer.exe: #62: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataViewSupport"
+Installer.exe: #19: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #20: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
+Installer.exe: #21: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #22: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "Packages", writable = True
+Installer.exe: #23: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
+Installer.exe: #24: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = , value = "System.Data.SQLite Designer Package"
+Installer.exe: #25: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "Class", value = "SQLite.Designer.SQLitePackage"
+Installer.exe: #26: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "CodeBase", value = "[file nativename [file join [getBuildDirectory] SQLite.Designer.dll]]"
+Installer.exe: #27: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ID", value = 400
+Installer.exe: #28: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "InprocServer32", value = "[file nativename [file join $::env(windir) system32 mscoree.dll]]"
+Installer.exe: #29: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "CompanyName", value = "http://system.data.sqlite.org/"
+Installer.exe: #30: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "MinEdition", value = "standard"
+Installer.exe: #31: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ProductName", value = "System.Data.SQLite Designer Package"
+Installer.exe: #32: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", name = "ProductVersion", value = "1.0"
+Installer.exe: #33: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", subKeyName = "Toolbox"
+Installer.exe: #34: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages\Toolbox", name = "Default Items", value = 3
+Installer.exe: #35: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "Menus", writable = True
+Installer.exe: #36: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Menus", name = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}", value = ", 1000, 3"
+Installer.exe: #37: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "Services", writable = True
+Installer.exe: #38: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Services", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
+Installer.exe: #39: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Services\{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}", name = , value = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
+Installer.exe: #40: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Services\{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}", name = "Name", value = "System.Data.SQLite Designer Service"
+Installer.exe: #41: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #42: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
+Installer.exe: #43: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #44: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "DataSources", writable = True
+Installer.exe: #45: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataSources", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}"
+Installer.exe: #46: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataSources\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}", name = , value = "System.Data.SQLite Database File"
+Installer.exe: #47: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataSources\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}", subKeyName = "SupportingProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
+Installer.exe: #48: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #49: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
+Installer.exe: #50: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #51: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "DataProviders", writable = True
+Installer.exe: #52: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
+Installer.exe: #53: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = , value = ".NET Framework Data Provider for SQLite"
+Installer.exe: #54: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "InvariantName", value = "System.Data.SQLite"
+Installer.exe: #55: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "Technology", value = "{77ab9a9d-78b9-4ba7-91ac-873f5338f1d2}"
+Installer.exe: #56: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "CodeBase", value = "[file nativename [file join [getBuildDirectory] SQLite.Designer.dll]]"
+Installer.exe: #57: RegistryHelper.SetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", name = "FactoryService", value = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
+Installer.exe: #58: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionUIControl"
+Installer.exe: #59: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionProperties"
+Installer.exe: #60: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataConnectionSupport"
+Installer.exe: #61: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataObjectSupport"
+Installer.exe: #62: RegistryHelper.CreateSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders\{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}", subKeyName = "SupportedObjects\DataViewSupport"
Installer.exe: #63: Installer.Main: subKeysCreated = 12, subKeysDeleted = 1, keyValuesSet = 20, keyValuesDeleted = 0
Installer.exe: #64: Installer.Main: Success.
Index: Tests/Uninstaller_Test_Vs2008.log
==================================================================
--- Tests/Uninstaller_Test_Vs2008.log
+++ Tests/Uninstaller_Test_Vs2008.log
@@ -1,35 +1,35 @@
Installer.exe: #1: Configuration.Process: No actual changes will be made to this system because "what-if" mode is enabled.
Installer.exe: #2: Installer.Main: GacRemove: assemblyPath = "[file nativename [file join [getBuildDirectory] System.Data.SQLite.Linq.dll]]"
Installer.exe: #3: Installer.Main: GacRemove: assemblyPath = "[file nativename [file join [getBuildDirectory] System.Data.SQLite.dll]]"
-Installer.exe: #4: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v2.0.50727", writable = False
-Installer.exe: #5: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #6: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
-Installer.exe: #7: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", writable = True
-Installer.exe: #8: RegistryHelper.DeleteSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", subKeyName = "System.Data.SQLite"
-Installer.exe: #9: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v2.0.50727", writable = False
-Installer.exe: #10: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #11: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
-Installer.exe: #12: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #13: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #4: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v2.0.50727", writable = False
+Installer.exe: #5: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #6: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #7: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", writable = True
+Installer.exe: #8: RegistryHelper.DeleteSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx", subKeyName = "System.Data.SQLite"
+Installer.exe: #9: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v2.0.50727", writable = False
+Installer.exe: #10: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #11: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #12: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #13: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
Installer.exe: #14: Installer.RemoveDbProviderFactory: element =
-Installer.exe: #15: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #16: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
-Installer.exe: #17: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #18: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "Packages", writable = True
-Installer.exe: #19: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Packages", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
-Installer.exe: #20: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "Menus", writable = True
-Installer.exe: #21: RegistryHelper.DeleteValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Menus", name = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
-Installer.exe: #22: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "Services", writable = True
-Installer.exe: #23: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\Services", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
-Installer.exe: #24: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #25: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
-Installer.exe: #26: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #27: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "DataSources", writable = True
-Installer.exe: #28: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataSources", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}"
-Installer.exe: #29: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #30: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
-Installer.exe: #31: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\9.0", writable = False
-Installer.exe: #32: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0", subKeyName = "DataProviders", writable = True
-Installer.exe: #33: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\9.0\DataProviders", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
+Installer.exe: #15: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #16: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
+Installer.exe: #17: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #18: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "Packages", writable = True
+Installer.exe: #19: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Packages", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
+Installer.exe: #20: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "Menus", writable = True
+Installer.exe: #21: RegistryHelper.DeleteValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Menus", name = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
+Installer.exe: #22: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "Services", writable = True
+Installer.exe: #23: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\Services", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
+Installer.exe: #24: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #25: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
+Installer.exe: #26: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #27: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "DataSources", writable = True
+Installer.exe: #28: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataSources", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}"
+Installer.exe: #29: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #30: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", name = "InstallDir", defaultValue =
+Installer.exe: #31: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\9.0", writable = False
+Installer.exe: #32: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0", subKeyName = "DataProviders", writable = True
+Installer.exe: #33: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\9.0\DataProviders", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
Installer.exe: #34: Installer.Main: subKeysCreated = 0, subKeysDeleted = 5, keyValuesSet = 0, keyValuesDeleted = 1
Installer.exe: #35: Installer.Main: Success.
Index: Tests/Uninstaller_Test_Vs2010.log
==================================================================
--- Tests/Uninstaller_Test_Vs2010.log
+++ Tests/Uninstaller_Test_Vs2010.log
@@ -1,35 +1,35 @@
Installer.exe: #1: Configuration.Process: No actual changes will be made to this system because "what-if" mode is enabled.
Installer.exe: #2: Installer.Main: GacRemove: assemblyPath = "[file nativename [file join [getBuildDirectory] System.Data.SQLite.Linq.dll]]"
Installer.exe: #3: Installer.Main: GacRemove: assemblyPath = "[file nativename [file join [getBuildDirectory] System.Data.SQLite.dll]]"
-Installer.exe: #4: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v4.0.30319", writable = False
-Installer.exe: #5: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #6: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
-Installer.exe: #7: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", writable = True
-Installer.exe: #8: RegistryHelper.DeleteSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", subKeyName = "System.Data.SQLite"
-Installer.exe: #9: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework\v4.0.30319", writable = False
-Installer.exe: #10: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #11: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
-Installer.exe: #12: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\.NETFramework", writable = False
-Installer.exe: #13: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #4: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v4.0.30319", writable = False
+Installer.exe: #5: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #6: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #7: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", writable = True
+Installer.exe: #8: RegistryHelper.DeleteSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx", subKeyName = "System.Data.SQLite"
+Installer.exe: #9: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework\v4.0.30319", writable = False
+Installer.exe: #10: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #11: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
+Installer.exe: #12: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\.NETFramework", writable = False
+Installer.exe: #13: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\.NETFramework", name = "InstallRoot", defaultValue =
Installer.exe: #14: Installer.RemoveDbProviderFactory: element =
-Installer.exe: #15: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #16: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
-Installer.exe: #17: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #18: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "Packages", writable = True
-Installer.exe: #19: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Packages", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
-Installer.exe: #20: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "Menus", writable = True
-Installer.exe: #21: RegistryHelper.DeleteValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Menus", name = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
-Installer.exe: #22: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "Services", writable = True
-Installer.exe: #23: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\Services", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
-Installer.exe: #24: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #25: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
-Installer.exe: #26: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #27: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "DataSources", writable = True
-Installer.exe: #28: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataSources", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}"
-Installer.exe: #29: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #30: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
-Installer.exe: #31: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software\Microsoft\VisualStudio\10.0", writable = False
-Installer.exe: #32: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0", subKeyName = "DataProviders", writable = True
-Installer.exe: #33: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\10.0\DataProviders", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
+Installer.exe: #15: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #16: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
+Installer.exe: #17: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #18: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "Packages", writable = True
+Installer.exe: #19: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Packages", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
+Installer.exe: #20: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "Menus", writable = True
+Installer.exe: #21: RegistryHelper.DeleteValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Menus", name = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9c}"
+Installer.exe: #22: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "Services", writable = True
+Installer.exe: #23: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\Services", subKeyName = "{dcbe6c8d-0e57-4099-a183-98ff74c64d9d}"
+Installer.exe: #24: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #25: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
+Installer.exe: #26: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #27: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "DataSources", writable = True
+Installer.exe: #28: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataSources", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c71}"
+Installer.exe: #29: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #30: RegistryHelper.GetValue: key = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", name = "InstallDir", defaultValue =
+Installer.exe: #31: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE", subKeyName = "Software${wow64}\Microsoft\VisualStudio\10.0", writable = False
+Installer.exe: #32: RegistryHelper.OpenSubKey: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0", subKeyName = "DataProviders", writable = True
+Installer.exe: #33: RegistryHelper.DeleteSubKeyTree: rootKey = "HKEY_LOCAL_MACHINE\Software${wow64}\Microsoft\VisualStudio\10.0\DataProviders", subKeyName = "{0ebaab6e-ca80-4b4a-8ddf-cbe6bf058c70}"
Installer.exe: #34: Installer.Main: subKeysCreated = 0, subKeysDeleted = 5, keyValuesSet = 0, keyValuesDeleted = 1
Installer.exe: #35: Installer.Main: Success.
Index: Tests/installer.eagle
==================================================================
--- Tests/installer.eagle
+++ Tests/installer.eagle
@@ -75,25 +75,27 @@
set code [catch {
testClrExec $installerExeFile [list -eventflags Wait -stdout output \
-success 0] -debugPriority Lowest -tracePriority MediumHigh \
-noRuntimeVersion true -noCompact true -noNetFx40 true -noVs2010 true \
- -whatIf true -verbose true -confirm true -install true \
+ -whatIf true -verbose true -confirm true -install true -wow64 true \
-logFileName [appendArgs \" [file nativename $fileName] \"] \
-traceFormat [appendArgs \" "#{0}: {2}" \"]
} error]
tlog "---- BEGIN STDOUT OUTPUT\n"
tlog $output
tlog "\n---- END STDOUT OUTPUT\n"
+ set wow64 [expr {[haveConstraint amd64.64bit] ? "\\Wow6432Node" : ""}]
+
list $code [expr {$code == 0 ? [string equal [readFile $fileName] \
[subst -nobackslashes [readFile $testInstallVs2008LogFile]]] : $error}]
} -cleanup {
cleanupFile $fileName
- unset -nocomplain code output error fileName
+ unset -nocomplain wow64 code output error fileName
} -constraints {eagle administrator visualStudio2008\
System.Data.SQLite.dll_v2.0.50727 file_Installer.exe\
file_Installer_Test_Vs2008.log} -result {0 True}}
###############################################################################
@@ -108,25 +110,27 @@
set code [catch {
testClrExec $installerExeFile [list -eventflags Wait -stdout output \
-success 0] -debugPriority Lowest -tracePriority MediumHigh \
-noRuntimeVersion true -noCompact true -noNetFx40 true -noVs2010 true \
- -whatIf true -verbose true -confirm true -install false \
+ -whatIf true -verbose true -confirm true -install false -wow64 true \
-logFileName [appendArgs \" [file nativename $fileName] \"] \
-traceFormat [appendArgs \" "#{0}: {2}" \"]
} error]
tlog "---- BEGIN STDOUT OUTPUT\n"
tlog $output
tlog "\n---- END STDOUT OUTPUT\n"
+ set wow64 [expr {[haveConstraint amd64.64bit] ? "\\Wow6432Node" : ""}]
+
list $code [expr {$code == 0 ? [string equal [readFile $fileName] \
[subst -nobackslashes [readFile $testUninstallVs2008LogFile]]] : $error}]
} -cleanup {
cleanupFile $fileName
- unset -nocomplain code output error fileName
+ unset -nocomplain wow64 code output error fileName
} -constraints {eagle administrator visualStudio2008\
System.Data.SQLite.dll_v2.0.50727 file_Installer.exe\
file_Uninstaller_Test_Vs2008.log} -result {0 True}}
###############################################################################
@@ -141,25 +145,27 @@
set code [catch {
testClrExec $installerExeFile [list -eventflags Wait -stdout output \
-success 0] -debugPriority Lowest -tracePriority MediumHigh \
-noRuntimeVersion true -noCompact true -noNetFx20 true -noVs2008 true \
- -whatIf true -verbose true -confirm true -install true \
+ -whatIf true -verbose true -confirm true -install true -wow64 true \
-logFileName [appendArgs \" [file nativename $fileName] \"] \
-traceFormat [appendArgs \" "#{0}: {2}" \"]
} error]
tlog "---- BEGIN STDOUT OUTPUT\n"
tlog $output
tlog "\n---- END STDOUT OUTPUT\n"
+ set wow64 [expr {[haveConstraint amd64.64bit] ? "\\Wow6432Node" : ""}]
+
list $code [expr {$code == 0 ? [string equal [readFile $fileName] \
[subst -nobackslashes [readFile $testInstallVs2010LogFile]]] : $error}]
} -cleanup {
cleanupFile $fileName
- unset -nocomplain code output error fileName
+ unset -nocomplain wow64 code output error fileName
} -constraints {eagle administrator visualStudio2010\
System.Data.SQLite.dll_v4.0.30319 file_Installer.exe\
file_Installer_Test_Vs2010.log} -result {0 True}}
###############################################################################
@@ -174,25 +180,27 @@
set code [catch {
testClrExec $installerExeFile [list -eventflags Wait -stdout output \
-success 0] -debugPriority Lowest -tracePriority MediumHigh \
-noRuntimeVersion true -noCompact true -noNetFx20 true -noVs2008 true \
- -whatIf true -verbose true -confirm true -install false \
+ -whatIf true -verbose true -confirm true -install false -wow64 true \
-logFileName [appendArgs \" [file nativename $fileName] \"] \
-traceFormat [appendArgs \" "#{0}: {2}" \"]
} error]
tlog "---- BEGIN STDOUT OUTPUT\n"
tlog $output
tlog "\n---- END STDOUT OUTPUT\n"
+ set wow64 [expr {[haveConstraint amd64.64bit] ? "\\Wow6432Node" : ""}]
+
list $code [expr {$code == 0 ? [string equal [readFile $fileName] \
[subst -nobackslashes [readFile $testUninstallVs2010LogFile]]] : $error}]
} -cleanup {
cleanupFile $fileName
- unset -nocomplain code output error fileName
+ unset -nocomplain wow64 code output error fileName
} -constraints {eagle administrator visualStudio2010\
System.Data.SQLite.dll_v4.0.30319 file_Installer.exe\
file_Uninstaller_Test_Vs2010.log} -result {0 True}}
###############################################################################
Index: tools/install/Installer.cs
==================================================================
--- tools/install/Installer.cs
+++ tools/install/Installer.cs
@@ -33,10 +33,11 @@
string name,
string description,
string typeName,
AssemblyName assemblyName,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref bool saved,
ref string error
@@ -48,10 +49,11 @@
Installer.MockRegistryKey rootKey,
string frameworkName,
Version frameworkVersion,
string platformName,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
);
@@ -61,10 +63,11 @@
internal delegate bool VisualStudioRegistryCallback(
Installer.MockRegistryKey rootKey,
Version vsVersion,
Installer.Package package,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
);
@@ -227,10 +230,11 @@
#endregion
///////////////////////////////////////////////////////////////////
#region Interactive Support Methods
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static DialogResult ShowMessage(
TracePriority tracePriority,
TraceCallback debugCallback,
TraceCallback traceCallback,
Assembly assembly,
@@ -1369,10 +1373,11 @@
#endregion
///////////////////////////////////////////////////////////////////
#region Public Static Methods
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static MockRegistryKey OpenSubKey(
MockRegistryKey rootKey,
string subKeyName,
bool writable,
bool whatIf,
@@ -1401,10 +1406,11 @@
new MockRegistryKey(key, whatIf, false, false) : null;
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static MockRegistryKey CreateSubKey(
MockRegistryKey rootKey,
string subKeyName,
bool whatIf,
bool verbose
@@ -1453,10 +1459,11 @@
}
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static void DeleteSubKey(
MockRegistryKey rootKey,
string subKeyName,
bool throwOnMissing,
bool whatIf,
@@ -1479,10 +1486,11 @@
subKeysDeleted++;
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static void DeleteSubKeyTree(
MockRegistryKey rootKey,
string subKeyName,
bool whatIf,
bool verbose
@@ -1504,10 +1512,11 @@
subKeysDeleted++;
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static string[] GetSubKeyNames(
MockRegistryKey key,
bool whatIf,
bool verbose
)
@@ -1523,10 +1532,11 @@
return key.GetSubKeyNames();
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static object GetValue(
MockRegistryKey key,
string name,
object defaultValue,
bool whatIf,
@@ -1546,10 +1556,11 @@
return key.GetValue(name, defaultValue);
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static void SetValue(
MockRegistryKey key,
string name,
object value,
bool whatIf,
@@ -1572,10 +1583,11 @@
keyValuesSet++;
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static void DeleteValue(
MockRegistryKey key,
string name,
bool throwOnMissing,
bool whatIf,
@@ -1757,10 +1769,11 @@
string traceFormat,
InstallFlags installFlags,
TracePriority debugPriority,
TracePriority tracePriority,
bool install,
+ bool wow64,
bool noRuntimeVersion,
bool noDesktop,
bool noCompact,
bool noNetFx20,
bool noNetFx40,
@@ -1786,10 +1799,11 @@
this.traceFormat = traceFormat;
this.installFlags = installFlags;
this.debugPriority = debugPriority;
this.tracePriority = tracePriority;
this.install = install;
+ this.wow64 = wow64;
this.noRuntimeVersion = noRuntimeVersion;
this.noDesktop = noDesktop;
this.noCompact = noCompact;
this.noNetFx20 = noNetFx20;
this.noNetFx40 = noNetFx40;
@@ -1950,16 +1964,17 @@
return new Configuration(thisAssembly, null, directory,
coreFileName, linqFileName, designerFileName,
TraceOps.DebugFormat, TraceOps.TraceFormat,
InstallFlags.Default, TracePriority.Default,
TracePriority.Default, true, false, false, false, false,
- false, false, false, false, false, false, true, true,
- false, false, false);
+ false, false, false, false, false, false, false, true,
+ true, false, false, false);
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static bool FromArgs(
string[] args,
bool strict,
ref Configuration configuration,
ref string error
@@ -2544,10 +2559,31 @@
continue;
}
configuration.whatIf = (bool)value;
}
+ else if (MatchOption(newArg, "wow64"))
+ {
+ bool? value = ParseBoolean(text);
+
+ if (value == null)
+ {
+ error = TraceOps.DebugAndTrace(
+ TracePriority.Lowest, debugCallback,
+ traceCallback, String.Format(
+ "Invalid {0} boolean value: {1}",
+ ForDisplay(arg), ForDisplay(text)),
+ traceCategory);
+
+ if (strict)
+ return false;
+
+ continue;
+ }
+
+ configuration.wow64 = (bool)value;
+ }
else
{
error = TraceOps.DebugAndTrace(
TracePriority.Lowest, debugCallback,
traceCallback, String.Format(
@@ -2572,10 +2608,11 @@
return false;
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static bool Process(
string[] args,
Configuration configuration,
bool strict,
ref string error
@@ -2729,10 +2766,11 @@
return false;
}
///////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
public static bool CheckRuntimeVersion(
Configuration configuration,
bool strict,
ref string error
)
@@ -2919,10 +2957,14 @@
traceCategory);
traceCallback(String.Format(NameAndValueFormat,
"Install", ForDisplay(install)),
traceCategory);
+
+ traceCallback(String.Format(NameAndValueFormat,
+ "Wow64", ForDisplay(wow64)),
+ traceCategory);
traceCallback(String.Format(NameAndValueFormat,
"NoRuntimeVersion", ForDisplay(noRuntimeVersion)),
traceCategory);
@@ -3106,10 +3148,19 @@
public bool Install
{
get { return install; }
set { install = value; }
}
+
+ ///////////////////////////////////////////////////////////////////
+
+ private bool wow64;
+ public bool Wow64
+ {
+ get { return wow64; }
+ set { wow64 = value; }
+ }
///////////////////////////////////////////////////////////////////
private bool noRuntimeVersion;
public bool NoRuntimeVersion
@@ -3357,16 +3408,30 @@
private const string NameAndValueFormat = "{0}: {1}";
private const string LogFileSuffix = ".log";
///////////////////////////////////////////////////////////////////////
- private static readonly string VsIdFormat = "B";
+ private const string RootKeyName = "Software";
+ private const string Wow64SubKeyName = "Wow6432Node";
+
+ ///////////////////////////////////////////////////////////////////////
+
+ //
+ // NOTE: The .NET Framework has both 32-bit and 64-bit editions.
+ //
+ private static readonly bool NetFxIs32BitOnly = false;
+
+ ///////////////////////////////////////////////////////////////////////
+
+ //
+ // NOTE: For now, Visual Studio is always a 32-bit application.
+ //
+ private static readonly bool VsIs32BitOnly = true;
///////////////////////////////////////////////////////////////////////
- private static readonly string FrameworkKeyName =
- "Software\\Microsoft\\.NETFramework";
+ private static readonly string VsIdFormat = "B";
///////////////////////////////////////////////////////////////////////
private static readonly string XPathForAddElement =
"configuration/system.data/DbProviderFactories/add[@invariant=\"{0}\"]";
@@ -3430,10 +3495,37 @@
TraceOps.TraceCore(String.Format(
TraceOps.TraceFormat, TraceOps.NextTraceId(),
TraceOps.TimeStamp(DateTime.UtcNow), message), category);
}
#endregion
+
+ ///////////////////////////////////////////////////////////////////////
+
+ #region Generic Platform Handling
+ private static bool Is64BitProcess()
+ {
+ //
+ // NOTE: Returns true if the current process is 64-bit. If this
+ // is true, we *know* that we must be running on a 64-bit
+ // operating system as well. However, if this is false, we
+ // do not necessarily know that we are running on a 32-bit
+ // operating system, due to WoW64 (Win32-on-Win64), etc.
+ //
+ return (IntPtr.Size == sizeof(long)); // NOTE: Pointer is 64-bits?
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+
+ private static string GetRootKeyName(
+ bool wow64
+ )
+ {
+ return String.Format("{0}{1}", RootKeyName,
+ wow64 && Is64BitProcess() ?
+ "\\" + Wow64SubKeyName : String.Empty);
+ }
+ #endregion
///////////////////////////////////////////////////////////////////////
#region Generic String Handling
private static string ForDisplay(
@@ -3538,10 +3630,37 @@
#endregion
///////////////////////////////////////////////////////////////////////
#region .NET Framework Handling
+ private static string GetFrameworkRootKeyName(
+ bool wow64
+ )
+ {
+ return String.Format("{0}\\Microsoft\\.NETFramework",
+ GetRootKeyName(wow64));
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+
+ private static string GetFrameworkKeyName(
+ string frameworkName,
+ Version frameworkVersion,
+ string platformName,
+ bool wow64
+ )
+ {
+ string format = !String.IsNullOrEmpty(platformName) ?
+ "{0}\\Microsoft\\{1}\\v{2}\\{3}" :
+ "{0}\\Microsoft\\{1}\\v{2}";
+
+ return String.Format(format, GetRootKeyName(wow64),
+ frameworkName, frameworkVersion, platformName);
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+
private static string GetImageRuntimeVersion(
string fileName
)
{
try
@@ -3563,16 +3682,18 @@
///////////////////////////////////////////////////////////////////////
private static string GetFrameworkDirectory(
MockRegistryKey rootKey,
Version frameworkVersion,
+ bool wow64,
bool whatIf,
bool verbose
)
{
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
- rootKey, FrameworkKeyName, false, whatIf, verbose))
+ rootKey, GetFrameworkRootKeyName(wow64), false,
+ whatIf, verbose))
{
if (key == null)
return null;
object value = RegistryHelper.GetValue(
@@ -3671,20 +3792,17 @@
private static bool HaveFramework(
MockRegistryKey rootKey,
string frameworkName,
Version frameworkVersion,
string platformName,
+ bool wow64,
bool whatIf,
bool verbose
)
{
- string format = !String.IsNullOrEmpty(platformName) ?
- "Software\\Microsoft\\{0}\\v{1}\\{2}" :
- "Software\\Microsoft\\{0}\\v{1}";
-
- string keyName = String.Format(
- format, frameworkName, frameworkVersion, platformName);
+ string keyName = GetFrameworkKeyName(
+ frameworkName, frameworkVersion, platformName, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, false, whatIf, verbose))
{
if (key == null)
@@ -3692,11 +3810,11 @@
if (platformName != null) // NOTE: Skip non-desktop.
return true;
string directory = GetFrameworkDirectory(
- rootKey, frameworkVersion, whatIf, verbose);
+ rootKey, frameworkVersion, wow64, whatIf, verbose);
if (String.IsNullOrEmpty(directory))
return false;
if (!Directory.Exists(directory))
@@ -3706,10 +3824,11 @@
}
}
///////////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
private static bool ForEachFrameworkConfig(
MockRegistry registry,
FrameworkList frameworkList,
FrameworkConfigCallback callback,
string invariant,
@@ -3716,10 +3835,11 @@
string name,
string description,
string typeName,
AssemblyName assemblyName,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref bool saved,
ref string error
@@ -3817,11 +3937,11 @@
ForDisplay(frameworkVersion),
ForDisplay(platformName)), traceCategory);
if (!HaveFramework(
rootKey, frameworkName, frameworkVersion,
- platformName, whatIf, verbose))
+ platformName, wow64, whatIf, verbose))
{
TraceOps.DebugAndTrace(TracePriority.Low,
debugCallback, traceCallback,
".NET Framework not found, skipping...",
traceCategory);
@@ -3831,11 +3951,11 @@
if (callback == null)
continue;
string directory = GetFrameworkDirectory(
- rootKey, frameworkVersion, whatIf, verbose);
+ rootKey, frameworkVersion, wow64, whatIf, verbose);
if (String.IsNullOrEmpty(directory))
{
TraceOps.DebugAndTrace(TracePriority.Low,
debugCallback, traceCallback, String.Format(
@@ -3874,12 +3994,12 @@
bool localSaved = false;
if (!callback(
fileName, invariant, name, description, typeName,
- assemblyName, clientData, throwOnMissing, whatIf,
- verbose, ref localSaved, ref error))
+ assemblyName, clientData, wow64, throwOnMissing,
+ whatIf, verbose, ref localSaved, ref error))
{
return false;
}
else
{
@@ -3899,15 +4019,17 @@
return true;
}
///////////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
private static bool ForEachFrameworkRegistry(
MockRegistry registry,
FrameworkList frameworkList,
FrameworkRegistryCallback callback,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
)
@@ -3997,11 +4119,11 @@
ForDisplay(frameworkVersion),
ForDisplay(platformName)), traceCategory);
if (!HaveFramework(
rootKey, frameworkName, frameworkVersion,
- platformName, whatIf, verbose))
+ platformName, wow64, whatIf, verbose))
{
TraceOps.DebugAndTrace(TracePriority.Low,
debugCallback, traceCallback,
".NET Framework not found, skipping...",
traceCategory);
@@ -4012,11 +4134,11 @@
if (callback == null)
continue;
if (!callback(
rootKey, frameworkName, frameworkVersion,
- platformName, clientData, throwOnMissing,
+ platformName, clientData, wow64, throwOnMissing,
whatIf, verbose, ref error))
{
return false;
}
}
@@ -4058,19 +4180,19 @@
///////////////////////////////////////////////////////////////////////
private static bool HaveVsVersion(
MockRegistryKey rootKey,
Version vsVersion,
+ bool wow64,
bool whatIf,
bool verbose
)
{
if (vsVersion == null)
return false;
- string format = "Software\\Microsoft\\VisualStudio\\{0}";
- string keyName = String.Format(format, vsVersion);
+ string keyName = GetVsKeyName(vsVersion, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, false, whatIf, verbose))
{
if (key == null)
@@ -4094,16 +4216,18 @@
}
}
///////////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
private static bool ForEachVsVersionRegistry(
MockRegistry registry,
VsList vsList,
VisualStudioRegistryCallback callback,
Package package,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
)
@@ -4146,11 +4270,11 @@
TraceOps.DebugAndTrace(TracePriority.Lower,
debugCallback, traceCallback, String.Format(
"vsVersion = {0}", ForDisplay(vsVersion)),
traceCategory);
- if (!HaveVsVersion(rootKey, vsVersion, whatIf, verbose))
+ if (!HaveVsVersion(rootKey, vsVersion, wow64, whatIf, verbose))
{
TraceOps.DebugAndTrace(TracePriority.Low,
debugCallback, traceCallback,
"Visual Studio version not found, skipping...",
traceCategory);
@@ -4160,11 +4284,11 @@
if (callback == null)
continue;
if (!callback(
- rootKey, vsVersion, package, clientData,
+ rootKey, vsVersion, package, clientData, wow64,
throwOnMissing, whatIf, verbose, ref error))
{
return false;
}
}
@@ -4174,10 +4298,11 @@
#endregion
///////////////////////////////////////////////////////////////////////
#region Configuration File Handling
+ [MethodImpl(MethodImplOptions.NoInlining)]
private static bool AddDbProviderFactory(
string fileName,
string invariant,
string name,
string description,
@@ -4279,10 +4404,11 @@
return true;
}
///////////////////////////////////////////////////////////////////////
+ [MethodImpl(MethodImplOptions.NoInlining)]
private static bool RemoveDbProviderFactory(
string fileName,
string invariant,
bool whatIf,
bool verbose,
@@ -4339,10 +4465,11 @@
string name,
string description,
string typeName,
AssemblyName assemblyName,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref bool saved,
ref string error
@@ -4378,19 +4505,25 @@
#region Assembly Folders Handling
private static string GetAssemblyFoldersKeyName(
string frameworkName,
Version frameworkVersion,
- string platformName
+ string platformName,
+ bool wow64
)
{
+ //
+ // NOTE: This registry key appears to always be 32-bit only
+ // (i.e. probably because it is only used by Visual
+ // Studio, which is currently always 32-bit only).
+ //
string format = !String.IsNullOrEmpty(platformName) ?
- "Software\\Microsoft\\{0}\\v{1}\\{2}\\AssemblyFoldersEx" :
- "Software\\Microsoft\\{0}\\v{1}\\AssemblyFoldersEx";
+ "{0}\\Microsoft\\{1}\\v{2}\\{3}\\AssemblyFoldersEx" :
+ "{0}\\Microsoft\\{1}\\v{2}\\AssemblyFoldersEx";
- return String.Format(format, frameworkName, frameworkVersion,
- platformName);
+ return String.Format(format, GetRootKeyName(wow64),
+ frameworkName, frameworkVersion, platformName);
}
///////////////////////////////////////////////////////////////////////
private static bool AddToAssemblyFolders(
@@ -4398,17 +4531,18 @@
string frameworkName,
Version frameworkVersion,
string platformName,
string subKeyName,
string directory,
+ bool wow64,
bool whatIf,
bool verbose,
ref string error
)
{
string keyName = GetAssemblyFoldersKeyName(
- frameworkName, frameworkVersion, platformName);
+ frameworkName, frameworkVersion, platformName, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, true, whatIf, verbose))
{
if (key == null)
@@ -4446,18 +4580,19 @@
MockRegistryKey rootKey,
string frameworkName,
Version frameworkVersion,
string platformName,
string subKeyName,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
)
{
string keyName = GetAssemblyFoldersKeyName(
- frameworkName, frameworkVersion, platformName);
+ frameworkName, frameworkVersion, platformName, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, true, whatIf, verbose))
{
if (key == null)
@@ -4482,10 +4617,11 @@
MockRegistryKey rootKey,
string frameworkName,
Version frameworkVersion,
string platformName,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
)
@@ -4500,45 +4636,59 @@
if (pair.Y)
{
return RemoveFromAssemblyFolders(
rootKey, frameworkName, frameworkVersion, platformName,
- LegacyProjectName, false, whatIf, verbose, ref error) &&
+ LegacyProjectName, wow64, false, whatIf, verbose,
+ ref error) &&
AddToAssemblyFolders(
rootKey, frameworkName, frameworkVersion, platformName,
- ProjectName, pair.X, whatIf, verbose, ref error);
+ ProjectName, pair.X, wow64, whatIf, verbose, ref error);
}
else
{
return RemoveFromAssemblyFolders(
rootKey, frameworkName, frameworkVersion, platformName,
- ProjectName, throwOnMissing, whatIf, verbose, ref error);
+ ProjectName, wow64, throwOnMissing, whatIf, verbose,
+ ref error);
}
}
#endregion
///////////////////////////////////////////////////////////////////////
#region Visual Studio Handling
+ private static string GetVsRootKeyName(
+ bool wow64
+ )
+ {
+ return String.Format("{0}\\Microsoft\\VisualStudio",
+ GetRootKeyName(wow64));
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+
private static string GetVsKeyName(
- Version vsVersion
+ Version vsVersion,
+ bool wow64
)
{
if (vsVersion == null)
return null;
- return String.Format("Software\\Microsoft\\VisualStudio\\{0}",
- vsVersion);
+ return String.Format(
+ "{0}\\{1}", GetVsRootKeyName(wow64), vsVersion);
}
///////////////////////////////////////////////////////////////////////
#region Visual Studio Data Source Handling
private static bool AddVsDataSource(
MockRegistryKey rootKey,
Version vsVersion,
Package package,
+ bool wow64,
bool whatIf,
bool verbose,
ref string error
)
{
@@ -4552,11 +4702,11 @@
{
error = "invalid VS package";
return false;
}
- string keyName = GetVsKeyName(vsVersion);
+ string keyName = GetVsKeyName(vsVersion, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, false, whatIf, verbose))
{
if (key == null)
@@ -4614,10 +4764,11 @@
private static bool RemoveVsDataSource(
MockRegistryKey rootKey,
Version vsVersion,
Package package,
+ bool wow64,
bool whatIf,
bool verbose,
ref string error
)
{
@@ -4631,11 +4782,11 @@
{
error = "invalid VS package";
return false;
}
- string keyName = GetVsKeyName(vsVersion);
+ string keyName = GetVsKeyName(vsVersion, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, false, whatIf, verbose))
{
if (key == null)
@@ -4673,10 +4824,11 @@
private static bool ProcessVsDataSource(
MockRegistryKey rootKey,
Version vsVersion,
Package package,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
)
@@ -4696,16 +4848,18 @@
}
if (pair.Y)
{
return AddVsDataSource(
- rootKey, vsVersion, package, whatIf, verbose, ref error);
+ rootKey, vsVersion, package, wow64, whatIf, verbose,
+ ref error);
}
else
{
return RemoveVsDataSource(
- rootKey, vsVersion, package, whatIf, verbose, ref error);
+ rootKey, vsVersion, package, wow64, whatIf, verbose,
+ ref error);
}
}
#endregion
///////////////////////////////////////////////////////////////////////
@@ -4714,10 +4868,11 @@
private static bool AddVsDataProvider(
MockRegistryKey rootKey,
Version vsVersion,
Package package,
string fileName,
+ bool wow64,
bool whatIf,
bool verbose,
ref string error
)
{
@@ -4731,11 +4886,11 @@
{
error = "invalid VS package";
return false;
}
- string keyName = GetVsKeyName(vsVersion);
+ string keyName = GetVsKeyName(vsVersion, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, false, whatIf, verbose))
{
if (key == null)
@@ -4825,10 +4980,11 @@
private static bool RemoveVsDataProvider(
MockRegistryKey rootKey,
Version vsVersion,
Package package,
+ bool wow64,
bool whatIf,
bool verbose,
ref string error
)
{
@@ -4836,11 +4992,11 @@
{
error = "invalid VS version";
return false;
}
- string keyName = GetVsKeyName(vsVersion);
+ string keyName = GetVsKeyName(vsVersion, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, false, whatIf, verbose))
{
if (key == null)
@@ -4878,10 +5034,11 @@
private static bool ProcessVsDataProvider(
MockRegistryKey rootKey,
Version vsVersion,
Package package,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
)
@@ -4895,18 +5052,18 @@
}
if (pair.Y)
{
return AddVsDataProvider(
- rootKey, vsVersion, package, pair.X,
- whatIf, verbose, ref error);
+ rootKey, vsVersion, package, pair.X, wow64, whatIf,
+ verbose, ref error);
}
else
{
return RemoveVsDataProvider(
- rootKey, vsVersion, package, whatIf,
- verbose, ref error);
+ rootKey, vsVersion, package, wow64, whatIf, verbose,
+ ref error);
}
}
#endregion
///////////////////////////////////////////////////////////////////////
@@ -4942,10 +5099,11 @@
private static bool AddVsPackage(
MockRegistryKey rootKey,
Version vsVersion,
Package package,
string fileName,
+ bool wow64,
bool whatIf,
bool verbose,
ref string error
)
{
@@ -4959,11 +5117,11 @@
{
error = "invalid VS package";
return false;
}
- string keyName = GetVsKeyName(vsVersion);
+ string keyName = GetVsKeyName(vsVersion, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, false, whatIf, verbose))
{
if (key == null)
@@ -5112,10 +5270,11 @@
private static bool RemoveVsPackage(
MockRegistryKey rootKey,
Version vsVersion,
Package package,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
)
@@ -5130,11 +5289,11 @@
{
error = "invalid VS package";
return false;
}
- string keyName = GetVsKeyName(vsVersion);
+ string keyName = GetVsKeyName(vsVersion, wow64);
using (MockRegistryKey key = RegistryHelper.OpenSubKey(
rootKey, keyName, false, whatIf, verbose))
{
if (key == null)
@@ -5206,10 +5365,11 @@
private static bool ProcessVsPackage(
MockRegistryKey rootKey,
Version vsVersion,
Package package,
object clientData,
+ bool wow64,
bool throwOnMissing,
bool whatIf,
bool verbose,
ref string error
)
@@ -5223,26 +5383,27 @@
}
if (pair.Y)
{
return AddVsPackage(
- rootKey, vsVersion, package, pair.X, whatIf, verbose,
- ref error);
+ rootKey, vsVersion, package, pair.X, wow64, whatIf,
+ verbose, ref error);
}
else
{
return RemoveVsPackage(
- rootKey, vsVersion, package, throwOnMissing, whatIf,
- verbose, ref error);
+ rootKey, vsVersion, package, wow64, throwOnMissing,
+ whatIf, verbose, ref error);
}
}
#endregion
#endregion
///////////////////////////////////////////////////////////////////////
#region Application Entry Point
+ [MethodImpl(MethodImplOptions.NoInlining)]
private static int Main(
string[] args
)
{
try
@@ -5382,11 +5543,13 @@
if (configuration.HasFlags(
InstallFlags.AssemblyFolders, true))
{
if (!ForEachFrameworkRegistry(registry,
frameworkList, ProcessAssemblyFolders,
- directoryData, configuration.ThrowOnMissing,
+ directoryData,
+ NetFxIs32BitOnly || configuration.Wow64,
+ configuration.ThrowOnMissing,
configuration.WhatIf, configuration.Verbose,
ref error))
{
TraceOps.ShowMessage(TracePriority.Highest,
debugCallback, traceCallback, thisAssembly,
@@ -5411,12 +5574,13 @@
bool saved = false;
if (!ForEachFrameworkConfig(registry,
frameworkList, ProcessDbProviderFactory,
InvariantName, ProviderName, Description,
- FactoryTypeName, assemblyName,
- directoryData, configuration.ThrowOnMissing,
+ FactoryTypeName, assemblyName, directoryData,
+ NetFxIs32BitOnly || configuration.Wow64,
+ configuration.ThrowOnMissing,
configuration.WhatIf, configuration.Verbose,
ref saved, ref error))
{
TraceOps.ShowMessage(TracePriority.Highest,
debugCallback, traceCallback, thisAssembly,
@@ -5438,11 +5602,13 @@
if (configuration.HasFlags(
InstallFlags.VsPackage, true))
{
if (!ForEachVsVersionRegistry(registry,
vsList, ProcessVsPackage, package,
- fileNameData, configuration.ThrowOnMissing,
+ fileNameData,
+ VsIs32BitOnly || configuration.Wow64,
+ configuration.ThrowOnMissing,
configuration.WhatIf, configuration.Verbose,
ref error))
{
TraceOps.ShowMessage(TracePriority.Highest,
debugCallback, traceCallback, thisAssembly,
@@ -5464,11 +5630,13 @@
if (configuration.HasFlags(
InstallFlags.VsDataSource, true))
{
if (!ForEachVsVersionRegistry(registry,
vsList, ProcessVsDataSource, package,
- fileNameData, configuration.ThrowOnMissing,
+ fileNameData,
+ VsIs32BitOnly || configuration.Wow64,
+ configuration.ThrowOnMissing,
configuration.WhatIf, configuration.Verbose,
ref error))
{
TraceOps.ShowMessage(TracePriority.Highest,
debugCallback, traceCallback, thisAssembly,
@@ -5490,11 +5658,13 @@
if (configuration.HasFlags(
InstallFlags.VsDataProvider, true))
{
if (!ForEachVsVersionRegistry(registry,
vsList, ProcessVsDataProvider, package,
- fileNameData, configuration.ThrowOnMissing,
+ fileNameData,
+ VsIs32BitOnly || configuration.Wow64,
+ configuration.ThrowOnMissing,
configuration.WhatIf, configuration.Verbose,
ref error))
{
TraceOps.ShowMessage(TracePriority.Highest,
debugCallback, traceCallback, thisAssembly,