public VsixManifestInstaller( Action <string> logger, RegistryKey registryKey, string vsInstallDirectory, VsixManifest vsixManifest) { _logger = logger; _vsixManifest = vsixManifest; _installDirectory = Path.Combine( vsInstallDirectory, "Extensions", VersionNumber.CompanyName, VersionNumber.ProductName, VersionNumber.FileVersion); _installDirectoryInfo = new DirectoryInfo(_installDirectory); _installPath = Path.Combine(_installDirectory, "extension.vsixmanifest"); var pathToDevEnv = Path.Combine(vsInstallDirectory, "devenv.exe"); if (!File.Exists(pathToDevEnv)) { return; } _vsExePath = pathToDevEnv; _vsSetupArgument = registryKey?.GetValue("SetupCommandLine") as string ?? "/setup"; }
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 VisualizerInstallerFactory(Action <string> logger, VsixManifest vsixManifest) { _logger = logger; _vsixManifest = vsixManifest; const string REGISTRY_KEY = @"SOFTWARE\Microsoft"; _msMachineKey = Registry.LocalMachine.OpenSubKey(REGISTRY_KEY); if (_msMachineKey == null) { ErrorMessage = $"Unable to open the '{REGISTRY_KEY}' registry key"; NoVisualStudio = true; return; } var vsKeyNames = _msMachineKey .GetSubKeyNames() .Where(sk => sk.StartsWith("VisualStudio", Ordinal)) .ToArray(); if (vsKeyNames.Length == 0) { ErrorMessage = $@"Unable to find any '{REGISTRY_KEY}\VisualStudio' registry keys from which to determine your Visual Studio install paths"; NoVisualStudio = true; return; } _vsPre2017MachineKey = _msMachineKey.OpenSubKey("VisualStudio"); _vsPre2017KeyNames = _vsPre2017MachineKey?.GetSubKeyNames() ?? new string[0]; _vsPost2015Data = vsKeyNames .Where(kn => kn.StartsWith("VisualStudio_", OrdinalIgnoreCase)) .Select(kn => new VsPost2015Data(_msMachineKey.OpenSubKey(kn))) .GroupBy(d => d.InstallDirectory) .Select(grp => grp.First()) .ToArray(); }