in AppInstallerFileBuilder/AppInstallerFileBuilderLib/AppxPackaging/AppxMetadata.cs [22:73]
public AppxMetadata(IRandomAccessStream randomAccessStream)
{
if (randomAccessStream == null)
{
throw new ArgumentNullException("file is null");
}
Guid guid = new Guid("0000000c-0000-0000-C000-000000000046");
IStream packageStream = StreamUtils.CreateStreamOverRandomAccessStream(randomAccessStream, ref guid);
IAppxFactory packageFactory = (IAppxFactory)new AppxFactory();
packageFactory.CreatePackageReader(packageStream);
this.AppxReader = packageFactory.CreatePackageReader(packageStream);
this.BlockmapStream = this.AppxReader.GetBlockMap().GetStream();
IAppxManifestReader appxManifestReader = this.AppxReader.GetManifest();
this.ManifestStream = appxManifestReader.GetStream();
IAppxManifestPackageId packageId = appxManifestReader.GetPackageId();
this.PackageName = packageId.GetName();
this.PackageFamilyName = packageId.GetPackageFamilyName();
this.PackageFullName = packageId.GetPackageFullName();
this.Publisher = packageId.GetPublisher();
this.Version = new VersionInfo(packageId.GetVersion());
IAppxManifestProperties packageProperties = appxManifestReader.GetProperties();
string displayName;
packageProperties.GetStringValue("DisplayName", out displayName);
this.DisplayName = displayName;
string publisherDisplayName;
packageProperties.GetStringValue("PublisherDisplayName", out publisherDisplayName);
this.PublisherDisplayName = publisherDisplayName;
// Get the min versions
IAppxManifestReader3 appxManifestReader3 = (IAppxManifestReader3)appxManifestReader;
IAppxManifestTargetDeviceFamiliesEnumerator targetDeviceFamiliesEnumerator = appxManifestReader3.GetTargetDeviceFamilies();
while (targetDeviceFamiliesEnumerator.GetHasCurrent())
{
IAppxManifestTargetDeviceFamily targetDeviceFamily = targetDeviceFamiliesEnumerator.GetCurrent();
this.TargetDeviceFamiliesMinVersions.Add(
targetDeviceFamily.GetName(),
new VersionInfo(targetDeviceFamily.GetMinVersion()));
targetDeviceFamiliesEnumerator.MoveNext();
}
this.MinOSVersion = this.TargetDeviceFamiliesMinVersions.OrderBy(t => t.Value).FirstOrDefault().Value;
this.PopulateCommonFields();
}