/// <summary> /// Analyzes the transforms included in the patch package to find the ones that /// are applicable to an install package. /// </summary> /// <param name="installPackage">The install package to validate the transforms against</param> /// <returns>Array of valid transform names</returns> /// <remarks> /// The returned list does not include the "patch special transforms" that /// are prefixed with "#" If a transform is valid, then its corresponding /// special transform is assumed to be valid as well. /// </remarks> public string[] GetValidTransforms(InstallPackage installPackage) { ArrayList transformArray = new ArrayList(); string transformList = this.SummaryInfo.LastSavedBy; foreach (string transform in transformList.Split(';', ':')) { if (transform.Length != 0 && !transform.StartsWith("#", StringComparison.Ordinal)) { this.LogMessage("Checking validity of transform {0}", transform); string tempTransformFile = null; try { tempTransformFile = Path.GetTempFileName(); this.ExtractTransform(transform, tempTransformFile); if (installPackage.IsTransformValid(tempTransformFile)) { this.LogMessage("Found valid transform: {0}", transform); transformArray.Add(transform); } } finally { if (tempTransformFile != null && File.Exists(tempTransformFile)) { try { File.Delete(tempTransformFile); } catch (IOException) { } } } } } return((string[])transformArray.ToArray(typeof(string))); }