Ошибка WinCE CabWiz: «inf содержит DirID, которые не поддерживаются» - PullRequest
2 голосов
/ 31 января 2009

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

Ошибка: файл C: \ DOCUME ~ 1 \ сборка \ местные ~ 1 \ Temp \ wiz3340.inf содержит DirID, которые не являются поддерживается

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

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

1 Ответ

2 голосов
/ 19 августа 2009

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

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: \ Program Файлы \ 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]. Итак, еще одно ограничение, о котором я не знал: VS2008 CabWiz может анализировать до 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).

...