При установке службы msi, есть ли способ заставить установщик повторно запросить пользователя, если учетные данные были введены неправильно
Во время установки службы Windows (с использованием класса MyServiceInstaller: Installer, а также ServiceInstaller и ServiceProcessInstaller) существует способ заставить установщик повторно запрашивать у пользователя информацию об учетной записи пользователя, если они вводят ее неправильно.
Когда указана неверная информация, установка выдает сообщение об ошибке 1001 с неверным именем пользователя или паролем, а затем происходит сбой установки. Я хочу повторить запрос пользователя, пока он не получит правильное значение или не отменит запрос на ввод учетных данных.
Могу ли я переопределить OnBeforeRollback и сказать ему повторить попытку?
private ServiceInstaller _ServiceInstaller;
private ServiceProcessInstaller _ProcessInstaller;
public GBServiceInstaller()
{
InitializeComponent();
_ServiceInstaller = new ServiceInstaller();
_ProcessInstaller = new ServiceProcessInstaller();
_ServiceInstaller.ServiceName = MyService.SERVICENAME;
_ServiceInstaller.Description = MyService.SERVICEDESCRIPTION;
_ServiceInstaller.StartType = ServiceStartMode.Manual;
Installers.Add(_ServiceInstaller);
Installers.Add(_ProcessInstaller);
1 ответ
Я думаю, что когда установщик уже собирается начать откат, вероятно, уже слишком поздно. Вместо этого, вместо сбоя установщика, проверьте правильность имени пользователя и пароля, прежде чем он даже установит реальную службу.
Есть несколько способов сделать это, один довольно простой способ - это использовать LogonUser
Функция API, как описано здесь, и вот информация о том, как использовать PInvoke для вызова его из C#.