public Vs2017Config() { try { _setupConfig = new SetupConfiguration(); } catch (Exception ex) { throw new COMException("Failed to get query VS2017 instances", ex); } var setupConfig2 = (ISetupConfiguration2)_setupConfig; var e = setupConfig2.EnumAllInstances(); var helper = (ISetupHelper)_setupConfig; int fetched; var instances = new ISetupInstance[1]; do { e.Next(1, instances, out fetched); if (fetched > 0) { var instance2 = (ISetupInstance2)instances[0]; var ipath = instance2.GetInstallationPath(); var ppath = instance2.GetProductPath(); var combinedPath = Path.Combine(ipath, ppath); _paths.Add(combinedPath); } }while (fetched > 0); }
public void Setup(ISetupConfiguration configuration) { this.setupConfiguration = configuration ?? throw new ArgumentNullException(nameof(configuration)); var list = new List <IFilter>(configuration.Filters); list.Add(new RequestForwarder(this.setupConfiguration)); this.routerSteps = FiltersPipelineFactory.Create(list, this.logger); }
public static void GetSetupConfiguration(out ISetupConfiguration setupConfiguration, IntPtr reserved) { if (Environment.Is64BitProcess) { GetSetupConfiguration_x64(out setupConfiguration, reserved); } else { GetSetupConfiguration_x86(out setupConfiguration, reserved); } }
private string GetExeToolPathFromSetupConfiguration(ILogger logger) { string toolPath = null; logger.LogDebug(Resources.CONV_DIAG_LocatingCodeCoverageToolSetupConfiguration); ISetupConfiguration configurationQuery = setupConfigurationFactory.GetSetupConfigurationQuery(); if (configurationQuery != null) { IEnumSetupInstances instanceEnumerator = configurationQuery.EnumInstances(); int fetched; ISetupInstance[] tempInstance = new ISetupInstance[1]; List <ISetupInstance2> instances = new List <ISetupInstance2>(); //Enumerate the configuration instances do { instanceEnumerator.Next(1, tempInstance, out fetched); if (fetched > 0) { ISetupInstance2 instance = (ISetupInstance2)tempInstance[0]; if (instance.GetPackages().Any(p => p.GetId() == CodeCoverageInstallationPackage)) { //Store instances that have code coverage package installed instances.Add((ISetupInstance2)tempInstance[0]); } } } while (fetched > 0); if (instances.Count > 1) { logger.LogDebug(Resources.CONV_DIAG_MultipleVsVersionsInstalled, string.Join(", ", instances.Select(i => i.GetInstallationVersion()))); } //Get the installation path for the latest visual studio found var visualStudioPath = instances.OrderByDescending(i => i.GetInstallationVersion()) .Select(i => i.GetInstallationPath()) .FirstOrDefault(); if (visualStudioPath != null) { toolPath = Path.Combine(visualStudioPath, TeamToolPathandExeName); } } else { logger.LogDebug(Resources.CONV_DIAG_SetupConfigurationNotSupported); } return(toolPath); }
public Vs2017SetupConfig() { try { // Try to CoCreate the class object. _setupConfig = new SetupConfiguration(); } catch (COMException ex) when(ex.HResult == REGDB_E_CLASSNOTREG) { // Try to get the class object using app-local call. var result = GetSetupConfiguration(out _setupConfig, IntPtr.Zero); if (result < 0) { throw new COMException("Failed to get query", result); } } var setupConfig2 = (ISetupConfiguration2)_setupConfig; var e = setupConfig2.EnumAllInstances(); var helper = (ISetupHelper)_setupConfig; int fetched; var instances = new ISetupInstance[1]; do { e.Next(1, instances, out fetched); if (fetched > 0) { var instance2 = (ISetupInstance2)instances[0]; var instanceInfo = new VSInstanceInfo { Id = instance2.GetInstanceId(), Name = instance2.GetInstallationName(), Version = instance2.GetInstallationVersion(), DispName = instance2.GetDisplayName(), Description = instance2.GetDescription(), ResPath = instance2.ResolvePath(), EnginePath = instance2.GetEnginePath(), InstalledPath = instance2.GetInstallationPath(), ProductPath = instance2.GetProductPath() }; _instanceInfos.Add(instanceInfo); } }while (fetched > 0); }
public Vs2017SetupConfig() { try { _setupConfig = new SetupConfiguration(); } catch (Exception ex) { throw new Exception($"Cannot create a new SetupConfiguration for Visual Studio", ex); } var setupConfig2 = (ISetupConfiguration2)_setupConfig; var e = setupConfig2.EnumAllInstances(); var helper = (ISetupHelper)_setupConfig; int fetched; var instances = new ISetupInstance[1]; do { e.Next(1, instances, out fetched); if (fetched > 0) { var instance2 = (ISetupInstance2)instances[0]; var instanceInfo = new VSInstanceInfo { Id = instance2.GetInstanceId(), Name = instance2.GetInstallationName(), Version = instance2.GetInstallationVersion(), DispName = instance2.GetDisplayName(), Description = instance2.GetDescription(), ResPath = instance2.ResolvePath(), EnginePath = instance2.GetEnginePath(), InstalledPath = instance2.GetInstallationPath(), ProductPath = instance2.GetProductPath() }; _instanceInfos.Add(instanceInfo); } }while (fetched > 0); }
public ISetupConfiguration GetSetupConfigurationQuery() { ISetupConfiguration setupConfiguration = null; try { setupConfiguration = new SetupConfiguration(); } catch (COMException ex) when(ex.HResult == REGDB_E_CLASSNOTREG) { //Attempt to access the native library try { return(GetSetupConfiguration(out ISetupConfiguration query, IntPtr.Zero) < 0 ? null : query); } catch (DllNotFoundException) { //Setup configuration is not supported return(null); } } return(setupConfiguration); }
static extern int GetSetupConfiguration([MarshalAs(UnmanagedType.Interface), Out] out ISetupConfiguration configuration, IntPtr reserved);
public static extern int GetSetupConfiguration_x86( [Out, MarshalAs(UnmanagedType.Interface)] out ISetupConfiguration setupConfiguration, [In] IntPtr pReserved );
public RequestForwarder(ISetupConfiguration setupConfiguration) { this.setupConfiguration = setupConfiguration; }
public static extern void GetSetupConfiguration([MarshalAs(UnmanagedType.Interface)] out ISetupConfiguration setupConfiguration);