Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.137.34] |
|
Сообщ.
#1
,
|
|
|
Суть в том, что есть некий cab файл, который делает студия (2008), для установки на устройстве. Все отлично работает. Cab ставится, и все запускается. Но.
Необходимо при скачивании этого cab файла с сервера изменить в нем содержание одного XML файла. Для этого пытаюсь использовать библиотеку Microsoft.Deployment.Compression.Cab. Аналогично тому, как описано тут например. Т.е. сервер получает изначальный cab файл, распаковывает его, изменяет содержимое нужного файла, запаковывает распакованные файлы в cab обратно. Но этот новый cab не устанавливается на устройстве. И имеер меньший размер, чем оригинальный. Ну это ладно, допустим разная степерь сжатия. При установке на устройстве говорит "Installation of *.cab was unsuccessful". И все. Пробовал смотреть в папке "Application data/Volatie", ничего там нет. Вообще ничего, пустая. Пробовал запаковывать обратно тем же объектом, которым распаковывал (сначала делал разные). Запаковываю папку, в которую распаковывается. По файлам пробовать не стал, потому как внутри все равно папка первращается в список файлов. В чем может быть разница между тем cab файлом который делаю я и тем, который делает студия??? Код примерно такой: var unpackDir = Unpack(sessionFilename); ProcessDefaultSettings(Path.Combine(unpackDir, "DefaultSettings.xml")); var c = new CabInfo(sessionFilename); c.Pack(unpackDir); // var c2 = new CabInfo(Path.GetDirectoryName(sessionFilename) + "/NewCab.cab"); // c2.Pack(unpackDir); SessionFile это пусть к оригинальному cab файлу. Фнкция Unpack распаковывает его в unpackDir. ProcessDefaultSettings изменяет нужный Xml. Правда это тестовый варинат, и файл насамом деле там не так называется, студия его обзывает по своему. Но это назнвания можно в _setup.xml найти, котоырй внутри cab находится. Вобщем это не важно. Дальше я просто пробовал запаковывать тем же обхектом, который изначально связывается с оригинальным cab'ом. В общем, кто может знает, в чем у них разница? Почему cab который делает VS, устанавливается, а мой нет? Разницы, кроме размера, я у них не нашел. Cab студией НЕ подписывается. |
Сообщ.
#2
,
|
|
|
Ну как бы размер имеет значение.
Распакуй оба файла и сравни директории по содержимому - это ответ на твой вопрос. |
Сообщ.
#3
,
|
|
|
Мож цифровых подписей хочет?
|
Сообщ.
#4
,
|
|
|
Как правило нет там ничего.
А ты еще попробуй утилиткой CabInstaller поставить каб после сервера |
Сообщ.
#5
,
|
|
|
Цитата Nadz Goldman @ Распакуй оба файла и сравни директории по содержимому - это ответ на твой вопрос. Абсолютно идентичны. Цитата Qraizer @ Мож цифровых подписей хочет? Нет подписей, ни там ни там. Если только студия в тихаря что-то где-то подписывает. Цитата Nadz Goldman @ А ты еще попробуй утилиткой CabInstaller поставить каб после сервера Поищу, что это попробую, как руки дойдут... К сожалению, пришлось делать обходной вариант. Но решение этого все равно хотелось бы... |
Сообщ.
#6
,
|
|
|
Цитата Felan @ Вот я об этом. Вполне может. По крайней мере, когда баловался CAB Manager-ом под Win98, там была фича подписывания CAB-а с обязательной проверкой перед инсталляцией. Если только студия в тихаря что-то где-то подписывает. |
Сообщ.
#7
,
|
|
|
Вроде как студия создает cab при помощи утилитки:
c:\Program Files (x86)\Microsoft Visual Studio 9.0\smartdevices\sdk\sdktools\cabwiz.exe Ничего похожего на подписывание там вроде нет. |