Каков наилучший способ сделать .ISO-файлы на основе структуры папок файлов с C#? Есть ли библиотека с открытым исходным кодом, отличная от DiscUtils? Проблемы с DiscUtils, и я хотел бы попробовать другой путь. Какие у меня варианты? Я бы предпочел открытый исходный код, но также мог бы заплатить за решение.DVD ISO от C# - .NET DiscUtils альтернативы
4
A
ответ
4
Вот еще немного, чтобы попытаться
- C# [ISO] image creator (поддержки для аудио компакт-дисков)
- IsoCreator
2
Вы могли бы попробовать Primo Burner: http://www.primoburner.com/Downloads.aspx
5
Windows, на самом деле происходит с собственным API для создания ISO и многое другое: Image Mastering API. Как только вы захватите сборку IMAPI2 Interop из SDK Windows или (возможно, проще) с this CodeProject article about IMAPI2, создание ISO - это всего лишь несколько строк кода.
К сожалению, вам также потребуется несколько абзацев, чтобы правильно очистить COM нонсенс участия, но конечный результат все еще довольно управляем:
MsftFileSystemImage iso = new MsftFileSystemImage();
iso.ChooseImageDefaultsForMediaType(IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DISK);
iso.FileSystemsToCreate = FsiFileSystems.FsiFileSystemISO9660 | FsiFileSystems.FsiFileSystemJoliet;
iso.Root.AddTree(@"c:\path\goes\here\", false);
dynamic resultImage = iso.CreateResultImage();
dynamic imageStream = resultImage.ImageStream;
IStream newStream = null;
if (imageStream != null)
{
STATSTG stat = null;
imageStream.Stat(stat, 0x1);
int res = SHCreateStreamOnFile(@"c:\path\to\your.iso", 0x1001, newStream);
if (res == 0 && newStream != null)
{
IntPtr inBytes = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(long)));
IntPtr outBytes = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(long)));
try
{
imageStream.CopyTo(newStream, stat.cbSize, inBytes, outBytes);
}
finally
{
Marshal.FinalReleaseComObject(imageStream);
newStream.Commit(0);
Marshal.FinalReleaseComObject(newStream);
Marshal.FreeHGlobal(inBytes);
Marshal.FreeHGlobal(outBytes);
Marshal.FinalReleaseComObject(resultImage);
Marshal.FinalReleaseComObject(iso);
}
}
else
{
Marshal.FinalReleaseComObject(imageStream);
Marshal.FinalReleaseComObject(resultImage);
Marshal.FinalReleaseComObject(iso);
//TODO: Throw exception or do whatever to signal failure here
}
}
else
{
Marshal.FinalReleaseComObject(resultImage);
Marshal.FinalReleaseComObject(iso);
//TODO: Throw exception or do whatever to signal failure here
}
Деталь для единственного бита Win32/COM API используемого клея может можно найти на pinvoke.net: SHCreateStreamOnFile. IStream и STATSTG находятся в System.Runtime.InteropServices.ComTypes..
Смежные вопросы
- 1. Создайте ISO-файл с .net DiscUtils
- 2. Редактировать iso-файл с discutils
- 3. Создайте образ ISO CD/DVD в .NET
- 4. Создание меню DVD в .NET
- 5. Автоматическое сжигание изображений 100.ISO DVD
- 6. альтернативы strcpy в ISO C89
- 7. Воспроизведение DVD в C#?
- 8. ISO-файл в C++
- 9. создать загрузочный ISO DVD из корневой файловой системы
- 10. Нужна помощь в получении последнего изображения CentOS iso DVD
- 11. PHP, чтобы показать образ ISO DVD на локальном сервере
- 12. Кодовые контракты .net - альтернативы
- 13. .NET Альтернативы UDP Multicast
- 14. Альтернативы членству в .Net
- 15. Альтернативы CERTENROLLLib .Net Core
- 16. Шаблоны пользователей, Statemement От ISO C++ Standard?
- 17. Альтернативы для ActiveX в .NET
- 18. играет на dvd, используя C#
- 19. Стандарты ISO для .NET 3.5
- 20. CD/DVD Boot Sector
- 21. Нужен Debian 3.1 полный iso
- 22. Ищете альтернативы Aspose .NET Slides
- 23. Альтернативы CompileToMethod в .Net Standard
- 24. Альтернативы Streaminsight в мире .NET
- 25. Альтернативы «SAP Connector for .NET»
- 26. документация или альтернативы protobuf-net
- 27. Альтернативы MS Visual Studio .NET
- 28. ISO-8859-1 от bcp
- 29. Какие хорошие альтернативы множественному наследованию в .NET?
- 30. Directshow dvd filter Graph
Учитывая использование ** DiscUtils ** для текущего требования к проекту ... какие точные проблемы у вас были? – SliverNinja