Столкнулся недавно с неожиданной проблемой с генерацией CAB. Для генерации используется CabWiz.exe. Упаковщик стал ругаться на неверные символы в названии каталогов «setup.inf contains DirIDs, which are not supported».
Проект для Windows Mobile компилировался и упаковывался в CAB. Утром, когда собирался тестовый пакет, всё прошло на ура. Днём изменений в проекте сборки не было. Вечером CAB не собрался. Начали думать, что всё же где-то некорректно обрабатываются переменные со знаком процента, или вставляются в .inf неправильные пути в раздел DestinationDirs.
После разбора оказалось, что версия, которая поставляется вместе с Visual Studio 2008, имеет ряд ограничений. Одно из этих органичений: максимальное количество обрабатываемых файлов — 262. Т.е. если в архив складывается 262 файла, то всё хорошо и на выходе будет корректный СAB. Если же в проекте появляется 263 и больше файлов, то будет выдаваться ошибка описанная выше.
Решение оказалось достаточно простым. В WM 6 SDK есть правильный cabwiz.exe, где эта проблема устранена.
1) Итого пользуемся теперь c:\Program Files\Windows Mobile 6 SDK\Tools\CabWiz\Cabwiz.exe
2) Можно c:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\CabWiz.exe заменить на новый из sdk (а также заменить файл CabWiz.ddf) и тогда можно спокойно продолжить собирать CAB прям из студии.
Кстати, не забывайте использовать переменные (макро-переменные) для CAB, они сильно облегчают жизнь.
http://www.christec.co.nz/blog/archives/262
Проект для Windows Mobile компилировался и упаковывался в CAB. Утром, когда собирался тестовый пакет, всё прошло на ура. Днём изменений в проекте сборки не было. Вечером CAB не собрался. Начали думать, что всё же где-то некорректно обрабатываются переменные со знаком процента, или вставляются в .inf неправильные пути в раздел DestinationDirs.
После разбора оказалось, что версия, которая поставляется вместе с Visual Studio 2008, имеет ряд ограничений. Одно из этих органичений: максимальное количество обрабатываемых файлов — 262. Т.е. если в архив складывается 262 файла, то всё хорошо и на выходе будет корректный СAB. Если же в проекте появляется 263 и больше файлов, то будет выдаваться ошибка описанная выше.
Решение оказалось достаточно простым. В WM 6 SDK есть правильный cabwiz.exe, где эта проблема устранена.
1) Итого пользуемся теперь c:\Program Files\Windows Mobile 6 SDK\Tools\CabWiz\Cabwiz.exe
2) Можно c:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\CabWiz.exe заменить на новый из sdk (а также заменить файл CabWiz.ddf) и тогда можно спокойно продолжить собирать CAB прям из студии.
Кстати, не забывайте использовать переменные (макро-переменные) для CAB, они сильно облегчают жизнь.
http://www.christec.co.nz/blog/archives/262