Ошибка WinCE CabWiz: "inf содержит DirID, которые не поддерживаются"

При сборке Windows Mobile Cab для нашего продукта Windows CE CAB Wizard (CabWiz.exe) иногда возвращает ошибку:

Ошибка: Файл c:\documentsme~1\build\locals~1\temp\wiz3340.inf содержит DirID, которые не поддерживаются

Эта ошибка может возникать при использовании более 998 файлов, ~260 каталогов или когда знак% не экранирован (с другим%), но в нашем случае это не применимо.

Кто-нибудь сталкивался с этим вопросом раньше? Спасибо!

1 ответ

Решение

Я столкнулся с этой проблемой сегодня и нашел решение, которое сработало здесь:

https://web.archive.org/web/20100330064330/http://blogs.msdn.com/raffael/archive/2008/03/18/x-inf-contains-dirids-which-are-not-supported.aspx

Поэтому я подумал: хорошо, он достигает известного предела в 998 файлов, которые могут быть упакованы в CAB... Неправильно: проблема возникла также при использовании гораздо меньшего количества файлов, скажем, 300... Я все еще говорю о C:\ Программные файлы \Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\CabWiz.exe, версия 4.0.4332.0.

После выполнения некоторых тестов я достиг магического числа: 262. С 262 файлами VS2008 мог успешно создать CAB-файл Smart Device, с 263 файлами он выдал ошибку "x.inf содержит DirID, которые не поддерживаются". В этот момент я заметил, что в файле.INF, который VS2008 создает и передает CabWiz.exe, он записывает запись в [DestinationDirs] для каждого добавленного файла, даже если целевая папка на устройстве такая же, как и в мое дело. Путем ручного редактирования INF (используя некоторые приложения, которые автоматизировали создание строк...), я мог успешно создать CAB для 263+ файлов, указав только одну запись в [DestinationDirs]. Итак, еще одно ограничение, о котором я не знал: CabWiz VS2008 может анализировать до 262 различных записей в [DestinationDirs].

Теперь: Windows Mobile 6 SDK поставляется с более новой версией CabWiz.exe, v4.5.5102.0, и, что очень интересно, он преодолел не только ограничение в 998 файлов, но также и около 262 записей в [DestinationDirs]. Таким образом, "простым" решением в этом случае было загрузить один из 2 Windows Mobile 6 SDK и использовать этот CabWiz.exe (C:\Program Files\Windows Mobile 6 SDK\Tools\CabWiz).

Другие вопросы по тегам