private string GetProgIDForVSVersion(VSVersion vsVersion, VSSKU vsSKU)
        {
            string version = GetVersionString(vsVersion);
            string Sku     = GetSkuString(vsSKU);

            return(Sku + ".DTE." + version);
        }
 /// <summary>
 /// Launches VS with the specific version and SKU.
 /// </summary>
 /// <param name="VsVersion"></param>
 /// <param name="VsSKU"></param>
 public void LaunchVS(VSVersion VsVersion, VSSKU VsSKU)
 {
     if (!IsSkuInstalled(VsVersion, vsSKU))
     {
         throw new Exception(string.Format("The SKU with version {0} and SKU name {1} is not present in the machine. Please specify a different SKU or install it.", VsVersion, vsSKU));
     }
     this.vsVersion = VsVersion;
     this.vsSKU     = VsSKU;
     LaunchVSInternal();
 }
        private void Initialize(string packagePath)
        {
            ZipPackage zipPackage = new ZipPackage(packagePath);

            packageId      = zipPackage.Id;
            packageVersion = zipPackage.Version.ToString();

            //set package sources.
            string PackageSource = Path.GetDirectoryName(packagePath);

            if (string.IsNullOrEmpty(PackageSource))
            {
                PackageSource = Environment.CurrentDirectory;
            }
            IList <KeyValuePair <string, string> > sources = new List <KeyValuePair <string, string> >();

            sources.Add(new KeyValuePair <string, string>("TestSource", PackageSource));
            //If additional sources are specified in the app.config file, add them too.
            if (!string.IsNullOrEmpty(AppSettingsHelper.PackageSourceKeyValue))
            {
                string[] additionalPackageSources = AppSettingsHelper.PackageSourceKeyValue.Split(new char[] { ',', ';' });
                int      i = 1;
                foreach (string additionalSource in additionalPackageSources)
                {
                    sources.Add(new KeyValuePair <string, string>("AdditionalSources_" + i.ToString(), additionalSource));
                    i++;
                }
            }
            NugetSettingsUtility.SetPackageSources(sources);
            NugetSettingsUtility.SetActivePackageSource("TestSource", PackageSource);

            //Set test run directory.
            if (string.IsNullOrEmpty(AppSettingsHelper.TestResultsPathKeyValue))
            {
                TestRunPath = Path.Combine(Environment.CurrentDirectory, packageId);
            }
            else
            {
                TestRunPath = AppSettingsHelper.TestResultsPathKeyValue;
            }
            //Create root level test run Dir
            if (!Directory.Exists(TestRunPath))
            {
                Directory.CreateDirectory(TestRunPath);
            }
            AppSettingsHelper.TestResultsPathKeyValue = TestRunPath;

            //initialize other values.
            projName  = DateTime.Now.Ticks.ToString();
            vsVersion = (VSVersion)Enum.Parse(typeof(VSVersion), AppSettingsHelper.VSVersionKeyValue, true);
            vsSKU     = (VSSKU)Enum.Parse(typeof(VSSKU), AppSettingsHelper.VSSKUKeyValue, true);
        }
 private void GetDefaultSKU(out VSVersion defaultVersion, out VSSKU defaultSku)
 {
     foreach (var version in Enum.GetValues(typeof(VSVersion)))
     {
         foreach (var sku in Enum.GetValues(typeof(VSSKU)))
         {
             if (IsSkuInstalled((VSVersion)version, (VSSKU)sku))
             {
                 defaultVersion = (VSVersion)version;
                 defaultSku     = (VSSKU)sku;
                 return;
             }
         }
     }
     throw new Exception("No VS SKU installed in this machine. Please make sure to install any SKU of VS to continue");
 }
        private string GetSkuString(VSSKU vsSKU)
        {
            switch (vsSKU)
            {
            case VSSKU.VSU:
                return(VSUSkUString);

            case VSSKU.VWDExpress:
                return(VWDExpressSkUString);

            case VSSKU.WDExpress:
                return(WDExpressSkUString);

            case VSSKU.Win8Express:
                return(Win8ExpressSkUString);

            default:
                return(VSUSkUString);
            }
        }
 private string GetSkuInstallRegKeyPath(VSVersion version, VSSKU sku)
 {
     return(Path.Combine(@"Software\Microsoft", GetSkuString(sku), GetVersionString(version), @"Setup\VS"));
 }
 private bool IsSkuInstalled(VSVersion version, VSSKU sku)
 {
     string[] subkeys = Registry.LocalMachine.OpenSubKey(GetSkuInstallRegKeyPath(version, sku)).GetSubKeyNames();
     return(subkeys != null && subkeys.Length > 0);
 }