C# 如何防止用户从自定义安装程序c类安装和卸载#

C# 如何防止用户从自定义安装程序c类安装和卸载#,c#,windows-installer,C#,Windows Installer,下面是一个示例自定义安装程序类 [RunInstaller(true)] public partial class Installer1 : System.Configuration.Install.Installer { public Installer1() { InitializeComponent(); } [System.Security.Permissions.SecurityPermission(System.Security.Pe

下面是一个示例自定义安装程序类

[RunInstaller(true)]
public  partial class Installer1 : System.Configuration.Install.Installer
{
    public Installer1()
    {
        InitializeComponent();
    }
    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);
        // Do your magic here, call your form, do your thing...

    }
 [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
    public override void Commit(IDictionary savedState)
    {

        base.Commit(savedState);
    }

    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
    public override void Rollback(IDictionary savedState)
    {
        // if something goes wrong, it's here you correct it and rollback the system to its previous state and undo what you already changed
        base.Rollback(savedState);
    }

        [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
        public override void Uninstall(IDictionary savedState)
        {
            // Here you undo changes when you cancel
            base.Uninstall(savedState);
        }

    }
现在我想设计我的应用程序,当用户尝试安装我的应用程序时,会出现一个对话框,要求提供凭据。如果用户无法提供正确的凭据,则我的应用程序将不会安装在用户pc中

同样,如果用户在卸载期间无法提供凭据,则用户将无法卸载我的应用


请指导我如何阻止自定义安装类的安装和卸载操作。谢谢

安装程序类仅在执行序列中运行,不用于显示UI。此外,安装程序非常透明,易于转换以克服此机制。我建议在运行时将其转移到应用程序逻辑中,或者使用windows installer创作工具,该工具允许您自定义UI序列(正确的设计,但仍然可以进行黑客攻击).

检查帖子。@Kurubaran:谢谢你的链接,但从那里我注意到,当凭据不正确时,他们会抛出异常,但我不想抛出异常,而是想显示一条类似“无效凭据”的消息并停止用户继续安装应用程序………是否可能?当用户插入无效密码时会发生什么情况?在用户插入正确的密码或回滚安装之前,是否要保持在同一窗口上?如果用户输入了错误的凭据,则我希望显示一条消息并关闭安装窗口。感谢回复。你能更详细地讨论一下吗?没有更多的细节了。所有VS install自定义操作在安装所有文件后运行,因此停止安装为时已晚。我想Chris说的是“谁在乎安装”?只需在应用程序第一次运行时请求凭据即可。这比MSI文件更安全。任何你试图阻止MSI卸载的行为都是可以被破解的,因为MSI文件是透明的,而且像这样阻止卸载似乎是不寻常的-你可能会让it经理和管理员疯狂地试图管理系统。啊。。。卸载。错过了。因此,请使用ARPSYSTEMCOMPONENT并编写自己的EXE,以便在正确的密码检查后启动卸载。