diff --git a/Library/DiscUtils.Iso9660/BuildParameters.cs b/Library/DiscUtils.Iso9660/BuildParameters.cs index 481a739fc..ccd87d638 100644 --- a/Library/DiscUtils.Iso9660/BuildParameters.cs +++ b/Library/DiscUtils.Iso9660/BuildParameters.cs @@ -26,10 +26,13 @@ internal class BuildParameters { public BuildParameters() { + ManufacturerId = ".NET DiscUtils"; VolumeIdentifier = string.Empty; UseJoliet = true; } + public string ManufacturerId { get; set; } + public bool UseJoliet { get; set; } public string VolumeIdentifier { get; set; } diff --git a/Library/DiscUtils.Iso9660/CDBuilder.cs b/Library/DiscUtils.Iso9660/CDBuilder.cs index 13545df38..953013391 100644 --- a/Library/DiscUtils.Iso9660/CDBuilder.cs +++ b/Library/DiscUtils.Iso9660/CDBuilder.cs @@ -115,6 +115,26 @@ public string VolumeIdentifier } } + /// + /// Gets or sets the Manufacturer ID for the ISO file. + /// + /// + /// Must be a valid identifier, i.e. max 23 characters. + /// + public string ManufacturerId + { + get => _buildParams.ManufacturerId; + + set + { + if (value.Length > 23) + { + throw new ArgumentException("Not a valid volume identifier"); + } + _buildParams.ManufacturerId = value; + } + } + /// /// Sets the boot image for the ISO image. /// @@ -272,7 +292,10 @@ protected override List FixExtents(out long totalLength) focus += MathUtilities.RoundUp(bootImageExtent.Length, IsoUtilities.SectorSize); var bootCatalog = new byte[IsoUtilities.SectorSize]; - var bve = new BootValidationEntry(); + var bve = new BootValidationEntry + { + ManfId = ManufacturerId + }; bve.WriteTo(bootCatalog, 0x00); _bootEntry.ImageStart = (uint)MathUtilities.Ceil(bootImagePos, IsoUtilities.SectorSize); if (_bootEntry.BootMediaType == BootDeviceEmulation.NoEmulation)