使用服务安装msi,如果输入的凭据不正确,是否有办法强制安装程序重新提示用户

时间:2010-04-02 19:06:07

标签: c# windows-services serviceinstall

在安装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 个答案:

答案 0 :(得分:2)

我认为当安装程序即将开始回滚时,可能为时已晚。相反,不是让安装程序失败,而是在安装实际服务之前测试用户名和密码是否正确。

有多种方法可以做到这一点,一种相当简单的方法是使用here所述的LogonUser API函数,而here是有关如何使用PInvoke调用它的信息来自C#。