Добрый всем день.
Поставлена задача.
Из инсталлятора MSI достать CAB c установочными файлами.
Заменить в этом CAB архиве пару файлов и обратно засунуть в инсталлятор MSI.
Столкнулся с такой проблемой. После перепаковки CAB архива инсталлятор перестает работать.
Сообщение об ошибке:
The file 'cleverlock.dll' cannot be installed because the
file cannot be found in cabinet file 'disk1.cab'. This could
indicate a network error, an error reading from the
CD-ROM, or a problem with this package.
Для работы с CAB пользовался CABARC.EXE и пробовал Cabinet File (*.CAB) Compression and Extraction с codeproject http://www.codeproject.com/KB/files/CABCompressExtract.aspx
Извлечение и возврат CAB работают нормально, проверял.
Если не перепаковывать CAB то все работает нормально.
Так же если я в кабе заменяю нужные файлы в Total Commander то тоже все работает.
Думаю дело в CABARC.EXE. И CAB файл создаваемый CABARC.EXE и в Total Commander отличается по размеру.
Винрар и прочие архиваторы нормально работают с созданным CABARC.EXE архивом, а вот инсталлятор его кушать не хочет.
Может кто нибудь сталкивался с такой проблемой?
Может кто знает еще какие либо небольшие утилиты или с++ код для работы с CAB?
Желательно что бы там была возможность замены фалов в существующем архиве.
Здравствуйте, hayder, Вы писали:
H>Винрар и прочие архиваторы нормально работают с созданным CABARC.EXE архивом, а вот инсталлятор его кушать не хочет.
Необходимо в msi подправить хэши для подменённых файлов. Таблица
называется 'MsiFileHash', подправить можно, например, с помощью Orca.
Здравствуйте, Аноним, Вы писали:
А>Необходимо в msi подправить хэши для подменённых файлов. Таблица
называется 'MsiFileHash', подправить можно, например, с помощью Orca.
Спасибо за ответ, но слава богу у меня в проекте этой таблицы нет,а то бы вся автоматизация к черту бы пошла.
Проблему решил удалив и заново подключив все файлы в проекте инсталятора.
Честно говоря не понял почему все заработало.
Здравствуйте, nesesser, Вы писали:
N>C инсталлятами это нормальное состояние — "Уфф, заработало!.. Интересно, почему?")
Пока нодом пользовался никаких проблем не испытывал.
Как на MSI перешел так регулярно глюки, один другого веселей.
Хотя у него очень много плюсов.
Для инсталлятора важен порядок файлов в кабе. Что бы правильно перепаковать каб
нужно посмотреть таблицу файлов в MSI с помощью ORCA.EXE например. И
запаковывать (добавлять) файлы в каб в той же последовательности как они
указаны в этой таблице для данного каба.
Здравствуйте, hayder, Вы писали:
H>Добрый всем день. H>Поставлена задача. H>Из инсталлятора MSI достать CAB c установочными файлами. H>Заменить в этом CAB архиве пару файлов и обратно засунуть в инсталлятор MSI. H>Столкнулся с такой проблемой. После перепаковки CAB архива инсталлятор перестает работать. H>Сообщение об ошибке: H>The file 'cleverlock.dll' cannot be installed because the H>file cannot be found in cabinet file 'disk1.cab'. This could H>indicate a network error, an error reading from the H>CD-ROM, or a problem with this package. H>Для работы с CAB пользовался CABARC.EXE и пробовал Cabinet File (*.CAB) Compression and Extraction с codeproject H>http://www.codeproject.com/KB/files/CABCompressExtract.aspx
H>Извлечение и возврат CAB работают нормально, проверял. H>Если не перепаковывать CAB то все работает нормально. H>Так же если я в кабе заменяю нужные файлы в Total Commander то тоже все работает. H>Думаю дело в CABARC.EXE. И CAB файл создаваемый CABARC.EXE и в Total Commander отличается по размеру.
H>Винрар и прочие архиваторы нормально работают с созданным CABARC.EXE архивом, а вот инсталлятор его кушать не хочет. H>Может кто нибудь сталкивался с такой проблемой? H>Может кто знает еще какие либо небольшие утилиты или с++ код для работы с CAB? H>Желательно что бы там была возможность замены фалов в существующем архиве.