Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make the VS designer component installer aware of the WoW64 subsystem on 64-bit Windows. See ticket [d8491abd0b]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | tkt-d8491abd0b |
Files: | files | file ages | folders |
SHA1: |
13e7a22c1eff4e0747b2f7508ee7cbfb |
User & Date: | mistachkin 2012-01-27 15:53:35.650 |
References
2012-01-27
| ||
22:35 | • Ticket [d8491abd0b] Installer Error status still Pending with 5 other changes artifact: e89fe76c25 user: mistachkin | |
20:26 | • Ticket [d8491abd0b]: 1 change artifact: afaee54658 user: mistachkin | |
15:54 | • Pending ticket [d8491abd0b]. artifact: 3c64a1dc8f user: mistachkin | |
Context
2012-01-27
| ||
17:03 | Changes to VS designer component installer tests. check-in: 5267ac587b user: mistachkin tags: tkt-d8491abd0b | |
15:53 | Make the VS designer component installer aware of the WoW64 subsystem on 64-bit Windows. See ticket [d8491abd0b]. check-in: 13e7a22c1e user: mistachkin tags: tkt-d8491abd0b | |
11:29 | Update downloads page for release 1.0.78.0. check-in: cf6bbc3fd4 user: mistachkin tags: trunk, release | |
Changes
Changes to SQLite.NET.targets.
︙ | ︙ | |||
65 66 67 68 69 70 71 72 | HasTrailingSlash('$(DirForStrongName)') And Exists('$(DirForStrongName)bin\sn.exe')" Command=""$(DirForStrongName)bin\sn.exe" -Ra "$(TargetPath)" "$(AssemblyOriginatorKeyFile)"" /> <Touch AlwaysCreate="true" Files="$(TargetPath).StrongNameSign.done" /> </Target> </Project> | > > > > > > > > > > > > > > > > > > > > > > | 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | HasTrailingSlash('$(DirForStrongName)') And Exists('$(DirForStrongName)bin\sn.exe')" Command=""$(DirForStrongName)bin\sn.exe" -Ra "$(TargetPath)" "$(AssemblyOriginatorKeyFile)"" /> <Touch AlwaysCreate="true" Files="$(TargetPath).StrongNameSign.done" /> </Target> <!-- ****************************************************************************** --> <Target Name="Mark32BitOnly" Condition="'$(Mark32BitOnly)' != 'false'" Inputs="$(TargetPath)" Outputs="$(TargetPath).Mark32BitOnly.done"> <GetFrameworkSDKPath> <Output TaskParameter="Path" PropertyName="DirForMark32BitOnly" /> </GetFrameworkSDKPath> <Exec Condition="'$(DirForMark32BitOnly)' != '' And HasTrailingSlash('$(DirForMark32BitOnly)') And Exists('$(DirForMark32BitOnly)bin\CorFlags.exe')" Command=""$(DirForMark32BitOnly)bin\CorFlags.exe" "$(TargetPath)" /32BIT+ /Force" /> <Touch AlwaysCreate="true" Files="$(TargetPath).Mark32BitOnly.done" /> </Target> </Project> |
Changes to tools/install/Installer.cs.
︙ | ︙ | |||
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | string fileName, string invariant, string name, string description, string typeName, AssemblyName assemblyName, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref bool saved, ref string error ); /////////////////////////////////////////////////////////////////////////// internal delegate bool FrameworkRegistryCallback( Installer.MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref string error ); /////////////////////////////////////////////////////////////////////////// internal delegate bool VisualStudioRegistryCallback( Installer.MockRegistryKey rootKey, Version vsVersion, Installer.Package package, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref string error ); #endregion | > > > | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | string fileName, string invariant, string name, string description, string typeName, AssemblyName assemblyName, object clientData, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref bool saved, ref string error ); /////////////////////////////////////////////////////////////////////////// internal delegate bool FrameworkRegistryCallback( Installer.MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, object clientData, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error ); /////////////////////////////////////////////////////////////////////////// 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 ); #endregion |
︙ | ︙ | |||
1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 | string designerFileName, string debugFormat, string traceFormat, InstallFlags installFlags, TracePriority debugPriority, TracePriority tracePriority, bool install, bool noRuntimeVersion, bool noDesktop, bool noCompact, bool noNetFx20, bool noNetFx40, bool noVs2008, bool noVs2010, | > | 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 | string designerFileName, string debugFormat, string traceFormat, InstallFlags installFlags, TracePriority debugPriority, TracePriority tracePriority, bool install, bool wow64, bool noRuntimeVersion, bool noDesktop, bool noCompact, bool noNetFx20, bool noNetFx40, bool noVs2008, bool noVs2010, |
︙ | ︙ | |||
1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 | this.designerFileName = designerFileName; this.debugFormat = debugFormat; this.traceFormat = traceFormat; this.installFlags = installFlags; this.debugPriority = debugPriority; this.tracePriority = tracePriority; this.install = install; this.noRuntimeVersion = noRuntimeVersion; this.noDesktop = noDesktop; this.noCompact = noCompact; this.noNetFx20 = noNetFx20; this.noNetFx40 = noNetFx40; this.noVs2008 = noVs2008; this.noVs2010 = noVs2010; | > | 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 | this.designerFileName = designerFileName; this.debugFormat = debugFormat; 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; this.noVs2008 = noVs2008; this.noVs2010 = noVs2010; |
︙ | ︙ | |||
1948 1949 1950 1951 1952 1953 1954 | ref designerFileName); return new Configuration(thisAssembly, null, directory, coreFileName, linqFileName, designerFileName, TraceOps.DebugFormat, TraceOps.TraceFormat, InstallFlags.Default, TracePriority.Default, TracePriority.Default, true, false, false, false, false, | | | | 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 | ref designerFileName); 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, false, true, true, false, false, false); } /////////////////////////////////////////////////////////////////// public static bool FromArgs( string[] args, bool strict, |
︙ | ︙ | |||
2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 | return false; continue; } configuration.whatIf = (bool)value; } else { error = TraceOps.DebugAndTrace( TracePriority.Lowest, debugCallback, traceCallback, String.Format( "Unsupported command line option: {0}", ForDisplay(arg)), traceCategory); | > > > > > > > > > > > > > > > > > > > > > | 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 | return false; 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( "Unsupported command line option: {0}", ForDisplay(arg)), traceCategory); |
︙ | ︙ | |||
2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 | traceCallback(String.Format(NameAndValueFormat, "TracePriority", ForDisplay(tracePriority)), traceCategory); traceCallback(String.Format(NameAndValueFormat, "Install", ForDisplay(install)), traceCategory); traceCallback(String.Format(NameAndValueFormat, "NoRuntimeVersion", ForDisplay(noRuntimeVersion)), traceCategory); traceCallback(String.Format(NameAndValueFormat, "NoDesktop", ForDisplay(noDesktop)), | > > > > | 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 | traceCallback(String.Format(NameAndValueFormat, "TracePriority", ForDisplay(tracePriority)), 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); traceCallback(String.Format(NameAndValueFormat, "NoDesktop", ForDisplay(noDesktop)), |
︙ | ︙ | |||
3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 | private bool install; public bool Install { get { return install; } set { install = value; } } /////////////////////////////////////////////////////////////////// private bool noRuntimeVersion; public bool NoRuntimeVersion { get { return noRuntimeVersion; } | > > > > > > > > > | 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 | private bool install; 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 { get { return noRuntimeVersion; } |
︙ | ︙ | |||
3355 3356 3357 3358 3359 3360 3361 | /////////////////////////////////////////////////////////////////////// private const string NameAndValueFormat = "{0}: {1}"; private const string LogFileSuffix = ".log"; /////////////////////////////////////////////////////////////////////// | > > > > > > | | < | 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 | /////////////////////////////////////////////////////////////////////// private const string NameAndValueFormat = "{0}: {1}"; private const string LogFileSuffix = ".log"; /////////////////////////////////////////////////////////////////////// private const string RootKeyName = "Software"; private const string Wow64SubKeyName = "Wow6432Node"; /////////////////////////////////////////////////////////////////////// private static readonly bool NetFxIs32BitOnly = false; private static readonly bool VsIs32BitOnly = true; /////////////////////////////////////////////////////////////////////// private static readonly string VsIdFormat = "B"; /////////////////////////////////////////////////////////////////////// private static readonly string XPathForAddElement = "configuration/system.data/DbProviderFactories/add[@invariant=\"{0}\"]"; private static readonly string XPathForRemoveElement = |
︙ | ︙ | |||
3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 | ) { TraceOps.TraceCore(String.Format( TraceOps.TraceFormat, TraceOps.NextTraceId(), TraceOps.TimeStamp(DateTime.UtcNow), message), category); } #endregion /////////////////////////////////////////////////////////////////////// #region Generic String Handling private static string ForDisplay( object value ) | > > > > > > > > > > > > > > > > > > > > > > > > > > | 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 | ) { TraceOps.TraceCore(String.Format( TraceOps.TraceFormat, TraceOps.NextTraceId(), TraceOps.TimeStamp(DateTime.UtcNow), message), category); } #endregion /////////////////////////////////////////////////////////////////////// #region Generic Platform Handling private static bool Is64Bit() { // // 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)); } /////////////////////////////////////////////////////////////////////// private static string GetRootKeyName( bool wow64 ) { return String.Format("{0}{1}", RootKeyName, wow64 && Is64Bit() ? "\\" + Wow64SubKeyName : String.Empty); } #endregion /////////////////////////////////////////////////////////////////////// #region Generic String Handling private static string ForDisplay( object value ) |
︙ | ︙ | |||
3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 | return null; } #endregion /////////////////////////////////////////////////////////////////////// #region .NET Framework Handling private static string GetImageRuntimeVersion( string fileName ) { try { Assembly assembly = | > > > > > > > > > > > > > > > > > > > > > > > > > > > | 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 | return null; } #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 { Assembly assembly = |
︙ | ︙ | |||
3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 | } /////////////////////////////////////////////////////////////////////// private static string GetFrameworkDirectory( MockRegistryKey rootKey, Version frameworkVersion, bool whatIf, bool verbose ) { using (MockRegistryKey key = RegistryHelper.OpenSubKey( | > > | | 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 | } /////////////////////////////////////////////////////////////////////// private static string GetFrameworkDirectory( MockRegistryKey rootKey, Version frameworkVersion, bool wow64, bool whatIf, bool verbose ) { using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, GetFrameworkRootKeyName(wow64), false, whatIf, verbose)) { if (key == null) return null; object value = RegistryHelper.GetValue( key, "InstallRoot", null, whatIf, verbose); |
︙ | ︙ | |||
3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 | /////////////////////////////////////////////////////////////////////// private static bool HaveFramework( MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, bool whatIf, bool verbose ) { | > < < < < | | | | 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 | /////////////////////////////////////////////////////////////////////// private static bool HaveFramework( MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, bool wow64, bool whatIf, bool verbose ) { string keyName = GetFrameworkKeyName( frameworkName, frameworkVersion, platformName, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, false, whatIf, verbose)) { if (key == null) return false; if (platformName != null) // NOTE: Skip non-desktop. return true; string directory = GetFrameworkDirectory( rootKey, frameworkVersion, wow64, whatIf, verbose); if (String.IsNullOrEmpty(directory)) return false; if (!Directory.Exists(directory)) return false; |
︙ | ︙ | |||
3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 | FrameworkConfigCallback callback, string invariant, string name, string description, string typeName, AssemblyName assemblyName, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref bool saved, ref string error ) { | > | 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 | FrameworkConfigCallback callback, string invariant, string name, string description, string typeName, AssemblyName assemblyName, object clientData, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref bool saved, ref string error ) { |
︙ | ︙ | |||
3815 3816 3817 3818 3819 3820 3821 | "frameworkName = {0}, frameworkVersion = {1}, " + "platformName = {2}", ForDisplay(frameworkName), ForDisplay(frameworkVersion), ForDisplay(platformName)), traceCategory); if (!HaveFramework( rootKey, frameworkName, frameworkVersion, | | | | 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 | "frameworkName = {0}, frameworkVersion = {1}, " + "platformName = {2}", ForDisplay(frameworkName), ForDisplay(frameworkVersion), ForDisplay(platformName)), traceCategory); if (!HaveFramework( rootKey, frameworkName, frameworkVersion, platformName, wow64, whatIf, verbose)) { TraceOps.DebugAndTrace(TracePriority.Low, debugCallback, traceCallback, ".NET Framework not found, skipping...", traceCategory); continue; } if (callback == null) continue; string directory = GetFrameworkDirectory( rootKey, frameworkVersion, wow64, whatIf, verbose); if (String.IsNullOrEmpty(directory)) { TraceOps.DebugAndTrace(TracePriority.Low, debugCallback, traceCallback, String.Format( ".NET Framework {0} directory is invalid, " + "skipping...", ForDisplay(frameworkVersion)), |
︙ | ︙ | |||
3872 3873 3874 3875 3876 3877 3878 | continue; } bool localSaved = false; if (!callback( fileName, invariant, name, description, typeName, | | | | 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 | continue; } bool localSaved = false; if (!callback( fileName, invariant, name, description, typeName, assemblyName, clientData, wow64, throwOnMissing, whatIf, verbose, ref localSaved, ref error)) { return false; } else { if (localSaved && !saved) saved = true; |
︙ | ︙ | |||
3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 | /////////////////////////////////////////////////////////////////////// private static bool ForEachFrameworkRegistry( MockRegistry registry, FrameworkList frameworkList, FrameworkRegistryCallback callback, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { if (registry == null) | > | 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 | /////////////////////////////////////////////////////////////////////// private static bool ForEachFrameworkRegistry( MockRegistry registry, FrameworkList frameworkList, FrameworkRegistryCallback callback, object clientData, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { if (registry == null) |
︙ | ︙ | |||
3995 3996 3997 3998 3999 4000 4001 | "frameworkName = {0}, frameworkVersion = {1}, " + "platformName = {2}", ForDisplay(frameworkName), ForDisplay(frameworkVersion), ForDisplay(platformName)), traceCategory); if (!HaveFramework( rootKey, frameworkName, frameworkVersion, | | | | 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 | "frameworkName = {0}, frameworkVersion = {1}, " + "platformName = {2}", ForDisplay(frameworkName), ForDisplay(frameworkVersion), ForDisplay(platformName)), traceCategory); if (!HaveFramework( rootKey, frameworkName, frameworkVersion, platformName, wow64, whatIf, verbose)) { TraceOps.DebugAndTrace(TracePriority.Low, debugCallback, traceCallback, ".NET Framework not found, skipping...", traceCategory); continue; } if (callback == null) continue; if (!callback( rootKey, frameworkName, frameworkVersion, platformName, clientData, wow64, throwOnMissing, whatIf, verbose, ref error)) { return false; } } } |
︙ | ︙ | |||
4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 | } /////////////////////////////////////////////////////////////////////// private static bool HaveVsVersion( MockRegistryKey rootKey, Version vsVersion, bool whatIf, bool verbose ) { if (vsVersion == null) return false; | > < | | 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 | } /////////////////////////////////////////////////////////////////////// private static bool HaveVsVersion( MockRegistryKey rootKey, Version vsVersion, bool wow64, bool whatIf, bool verbose ) { if (vsVersion == null) return false; string keyName = GetVsKeyName(vsVersion, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, false, whatIf, verbose)) { if (key == null) return false; |
︙ | ︙ | |||
4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 | private static bool ForEachVsVersionRegistry( MockRegistry registry, VsList vsList, VisualStudioRegistryCallback callback, Package package, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { if (registry == null) | > | 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 | 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 ) { if (registry == null) |
︙ | ︙ | |||
4144 4145 4146 4147 4148 4149 4150 | foreach (Version vsVersion in vsList.Versions) { TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( "vsVersion = {0}", ForDisplay(vsVersion)), traceCategory); | | | | 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 | foreach (Version vsVersion in vsList.Versions) { TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( "vsVersion = {0}", ForDisplay(vsVersion)), traceCategory); if (!HaveVsVersion(rootKey, vsVersion, wow64, whatIf, verbose)) { TraceOps.DebugAndTrace(TracePriority.Low, debugCallback, traceCallback, "Visual Studio version not found, skipping...", traceCategory); continue; } if (callback == null) continue; if (!callback( rootKey, vsVersion, package, clientData, wow64, throwOnMissing, whatIf, verbose, ref error)) { return false; } } return true; |
︙ | ︙ | |||
4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 | string fileName, string invariant, string name, string description, string typeName, AssemblyName assemblyName, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref bool saved, ref string error ) { | > | 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 | string fileName, string invariant, string name, string description, string typeName, AssemblyName assemblyName, object clientData, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref bool saved, ref string error ) { |
︙ | ︙ | |||
4376 4377 4378 4379 4380 4381 4382 | /////////////////////////////////////////////////////////////////////// #region Assembly Folders Handling private static string GetAssemblyFoldersKeyName( string frameworkName, Version frameworkVersion, | | > > > > > > | | | | > | | 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 | /////////////////////////////////////////////////////////////////////// #region Assembly Folders Handling private static string GetAssemblyFoldersKeyName( string frameworkName, Version frameworkVersion, 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) ? "{0}\\Microsoft\\{1}\\v{2}\\{3}\\AssemblyFoldersEx" : "{0}\\Microsoft\\{1}\\v{2}\\AssemblyFoldersEx"; return String.Format(format, GetRootKeyName(wow64), frameworkName, frameworkVersion, platformName); } /////////////////////////////////////////////////////////////////////// private static bool AddToAssemblyFolders( MockRegistryKey rootKey, 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, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, true, whatIf, verbose)) { if (key == null) { error = String.Format( |
︙ | ︙ | |||
4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 | private static bool RemoveFromAssemblyFolders( MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, string subKeyName, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { string keyName = GetAssemblyFoldersKeyName( | > | | 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 | private static bool RemoveFromAssemblyFolders( 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, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, true, whatIf, verbose)) { if (key == null) { error = String.Format( |
︙ | ︙ | |||
4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 | private static bool ProcessAssemblyFolders( MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { AnyPair<string, bool> pair = clientData as AnyPair<string, bool>; if (pair == null) { error = "invalid framework callback data"; return false; } if (pair.Y) { return RemoveFromAssemblyFolders( rootKey, frameworkName, frameworkVersion, platformName, | > | > | | > > > > > > > > > > > | > | | > | | 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 | private static bool ProcessAssemblyFolders( MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, object clientData, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { AnyPair<string, bool> pair = clientData as AnyPair<string, bool>; if (pair == null) { error = "invalid framework callback data"; return false; } if (pair.Y) { return RemoveFromAssemblyFolders( rootKey, frameworkName, frameworkVersion, platformName, LegacyProjectName, wow64, false, whatIf, verbose, ref error) && AddToAssemblyFolders( rootKey, frameworkName, frameworkVersion, platformName, ProjectName, pair.X, wow64, whatIf, verbose, ref error); } else { return RemoveFromAssemblyFolders( rootKey, frameworkName, frameworkVersion, platformName, 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, bool wow64 ) { if (vsVersion == null) return null; 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 ) { if (vsVersion == null) { error = "invalid VS version"; return false; } if (package == null) { error = "invalid VS package"; return false; } string keyName = GetVsKeyName(vsVersion, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, false, whatIf, verbose)) { if (key == null) { error = String.Format( |
︙ | ︙ | |||
4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 | /////////////////////////////////////////////////////////////////////// private static bool RemoveVsDataSource( MockRegistryKey rootKey, Version vsVersion, Package package, bool whatIf, bool verbose, ref string error ) { if (vsVersion == null) { error = "invalid VS version"; return false; } if (package == null) { error = "invalid VS package"; return false; } | > | | 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 | /////////////////////////////////////////////////////////////////////// private static bool RemoveVsDataSource( MockRegistryKey rootKey, Version vsVersion, Package package, bool wow64, bool whatIf, bool verbose, ref string error ) { if (vsVersion == null) { error = "invalid VS version"; return false; } if (package == null) { error = "invalid VS package"; return false; } string keyName = GetVsKeyName(vsVersion, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, false, whatIf, verbose)) { if (key == null) { error = String.Format( |
︙ | ︙ | |||
4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsDataSource( MockRegistryKey rootKey, Version vsVersion, Package package, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { if (package == null) | > | 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsDataSource( MockRegistryKey rootKey, Version vsVersion, Package package, object clientData, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { if (package == null) |
︙ | ︙ | |||
4694 4695 4696 4697 4698 4699 4700 | error = "invalid VS callback data"; return false; } if (pair.Y) { return AddVsDataSource( | | > | > > | | 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 | error = "invalid VS callback data"; return false; } if (pair.Y) { return AddVsDataSource( rootKey, vsVersion, package, wow64, whatIf, verbose, ref error); } else { return RemoveVsDataSource( rootKey, vsVersion, package, wow64, whatIf, verbose, ref error); } } #endregion /////////////////////////////////////////////////////////////////////// #region Visual Studio Data Provider Handling private static bool AddVsDataProvider( MockRegistryKey rootKey, Version vsVersion, Package package, string fileName, bool wow64, bool whatIf, bool verbose, ref string error ) { if (vsVersion == null) { error = "invalid VS version"; return false; } if (package == null) { error = "invalid VS package"; return false; } string keyName = GetVsKeyName(vsVersion, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, false, whatIf, verbose)) { if (key == null) { error = String.Format( |
︙ | ︙ | |||
4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 | /////////////////////////////////////////////////////////////////////// private static bool RemoveVsDataProvider( MockRegistryKey rootKey, Version vsVersion, Package package, bool whatIf, bool verbose, ref string error ) { if (vsVersion == null) { error = "invalid VS version"; return false; } | > | | 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 | /////////////////////////////////////////////////////////////////////// private static bool RemoveVsDataProvider( MockRegistryKey rootKey, Version vsVersion, Package package, bool wow64, bool whatIf, bool verbose, ref string error ) { if (vsVersion == null) { error = "invalid VS version"; return false; } string keyName = GetVsKeyName(vsVersion, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, false, whatIf, verbose)) { if (key == null) { error = String.Format( |
︙ | ︙ | |||
4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsDataProvider( MockRegistryKey rootKey, Version vsVersion, Package package, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { AnyPair<string, bool> pair = clientData as AnyPair<string, bool>; if (pair == null) { error = "invalid VS callback data"; return false; } if (pair.Y) { return AddVsDataProvider( | > | | | | | 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsDataProvider( MockRegistryKey rootKey, Version vsVersion, Package package, object clientData, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { AnyPair<string, bool> pair = clientData as AnyPair<string, bool>; if (pair == null) { error = "invalid VS callback data"; return false; } if (pair.Y) { return AddVsDataProvider( rootKey, vsVersion, package, pair.X, wow64, whatIf, verbose, ref error); } else { return RemoveVsDataProvider( rootKey, vsVersion, package, wow64, whatIf, verbose, ref error); } } #endregion /////////////////////////////////////////////////////////////////////// #region Visual Studio Package Handling |
︙ | ︙ | |||
4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 | /////////////////////////////////////////////////////////////////////// private static bool AddVsPackage( MockRegistryKey rootKey, Version vsVersion, Package package, string fileName, bool whatIf, bool verbose, ref string error ) { if (vsVersion == null) { error = "invalid VS version"; return false; } if (package == null) { error = "invalid VS package"; return false; } | > | | 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 | /////////////////////////////////////////////////////////////////////// private static bool AddVsPackage( MockRegistryKey rootKey, Version vsVersion, Package package, string fileName, bool wow64, bool whatIf, bool verbose, ref string error ) { if (vsVersion == null) { error = "invalid VS version"; return false; } if (package == null) { error = "invalid VS package"; return false; } string keyName = GetVsKeyName(vsVersion, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, false, whatIf, verbose)) { if (key == null) { error = String.Format( |
︙ | ︙ | |||
5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 | /////////////////////////////////////////////////////////////////////// private static bool RemoveVsPackage( MockRegistryKey rootKey, Version vsVersion, Package package, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { if (vsVersion == null) { error = "invalid VS version"; return false; } if (package == null) { error = "invalid VS package"; return false; } | > | | 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 | /////////////////////////////////////////////////////////////////////// private static bool RemoveVsPackage( MockRegistryKey rootKey, Version vsVersion, Package package, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { if (vsVersion == null) { error = "invalid VS version"; return false; } if (package == null) { error = "invalid VS package"; return false; } string keyName = GetVsKeyName(vsVersion, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( rootKey, keyName, false, whatIf, verbose)) { if (key == null) { error = String.Format( |
︙ | ︙ | |||
5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsPackage( MockRegistryKey rootKey, Version vsVersion, Package package, object clientData, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { AnyPair<string, bool> pair = clientData as AnyPair<string, bool>; if (pair == null) { error = "invalid VS callback data"; return false; } if (pair.Y) { return AddVsPackage( | > | | | | | 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsPackage( MockRegistryKey rootKey, Version vsVersion, Package package, object clientData, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error ) { AnyPair<string, bool> pair = clientData as AnyPair<string, bool>; if (pair == null) { error = "invalid VS callback data"; return false; } if (pair.Y) { return AddVsPackage( rootKey, vsVersion, package, pair.X, wow64, whatIf, verbose, ref error); } else { return RemoveVsPackage( rootKey, vsVersion, package, wow64, throwOnMissing, whatIf, verbose, ref error); } } #endregion #endregion /////////////////////////////////////////////////////////////////////// |
︙ | ︙ | |||
5380 5381 5382 5383 5384 5385 5386 | #region .NET AssemblyFolders if (configuration.HasFlags( InstallFlags.AssemblyFolders, true)) { if (!ForEachFrameworkRegistry(registry, frameworkList, ProcessAssemblyFolders, | > > | | 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 | #region .NET AssemblyFolders if (configuration.HasFlags( InstallFlags.AssemblyFolders, true)) { if (!ForEachFrameworkRegistry(registry, frameworkList, ProcessAssemblyFolders, directoryData, NetFxIs32BitOnly || configuration.Wow64, configuration.ThrowOnMissing, configuration.WhatIf, configuration.Verbose, ref error)) { TraceOps.ShowMessage(TracePriority.Highest, debugCallback, traceCallback, thisAssembly, error, traceCategory, MessageBoxButtons.OK, MessageBoxIcon.Error); |
︙ | ︙ | |||
5409 5410 5411 5412 5413 5414 5415 | InstallFlags.DbProviderFactory, true)) { bool saved = false; if (!ForEachFrameworkConfig(registry, frameworkList, ProcessDbProviderFactory, InvariantName, ProviderName, Description, | | > | | 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 | InstallFlags.DbProviderFactory, true)) { bool saved = false; if (!ForEachFrameworkConfig(registry, frameworkList, ProcessDbProviderFactory, InvariantName, ProviderName, Description, FactoryTypeName, assemblyName, directoryData, NetFxIs32BitOnly || configuration.Wow64, configuration.ThrowOnMissing, configuration.WhatIf, configuration.Verbose, ref saved, ref error)) { TraceOps.ShowMessage(TracePriority.Highest, debugCallback, traceCallback, thisAssembly, error, traceCategory, MessageBoxButtons.OK, MessageBoxIcon.Error); |
︙ | ︙ | |||
5434 5435 5436 5437 5438 5439 5440 5441 5442 | /////////////////////////////////////////////////////////// #region VS Package if (configuration.HasFlags( InstallFlags.VsPackage, true)) { if (!ForEachVsVersionRegistry(registry, vsList, ProcessVsPackage, package, | > > > > > > | | 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 | /////////////////////////////////////////////////////////// #region VS Package if (configuration.HasFlags( InstallFlags.VsPackage, true)) { // // NOTE: For now, Visual Studio is always a 32-bit // native application. // if (!ForEachVsVersionRegistry(registry, vsList, ProcessVsPackage, package, fileNameData, VsIs32BitOnly || configuration.Wow64, configuration.ThrowOnMissing, configuration.WhatIf, configuration.Verbose, ref error)) { TraceOps.ShowMessage(TracePriority.Highest, debugCallback, traceCallback, thisAssembly, error, traceCategory, MessageBoxButtons.OK, MessageBoxIcon.Error); |
︙ | ︙ | |||
5460 5461 5462 5463 5464 5465 5466 5467 5468 | /////////////////////////////////////////////////////////// #region VS DataSource if (configuration.HasFlags( InstallFlags.VsDataSource, true)) { if (!ForEachVsVersionRegistry(registry, vsList, ProcessVsDataSource, package, | > > > > > > | | 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 | /////////////////////////////////////////////////////////// #region VS DataSource if (configuration.HasFlags( InstallFlags.VsDataSource, true)) { // // NOTE: For now, Visual Studio is always a 32-bit // native application. // if (!ForEachVsVersionRegistry(registry, vsList, ProcessVsDataSource, package, fileNameData, VsIs32BitOnly || configuration.Wow64, configuration.ThrowOnMissing, configuration.WhatIf, configuration.Verbose, ref error)) { TraceOps.ShowMessage(TracePriority.Highest, debugCallback, traceCallback, thisAssembly, error, traceCategory, MessageBoxButtons.OK, MessageBoxIcon.Error); |
︙ | ︙ | |||
5486 5487 5488 5489 5490 5491 5492 5493 5494 | /////////////////////////////////////////////////////////// #region VS DataProvider if (configuration.HasFlags( InstallFlags.VsDataProvider, true)) { if (!ForEachVsVersionRegistry(registry, vsList, ProcessVsDataProvider, package, | > > > > > > | | 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 | /////////////////////////////////////////////////////////// #region VS DataProvider if (configuration.HasFlags( InstallFlags.VsDataProvider, true)) { // // NOTE: For now, Visual Studio is always a 32-bit // native application. // if (!ForEachVsVersionRegistry(registry, vsList, ProcessVsDataProvider, package, fileNameData, VsIs32BitOnly || configuration.Wow64, configuration.ThrowOnMissing, configuration.WhatIf, configuration.Verbose, ref error)) { TraceOps.ShowMessage(TracePriority.Highest, debugCallback, traceCallback, thisAssembly, error, traceCategory, MessageBoxButtons.OK, MessageBoxIcon.Error); |
︙ | ︙ |