Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Work in progress on the design-time components installer to run Visual Studio in 'setup' mode, forcing it to refresh its list of installed packages. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | vsNoNetFxFlags |
Files: | files | file ages | folders |
SHA1: |
277512af6b4a4dc2409b4547d763eda1 |
User & Date: | mistachkin 2013-12-28 04:41:54.990 |
Context
2013-12-28
| ||
04:48 | Minor adjustments to the previous commit. check-in: 07ed13a08f user: mistachkin tags: vsNoNetFxFlags | |
04:41 | Work in progress on the design-time components installer to run Visual Studio in 'setup' mode, forcing it to refresh its list of installed packages. check-in: 277512af6b user: mistachkin tags: vsNoNetFxFlags | |
2013-12-27
| ||
13:58 | Actually the non-standalone .NET Framework versions are still required for procesing assembly folders, etc. check-in: d3c2f76317 user: mistachkin tags: vsNoNetFxFlags | |
Changes
Changes to tools/install/Installer.cs.
︙ | ︙ | |||
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 76 77 78 79 80 81 82 83 84 85 86 87 | internal delegate bool FrameworkConfigCallback( string fileName, /* in */ string invariant, /* in */ string name, /* in */ string description, /* in */ string typeName, /* in */ AssemblyName assemblyName, /* in */ object clientData, /* in */ bool perUser, /* in */ bool wow64, /* in */ bool throwOnMissing, /* in */ bool whatIf, /* in */ bool verbose, /* in */ ref bool saved, /* out */ ref string error /* out */ ); /////////////////////////////////////////////////////////////////////////// internal delegate bool FrameworkRegistryCallback( Installer.MockRegistryKey rootKey, /* in */ string frameworkName, /* in */ Version frameworkVersion, /* in */ string platformName, /* in */ object clientData, /* in */ bool perUser, /* in */ bool wow64, /* in */ bool throwOnMissing, /* in */ bool whatIf, /* in */ bool verbose, /* in */ ref string error /* out */ ); /////////////////////////////////////////////////////////////////////////// internal delegate bool VisualStudioRegistryCallback( Installer.MockRegistryKey rootKey, /* in */ Version vsVersion, /* in */ string suffix, /* in, optional */ Installer.Package package, /* in */ object clientData, /* in */ bool perUser, /* in */ bool wow64, /* in */ bool throwOnMissing, /* in */ bool whatIf, /* in */ bool verbose, /* in */ ref string error /* out */ | > > > | 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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | internal delegate bool FrameworkConfigCallback( string fileName, /* in */ string invariant, /* in */ string name, /* in */ string description, /* in */ string typeName, /* in */ AssemblyName assemblyName, /* in */ string directory, /* in */ object clientData, /* in */ bool perUser, /* in */ bool wow64, /* in */ bool throwOnMissing, /* in */ bool whatIf, /* in */ bool verbose, /* in */ ref bool saved, /* out */ ref string error /* out */ ); /////////////////////////////////////////////////////////////////////////// internal delegate bool FrameworkRegistryCallback( Installer.MockRegistryKey rootKey, /* in */ string frameworkName, /* in */ Version frameworkVersion, /* in */ string platformName, /* in */ string directory, /* in */ object clientData, /* in */ bool perUser, /* in */ bool wow64, /* in */ bool throwOnMissing, /* in */ bool whatIf, /* in */ bool verbose, /* in */ ref string error /* out */ ); /////////////////////////////////////////////////////////////////////////// internal delegate bool VisualStudioRegistryCallback( Installer.MockRegistryKey rootKey, /* in */ Version vsVersion, /* in */ string suffix, /* in, optional */ Installer.Package package, /* in */ string directory, /* in */ object clientData, /* in */ bool perUser, /* in */ bool wow64, /* in */ bool throwOnMissing, /* in */ bool whatIf, /* in */ bool verbose, /* in */ ref string error /* out */ |
︙ | ︙ | |||
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | GlobalAssemblyCache = 0x1, AssemblyFolders = 0x2, DbProviderFactory = 0x4, VsPackage = 0x8, VsPackageGlobalAssemblyCache = 0x10, VsDataSource = 0x20, VsDataProvider = 0x40, #endregion /////////////////////////////////////////////////////////////////////// #region Composite Flags Framework = GlobalAssemblyCache | AssemblyFolders | DbProviderFactory, /////////////////////////////////////////////////////////////////////// Vs = VsPackage | VsPackageGlobalAssemblyCache | VsDataSource | | > | | 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | GlobalAssemblyCache = 0x1, AssemblyFolders = 0x2, DbProviderFactory = 0x4, VsPackage = 0x8, VsPackageGlobalAssemblyCache = 0x10, VsDataSource = 0x20, VsDataProvider = 0x40, VsDevEnvSetup = 0x80, #endregion /////////////////////////////////////////////////////////////////////// #region Composite Flags Framework = GlobalAssemblyCache | AssemblyFolders | DbProviderFactory, /////////////////////////////////////////////////////////////////////// Vs = VsPackage | VsPackageGlobalAssemblyCache | VsDataSource | VsDataProvider | VsDevEnvSetup, /////////////////////////////////////////////////////////////////////// All = Framework | Vs, /////////////////////////////////////////////////////////////////////// |
︙ | ︙ | |||
3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 | /////////////////////////////////////////////////////////////////////// private const string NameAndValueFormat = "{0}: {1}"; private const string LogFileSuffix = ".log"; /////////////////////////////////////////////////////////////////////// private const string RootKeyName = "Software"; private const string Wow64SubKeyName = "Wow6432Node"; /////////////////////////////////////////////////////////////////////// // // NOTE: The .NET Framework has both 32-bit and 64-bit editions. | > > > > | 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 | /////////////////////////////////////////////////////////////////////// private const string NameAndValueFormat = "{0}: {1}"; private const string LogFileSuffix = ".log"; /////////////////////////////////////////////////////////////////////// private const string VsDevEnvSetupFormat = "{0}: {1}"; /////////////////////////////////////////////////////////////////////// private const string RootKeyName = "Software"; private const string Wow64SubKeyName = "Wow6432Node"; /////////////////////////////////////////////////////////////////////// // // NOTE: The .NET Framework has both 32-bit and 64-bit editions. |
︙ | ︙ | |||
4364 4365 4366 4367 4368 4369 4370 | MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, bool perUser, bool wow64, bool whatIf, | | > | 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 | MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, bool perUser, bool wow64, bool whatIf, bool verbose, ref string installDirectory ) { string keyName = GetFrameworkKeyName( frameworkName, frameworkVersion, platformName, perUser, wow64); using (MockRegistryKey key = RegistryHelper.OpenSubKey( |
︙ | ︙ | |||
4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 | TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( ".NET Framework {0} found via directory {1}.", ForDisplay(frameworkVersion), ForDisplay(directory)), traceCategory); return true; } } /////////////////////////////////////////////////////////////////////// private static bool HaveFrameworkRegistry( | > | 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 | TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( ".NET Framework {0} found via directory {1}.", ForDisplay(frameworkVersion), ForDisplay(directory)), traceCategory); installDirectory = directory; return true; } } /////////////////////////////////////////////////////////////////////// private static bool HaveFrameworkRegistry( |
︙ | ︙ | |||
4562 4563 4564 4565 4566 4567 4568 4569 4570 | TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( "frameworkName = {0}, frameworkVersion = {1}, " + "platformName = {2}", ForDisplay(frameworkName), ForDisplay(frameworkVersion), ForDisplay(platformName)), traceCategory); if (!HaveFrameworkDirectory( rootKey, frameworkName, frameworkVersion, | > > | > | < < | 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 | TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( "frameworkName = {0}, frameworkVersion = {1}, " + "platformName = {2}", ForDisplay(frameworkName), ForDisplay(frameworkVersion), ForDisplay(platformName)), traceCategory); string installDirectory = null; if (!HaveFrameworkDirectory( rootKey, frameworkName, frameworkVersion, platformName, perUser, wow64, whatIf, verbose, ref installDirectory)) { TraceOps.DebugAndTrace(TracePriority.Low, debugCallback, traceCallback, String.Format( ".NET Framework {0} directory not found, " + "skipping...", ForDisplay(frameworkVersion)), traceCategory); continue; } if (callback == null) continue; string directory = installDirectory; if (String.IsNullOrEmpty(directory)) { TraceOps.DebugAndTrace(TracePriority.Low, debugCallback, traceCallback, String.Format( ".NET Framework {0} directory is invalid, " + "skipping...", ForDisplay(frameworkVersion)), |
︙ | ︙ | |||
4623 4624 4625 4626 4627 4628 4629 | continue; } bool localSaved = false; if (!callback( fileName, invariant, name, description, typeName, | | | | | 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 | continue; } bool localSaved = false; if (!callback( fileName, invariant, name, description, typeName, assemblyName, installDirectory, clientData, perUser, wow64, throwOnMissing, whatIf, verbose, ref localSaved, ref error)) { return false; } else { if (localSaved && !saved) saved = true; |
︙ | ︙ | |||
4778 4779 4780 4781 4782 4783 4784 | } if (callback == null) continue; if (!callback( rootKey, frameworkName, frameworkVersion, | | | > | 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 | } if (callback == null) continue; if (!callback( rootKey, frameworkName, frameworkVersion, platformName, null, clientData, perUser, wow64, throwOnMissing, whatIf, verbose, ref error)) { return false; } } } return true; |
︙ | ︙ | |||
4828 4829 4830 4831 4832 4833 4834 | if ((configuration == null) || !configuration.NoVs2013) vsList.Versions.Add(new Version(12, 0));// 2013 } } /////////////////////////////////////////////////////////////////////// | | | > | 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 | if ((configuration == null) || !configuration.NoVs2013) vsList.Versions.Add(new Version(12, 0));// 2013 } } /////////////////////////////////////////////////////////////////////// private static bool HaveVsVersionDirectory( MockRegistryKey rootKey, Version vsVersion, string suffix, bool perUser, bool wow64, bool whatIf, bool verbose, ref string installDirectory ) { if (vsVersion == null) return false; string keyName = GetVsKeyName(vsVersion, suffix, perUser, wow64); |
︙ | ︙ | |||
4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 | TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( "Visual Studio {0} found in directory {1}.", ForDisplay(vsVersion), ForDisplay(directory)), traceCategory); return true; } } /////////////////////////////////////////////////////////////////////// [MethodImpl(MethodImplOptions.NoInlining)] | > | 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 | TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( "Visual Studio {0} found in directory {1}.", ForDisplay(vsVersion), ForDisplay(directory)), traceCategory); installDirectory = directory; return true; } } /////////////////////////////////////////////////////////////////////// [MethodImpl(MethodImplOptions.NoInlining)] |
︙ | ︙ | |||
4930 4931 4932 4933 4934 4935 4936 | foreach (Version vsVersion in vsList.Versions) { TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( "vsVersion = {0}", ForDisplay(vsVersion)), traceCategory); | > > | | | | | | 4944 4945 4946 4947 4948 4949 4950 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 4978 | foreach (Version vsVersion in vsList.Versions) { TraceOps.DebugAndTrace(TracePriority.Lower, debugCallback, traceCallback, String.Format( "vsVersion = {0}", ForDisplay(vsVersion)), traceCategory); string installDirectory = null; if (!HaveVsVersionDirectory( rootKey, vsVersion, suffix, perUser, wow64, whatIf, verbose, ref installDirectory)) { TraceOps.DebugAndTrace(TracePriority.Low, debugCallback, traceCallback, String.Format( "Visual Studio {0} not found, skipping...", ForDisplay(vsVersion)), traceCategory); continue; } if (callback == null) continue; if (!callback( rootKey, vsVersion, suffix, package, installDirectory, clientData, perUser, wow64, throwOnMissing, whatIf, verbose, ref error)) { return false; } } return true; } |
︙ | ︙ | |||
5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 | private static bool ProcessDbProviderFactory( string fileName, string invariant, string name, string description, string typeName, AssemblyName assemblyName, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref bool saved, | > | 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 | private static bool ProcessDbProviderFactory( string fileName, string invariant, string name, string description, string typeName, AssemblyName assemblyName, string directory, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref bool saved, |
︙ | ︙ | |||
5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 | /////////////////////////////////////////////////////////////////////// private static bool ProcessAssemblyFolders( MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error | > | 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 | /////////////////////////////////////////////////////////////////////// private static bool ProcessAssemblyFolders( MockRegistryKey rootKey, string frameworkName, Version frameworkVersion, string platformName, string directory, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error |
︙ | ︙ | |||
5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsDataSource( MockRegistryKey rootKey, Version vsVersion, string suffix, Package package, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error | > | 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsDataSource( MockRegistryKey rootKey, Version vsVersion, string suffix, Package package, string directory, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error |
︙ | ︙ | |||
5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsDataProvider( MockRegistryKey rootKey, Version vsVersion, string suffix, Package package, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error | > | 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsDataProvider( MockRegistryKey rootKey, Version vsVersion, string suffix, Package package, string directory, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error |
︙ | ︙ | |||
6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsPackage( MockRegistryKey rootKey, Version vsVersion, string suffix, Package package, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error | > | 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 | /////////////////////////////////////////////////////////////////////// private static bool ProcessVsPackage( MockRegistryKey rootKey, Version vsVersion, string suffix, Package package, string directory, object clientData, bool perUser, bool wow64, bool throwOnMissing, bool whatIf, bool verbose, ref string error |
︙ | ︙ | |||
6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 | } else { return RemoveVsPackage( rootKey, vsVersion, suffix, package, perUser, wow64, throwOnMissing, whatIf, verbose, ref error); } } #endregion #endregion /////////////////////////////////////////////////////////////////////// #region Application Entry Point | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 | } else { return RemoveVsPackage( rootKey, vsVersion, suffix, package, perUser, wow64, throwOnMissing, whatIf, verbose, ref error); } } #endregion /////////////////////////////////////////////////////////////////////// #region Visual Studio Setup Handling private static void VsDevEnvSetupOutputDataReceived( object sender, DataReceivedEventArgs e ) { Process process = sender as Process; TraceOps.DebugAndTrace(TracePriority.Medium, debugCallback, traceCallback, String.Format( VsDevEnvSetupFormat, process.Id, e.Data), traceCategory); } /////////////////////////////////////////////////////////////////////// private static void VsDevEnvSetupErrorDataReceived( object sender, DataReceivedEventArgs e ) { Process process = sender as Process; TraceOps.DebugAndTrace(TracePriority.Medium, debugCallback, traceCallback, String.Format( VsDevEnvSetupFormat, process.Id, e.Data), traceCategory); } /////////////////////////////////////////////////////////////////////// private static bool AddVsDevEnvSetup( Version vsVersion, string directory, bool perUser, bool whatIf, bool verbose, ref string error ) { if (perUser) { // // NOTE: Visual Studio does not support running in 'setup' // mode on a per-user basis; therefore, skip running // it in that case. // TraceOps.DebugAndTrace(TracePriority.Higher, debugCallback, traceCallback, String.Format( "Visual Studio {0} 'setup' mode is per-machine only, " + "skipping...", ForDisplay(vsVersion)), traceCategory); return true; } ProcessStartInfo startInfo = new ProcessStartInfo(); // // NOTE: Set the core properties for the process to start. In this // case, we are starting the primary Visual Studio executable // (devenv.exe) in "setup" mode, so that it can refresh its // list of installed packages and their associated resources. // startInfo.FileName = Path.Combine(directory, "devenv.exe"); startInfo.Arguments = "/setup"; startInfo.WorkingDirectory = directory; // // NOTE: Set the boolean flag properties that require non-default // values for the process to start. In this case, we do not // want the shell to be used for starting the process. In // addition, both standard output and error data should be // redirected, so it can be logged properly. // startInfo.UseShellExecute = false; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; Process process = new Process(); process.OutputDataReceived += new DataReceivedEventHandler( VsDevEnvSetupOutputDataReceived); process.ErrorDataReceived += new DataReceivedEventHandler( VsDevEnvSetupErrorDataReceived); if (verbose) TraceOps.DebugAndTrace(TracePriority.Highest, debugCallback, traceCallback, String.Format( "fileName = {0}, arguments = {1}, " + "workingDirectory = {2}, useShellExecute = {3}, " + "redirectStandardOutput = {4}, " + "redirectStandardError = {5}", ForDisplay( startInfo.FileName), ForDisplay(startInfo.Arguments), ForDisplay(startInfo.WorkingDirectory), ForDisplay( startInfo.UseShellExecute), ForDisplay( startInfo.RedirectStandardOutput), ForDisplay( startInfo.RedirectStandardError)), traceCategory); // // NOTE: In 'what-if' mode, do not actually start the process. // if (!whatIf) { process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); } return true; } /////////////////////////////////////////////////////////////////////// private static bool RemoveVsDevEnvSetup( Version vsVersion, string directory, bool perUser, bool whatIf, bool verbose, ref string error ) { // // NOTE: Since Visual Studio does not have an 'undo' operation for // its 'setup' mode, simply execute the same command again. // This should force it to refresh its list of installed // packages and their associated resources (i.e. this will // effectively 'remove' the package being processed since // this is being done after all the other changes for the // package removal have already been completed). // return AddVsDevEnvSetup( vsVersion, directory, perUser, whatIf, verbose, ref error); } /////////////////////////////////////////////////////////////////////// private static bool ProcessVsDevEnvSetup( MockRegistryKey rootKey, Version vsVersion, string suffix, Package package, string directory, object clientData, bool perUser, 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 AddVsDevEnvSetup( vsVersion, directory, perUser, whatIf, verbose, ref error); } else { return RemoveVsDevEnvSetup( vsVersion, directory, perUser, whatIf, verbose, ref error); } } #endregion #endregion /////////////////////////////////////////////////////////////////////// #region Application Entry Point |
︙ | ︙ | |||
6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 | #region VS DataProvider if (configuration.HasFlags( InstallFlags.VsDataProvider, true)) { if (!ForEachVsVersionRegistry(registry, vsList, ProcessVsDataProvider, configuration.VsVersionSuffix, package, fileNameData, configuration.PerUser, VsIs32BitOnly || configuration.Wow64, configuration.ThrowOnMissing, configuration.WhatIf, configuration.Verbose, ref error)) { | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 | #region VS DataProvider if (configuration.HasFlags( InstallFlags.VsDataProvider, true)) { if (!ForEachVsVersionRegistry(registry, vsList, ProcessVsDataProvider, configuration.VsVersionSuffix, package, fileNameData, configuration.PerUser, VsIs32BitOnly || configuration.Wow64, configuration.ThrowOnMissing, configuration.WhatIf, configuration.Verbose, ref error)) { TraceOps.ShowMessage(TracePriority.Highest, debugCallback, traceCallback, thisAssembly, error, traceCategory, MessageBoxButtons.OK, MessageBoxIcon.Error); TraceOps.DebugAndTrace(TracePriority.MediumHigh, debugCallback, traceCallback, "Failure.", traceCategory); return 1; /* FAILURE */ } } #endregion /////////////////////////////////////////////////////////// #region VS DevEnv Setup if (configuration.HasFlags( InstallFlags.VsDevEnvSetup, true)) { if (!ForEachVsVersionRegistry(registry, vsList, ProcessVsDevEnvSetup, configuration.VsVersionSuffix, package, fileNameData, configuration.PerUser, VsIs32BitOnly || configuration.Wow64, configuration.ThrowOnMissing, configuration.WhatIf, configuration.Verbose, ref error)) { |
︙ | ︙ |