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

Posted

技术标签:

【中文标题】使用服务安装 msi,如果凭据输入错误,是不是有办法强制安装程序重新提示用户【英文标题】:With a Service install msi, Is there a way to force the installer to re-prompt the user if credentials were entered incorrectly使用服务安装 msi,如果凭据输入错误,是否有办法强制安装程序重新提示用户 【发布时间】:2011-02-03 20:17:17 【问题描述】:

在安装 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】:

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

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

【讨论】:

以上是关于使用服务安装 msi,如果凭据输入错误,是不是有办法强制安装程序重新提示用户的主要内容,如果未能解决你的问题,请参考以下文章

无法安装msi格式软件提示错误代码2502,2503怎么办

Win8.1无法安装msi软件提示2502,2503错误怎么解决

epic对不起您使用的凭据无效啥意思 使用的凭据无效的解决方法

MSI在终端服务器上安装 - 获取错误自定义操作服务器被拒绝 - 错误的上下文

MSI无法卸载

使用 PowerShell 命令 Start-Process 安装 msi 时,出现 Exit-code 1603 错误