Планирование элемента <util: CloseApplication> после записи значений реестра
Я хочу, чтобы мой установщик закрыл все экземпляры IExplorer и затем выполнил установку. Чтобы закрыть IE, мне нужно добавить раздел реестра, чтобы все вкладки были закрыты без диалога, а затем я использую <util:CloseApplication... />
закрыть экземпляры IE.
И то и другое CloseApplication
и Component
что регистрирует ключ работает хорошо. Моя проблема в том, как запланировать их так CloseApplication
будет выполняться только после добавления ключа реестра.
Единственное место, где я мог поставить <util:CloseApplication... />
без ошибок был под <Product...>
, Порядок выполнения Компонента определяется:
<Feature..><ComponentRef../></Feature..>
Я не могу понять, как я могу контролировать порядок выполнения <util:CloseApplication... />
элемент и задержать его, пока ключ реестра не установлен.
1 ответ
<util:CloseApplication>
Элемент переведен в ряд пользовательских действий. Один из них является WixCloseApplications
который фактически планирует отложенный CA, чтобы сделать работу. По умолчанию это запланировано раньше InstallFiles
, и вы можете попробовать перенести его после WriteRegistryValues
:
<InstallExecuteSequence>
...
<Custom Action="WixCloseApplications" After="WriteRegistryValues" />
...
</InstallExecuteSequence>
Я не делал этого в реальной установке, так что вам лучше поиграть с ним и тщательно протестировать, чтобы убедиться, что он закрывает приложения, как и ожидалось, после перепланирования.
ОБНОВЛЕНИЕ: это была техническая сторона вопроса. Там также этический:)
AFAIU, то, что вы пытаетесь сделать, это изменить настройки IE с вашей установкой. Я не думаю, что это хороший пользовательский опыт. Представьте, что вы настроили свой браузер так, как вам нравится, и вдруг он изменил одну из этих настроек. Вы никогда не узнаете, что это сделала какая-то несвязанная установка, и вы будете обвинять Microsoft в этом грехе.:)
Итак, попробуйте переосмыслить эту часть архитектуры установки. Возможно, вы захотите добавить условие запуска, чтобы проверить настройки IE и сообщить об этом пользователю.