Создание MSI патча (.msp) вручную? - PullRequest
7 голосов
/ 19 марта 2010

Наша команда в последнее время рассматривает возможность предоставления пользователям незначительного исправления реестра для изменения одного конкретного проблемного ключа. Довольно простые вещи, просто нужно обновить 1 ключ / значение в реестре.

Итак, на данный момент мы используем Wix для создания установщиков .msi для продукта. Рассматривая поддержку Wix для создания файлов патчей .msp, кажется, что единственный способ создать .msp - это несколько усложненный многоэтапный процесс:

  1. Получить копию исходного MSI и скомпилировать новую копию исправленного MSI
  2. Напишите новый файл Wix, который указывает на оба установщика
  3. Скомпилируйте файл Wix в .wixobj с Candle в .psp
  4. Запустите Torch / Pyro поверх / после моментальных снимков исходных установщиков и .psp или, альтернативно, используя MsiMsp.exe

Теперь мой вопрос: не могу ли я просто описать изменение реестра в файле Wix и напрямую скомпилировать его в MSP, без шагов 1 и 4 - что является огромным усилием для простого изменения? 1015 *

Ответы [ 3 ]

7 голосов
/ 19 марта 2010

Нет. Патч - это дельта двух устанавливаемых образов. Чтобы создать дельту, даже если разница очень мала, вам понадобятся оба изображения.

3 голосов
/ 26 ноября 2011

Да, есть другой способ, даже если вы считаете его не менее сложным:

  1. Создайте административную установку вашей "базовой версии", используя msiexec /qn /a <msi-file> TARGETDIR=<absolute-path-of-existing-directory> (если вы запускаете ее из makeфайл или другой сценарий, используйте start /wait перед командой), скажем в %BASEDIR%
  2. повторите вышеописанное, но в %UPDDIR%
  3. Теперь, когда у вас есть распакованная установка внутри%UPDDIR%, внесите изменения в MSI-файл, который будет находиться в корне этой папки ... вам также следует изменить номер версии ...
    • Если вы обмениваетесь файлами, обязательно обновитехеш-таблица (MsiFileHash) или File таблица для файлов с информацией о версии.
    • Если вы измените просто какое-то значение реестра, у вас все будет в порядке без всего этого ...
  4. Теперь подготовьте файл .pcp (Свойства создания патча), чтобы указать одну строку в таблице TargetImages на .msi в %BASEDIR% и одну строку в UpgradedImages на .msiв %UPDIR%
  5. Invoke msimsp.exe <pcp-file> -p <absolute-path-to-desired-patch-file>

Вуаля, тыготово.

Теперь, стоит ли это того, зависит ли это только от вас.

Это то, как я делаю это с помощью некоторых сценариев, которые запускают SQL-запросы к базам данных MSI для запроса значенийили обновите их по мере необходимости.Это прекрасно работает и был помещен в GNU make-файл для создания целого ряда MSI, производных MSI, патчей и фиктивных патчей (для тестирования).

Хитрость заключается в том, чтобы патчить распакованный образ администратора инаправьте msimsp.exe, чтобы создать патч между неизмененной и измененной версией распакованного административного образа.В целом соответствует вашему требованию сделать это «вручную».

Написать комментарий, если что-то требует разъяснения.

2 голосов
/ 19 марта 2010

Можно создавать MSP (исправления) и MST (преобразования), используя Orca и другие инструменты из Windows Install SDK (который теперь является частью Windows SDK ). Однако этот процесс может быть не намного проще, чем у вас уже есть с WiX.

Здесь - лучшее объяснение, которое я смог найти за несколько минут поиска в Google; Я все еще подозреваю, что там должно быть что-то лучшее. Но если вы знакомы с форматом установщика Windows, довольно легко изучить и попробовать несколько вещей с Orca, пока вы не освоите его.

...