/// <summary> /// Returns all references to the specified <see cref="AssemblyName"/>. /// </summary> /// <exception cref="FileLoadException"> /// A <see cref="FileLoadException"/> is thrown when the <see cref="AssemblyName.CodeBase"/> property /// of the specified <paramref name="assemblyName"/> is invalid. /// </exception> /// <param name="assemblyName"></param> /// <returns></returns> public static IEnumerable <InstallerDescription> GetReferences(AssemblyName assemblyName) { IInstallReferenceEnum referenceEnum; try { CreateInstallReferenceEnum(out referenceEnum, assemblyName.ToIAssemblyName(), 0, IntPtr.Zero); } catch (FileLoadException) { referenceEnum = null; } if (referenceEnum != null) { IInstallReferenceItem item; while (referenceEnum.GetNextInstallReferenceItem(out item, 0, IntPtr.Zero) == 0) { IntPtr ptr; if (item.GetReference(out ptr, 0, IntPtr.Zero) == 0) { yield return(new InstallerDescription(FusionInstallReference.ReadFromPointer(ptr))); } } } }
internal FusionInstallReference ToFusionStruct() { var result = new FusionInstallReference( _installerType.AsGuid(), _uniqueId, _applicationDescription); return(result); }
/// <summary> /// Initializes a new instance of <see cref="InstallerDescription"/> using the data specified in the given <see cref="FusionInstallReference"/>. /// </summary> /// <param name="fusionInstallReference"></param> internal InstallerDescription(FusionInstallReference fusionInstallReference) { _installerType = fusionInstallReference.GuidScheme.AsInstallerType(); _applicationDescription = fusionInstallReference.NonCannonicalData; _uniqueId = fusionInstallReference.Identifier; }