ИМХО такой сценарий указывает на отсутствующую функцию в устанавливаемом приложении, и его легче исправить в приложении, чем взламывать MSI.
Изображение администратора
Позвольте мне сначала сказать, что простой способ «решить» это для ваших пользователей - это попросить их запустить Установку администратора вашего MSI. Это по существу извлечет все файлы из внутренних CAB-файлов и поместит все файлы в указанную папку:
msiexec.exe / a myinstaller.msi TARGETDIR = C: \ AdminImage
Затем ваши пользователи могут перейти непосредственно в извлеченную структуру папок и обновить нужный файл, а затем сопоставить каталог с другими ПК и установить MSI. Это может иметь побочные эффекты, связанные с тем, что файл имеет значение хеша в MSI (чтобы избежать подмены), но в большинстве случаев он работает нормально.
Запуск XML XPath Query
Новые версии инструментов развертывания, такие как Installshield и Wix, имеют встроенную поддержку для запуска запросов XPath во время установки и, следовательно, для динамической записи разделов.
Обновление приложения
Настройка приложения на ПК состоит из нескольких этапов. Во-первых, это развертывание контента на машине - это должно быть сделано с использованием MSI, без сомнений. Однако в большинстве расширенных приложений требуется несколько «задач конфигурации после установки», аналогичных этому «обновлению файла конфигурации».
Почти всегда лучше отложить эти задачи настройки до запуска приложения , чем реализовывать функции в MSI. Для этого есть много причин, но самая важная из них заключается в том, что только приложение EXE будет гарантированно работать в правильном пользовательском контексте. Файлы MSI можно запускать с правами системы, с другой учетной записью пользователя или с помощью другого механизма.
Как правило, мы рекомендуем использовать MSI для передачи всего необходимого контента на ПК . Затем пометьте реестр, чтобы указать приложению, что это первый запуск (для обновлений вы можете увеличить счетчик или записать новый номер версии в HKLM). Затем приложение может выполнить последние шаги настройки в своей процедуре запуска. Он может скопировать файл config.xml по умолчанию откуда-то в% ProgramFiles% и скопировать его в профиль пользователя. Затем он может прочитать требуемые значения из HKLM, записанные MSI, а затем обновить файл config.xml этими значениями.
В целом: избегайте шагов конфигурации, выполняемых MSI или любым другим механизмом настройки. Сконцентрируйтесь на записи необходимых файлов и элементов реестра на компьютер, а затем дайте приложению самостоятельно настроить надлежащую среду выполнения. Это позволит намного лучше контролировать развертывание. Лучше "Инкапсуляция", если хотите. MSI отправляет «сообщение» приложению через реестр, и приложение знает «как правильно настроить себя» на основе сообщений.