2015-05-14 4 views
0

Я генерирую msp из двух файлов msi (новый & Старый) с использованием дизайна патча, но у меня есть проблема, что сгенерированный msp составляет почти 3/4 от размера msi , Есть ли причина для этого? обычно msp должен содержать только разницу, но когда я устанавливаю патч, я вижу, что он несет все файлы msi внутри.InstallShield msp package находится в большом размере

Заранее спасибо.

ответ

0

Fom вид установщика Windows, который я предполагаю, InstallShield имеет поддержку в этой области ...

Там должен быть вариант в пластыре для создания «включают в себя целые файлы» или нет. Если вы используете это, то да, патч будет большим, если есть много файлов, которые будут исправлены. Другой способ - это дельта между двоичными файлами и потенциально может быть меньше. Я подозреваю, что вы можете включать целые файлы.

Как вы можете «видеть, что патч несет все файлы»? Я не понимаю, к чему вы клоните. Если из первого MSI и последнего было изменено 100 файлов, тогда будет исправлено 100 файлов, если патч включает целые файлы или нет.

Если вы перестраиваете каждый файл, но только некоторые из них действительно нуждаются в патче, тогда есть опция для этого - игнорировать отсутствующие файлы при создании патча. Проблема в том, что перестройка изменяет внутренние даты и, возможно, другие части двоичного файла, даже если код и версия не изменились. Вот почему игнорирование отсутствующих файлов является опцией. Убедитесь, что в генерации патчей используются только файлы, для которых вы хотите патчи, в административных изображениях, используемых для генерации патча. Процесс создания патчей требует двух админ-изображений обоих MSI-аетупов, который в основном является файлом MSI и всеми файлами, извлеченными в каком-либо месте. Файлы, которые вы не хотите исправлять, можно удалить вручную из нового административного образа, если у вас есть опция игнорировать отсутствующие файлы. В файле PCP, который используется в генерации исправлений, используется IgnoreMissingSrcFiles здесь: https://msdn.microsoft.com/en-us/library/aa372066(v=vs.85).aspx

+0

Благодарим вас за ответ. Параметр include all files установлен в No. Я знаю, что он переносит все файлы с помощью установки msi, а затем удаляет все установленные файлы, а затем устанавливает патч и сравнивает количество файлов до и после его же. Где этот параметр разрешает включать только нужные файлы, я игнорировал отсутствующие файлы. Да, наш сервер сборки изменяет содержимое измененных данных и двоичных файлов (Obfuscation), и версия файла остается прежней. Я не понял этого: «Убедитесь, что генерация патчей использует только файлы, которые вы хотите патчи« Как? –

+0

Отредактированный мой ответ .... – PhilDW

+0

Я не могу удалить файлы вручную, потому что его автоматический процесс, запущенный на сервере с использованием Perl-скрипта, распаковывает и msi и генерирует msp через команды msiexec. Также мне очень сложно проверить, что должно быть исправлено, и что я не ожидаю от этого. Однако я согласен с тем, что бинарные файлы изменяются в каждой сборке, потому что мы применяем процесс обфускации в каждой сборке, но проблема в том, что есть некоторый файл xml или txt, который по-прежнему остается одним и тем же содержимым и измененной датой, как вы думаете, тест I для файлов msp было сделано правильно для проверки? –

Смежные вопросы