Example #1
0
        /// <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)));
                    }
                }
            }
        }
Example #2
0
        internal FusionInstallReference ToFusionStruct()
        {
            var result = new FusionInstallReference(
                _installerType.AsGuid(),
                _uniqueId,
                _applicationDescription);

            return(result);
        }
Example #3
0
 /// <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;
 }