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

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

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

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

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


person tsellon    schedule 30.01.2009    source источник


Ответы (1)


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

https://web.archive.org/web/20100330064330/http://blogs.msdn.com/raffael/archive/2008/03/18/x-inf-содержит-dirids-которые-являются-not-supported.aspx

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

После выполнения некоторых тестов я достиг магического числа: 262. С 262 файлами VS2008 смог успешно создать CAB смарт-устройства, с 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]. Таким образом, «простым» решением в этом случае было загрузить один из двух Windows Mobile 6 SDK и использовать этот CabWiz.exe (C:\Program Files\Windows Mobile 6 SDK\Tools\CabWiz).

person Chris Craft    schedule 19.08.2009