Есть инсталляшка для Windows Installer, разработанная на InstallShield. Помимо прочего, устанавливает службу стандартными средсвами, в процессе пользователю предлагается задать логин, под которым служба будет работать, и пароль к нему.
Новая версия инсталляшки (major upgrade) должна уметь обновлять службу, при этом новая версия службы должна работать под той же учетной записью, под которой работала старая, а вопросов пользователю (например, для повторного ввода логина-пароля) задавать нельзя.
При стандартном размещении RemoveExistingProducts между InstallValidate и InstallInitialize старая версия продукта убивается сразу, и к моменту установки новой версии службы информации об учетной записи, под которой служба работала, уже нет. Поэтому новая версия службы устанавливается по умолчанию под LocalService.
Если опустить RemoveExistingProducts ниже, например, после InstallFinalize, то цель вроде бы достигается, но некрасиво: при замене exe-шника службы возникает диалог с предложением завершить приложение, которое лочит файл службы, а когда говоришь ему "завершай сам", то Windows Installer этого сделать почему-то не может, а после завершения обновления требует перезагрузить компьютер.
Вроде задача кажется стандартной, ничего военного, а описанных решений не нашел. Может, кто-нибудь решал эту проблему?