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