private void PopulatePre2017InstallPath( VisualizerAssembly visualizerAssembly, ICollection <VisualizerInstaller> installers) { if (visualizerAssembly.VsYear >= 2017) { return; } var pre2017Key = _vsPre2017KeyNames .FirstOrDefault(name => name == visualizerAssembly.VsFullVersionNumber); if (pre2017Key == null) { return; } using (var vsSubKey = _vsPre2017MachineKey.OpenSubKey(pre2017Key)) { var installDirectory = vsSubKey?.GetValue("InstallDir") as string; if (string.IsNullOrWhiteSpace(installDirectory) || !Directory.Exists(installDirectory)) { return; } installers.Add(CreateInstaller(vsSubKey, installDirectory, visualizerAssembly)); } }
private bool TryPopulateInstallers( VisualizerAssembly visualizerAssembly, out ICollection <VisualizerInstaller> installers) { installers = new List <VisualizerInstaller>(); PopulatePre2017InstallPath(visualizerAssembly, installers); PopulatePost2015InstallPaths(visualizerAssembly, installers); return(installers.Count > 0); }
private VisualizerInstaller CreateInstaller( RegistryKey registryKey, string vsInstallDirectory, VisualizerAssembly visualizerAssembly) { return(new VisualizerInstaller( _logger, _vsixManifest, registryKey, vsInstallDirectory, visualizerAssembly)); }
private void PopulatePost2015InstallPaths( VisualizerAssembly visualizerAssembly, ICollection <VisualizerInstaller> installers) { if (visualizerAssembly.VsYear <= 2015) { return; } foreach (var dataItem in _vsPost2015Data) { if (dataItem.IsValid && (dataItem.VsFullVersionNumber == visualizerAssembly.VsFullVersionNumber)) { installers.Add(CreateInstaller( dataItem.RegistryKey, dataItem.InstallDirectory, visualizerAssembly)); } } }
public VisualizerInstaller( Action <string> logger, VsixManifest vsixManifest, RegistryKey registryKey, string vsInstallDirectory, VisualizerAssembly visualizerAssembly) { _logger = logger; _vsixManifestInstaller = new VsixManifestInstaller( logger, registryKey, vsInstallDirectory, vsixManifest); _visualizerAssembly = visualizerAssembly; VsId = _visualizerAssembly.VsYear.ToString(); var indexOfIde = vsInstallDirectory.IndexOf("IDE", OrdinalIgnoreCase); var pathToCommon7 = vsInstallDirectory.Substring(0, indexOfIde); _visualizersDirectory = Path.Combine(pathToCommon7, "Packages", "Debugger", "Visualizers"); }
public IEnumerable <VisualizerInstaller> GetInstallersFor(VisualizerAssembly visualizerAssembly) { return(TryPopulateInstallers(visualizerAssembly, out var visualizerInstallers) ? visualizerInstallers : Enumerable.Empty <VisualizerInstaller>()); }