При установке службы msi, есть ли способ заставить установщик повторно запросить пользователя, если учетные данные были введены неправильно - PullRequest
3 голосов
/ 02 апреля 2010

Во время установки службы 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 Ответ

2 голосов
/ 14 июня 2010

Я думаю, что, когда установщик уже собирается начать откат, вероятно, уже слишком поздно. Вместо того, чтобы не дать установщику завершиться ошибкой, проверьте правильность имени пользователя и пароля, прежде чем он даже установит реальную службу.

Существуют различные способы сделать это, один довольно простой способ - использовать функцию API LogonUser, как описано здесь , а здесь - это информация о том, как использовать PInvoke для позвоните из C #.

...