【问题标题】:How we can prevent user to install and uninstall from custom installer class c#我们如何防止用户从自定义安装程序类 c# 安装和卸载
【发布时间】:2015-04-07 00:02:42
【问题描述】:

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

[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 中。

如果用户在卸载过程中无法提供凭据,那么用户将无法卸载我的应用程序。

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

【问题讨论】:

  • 查看this 帖子。
  • @Kurubaran:感谢您的链接,但从那里我注意到当凭据不正确时它们会抛出异常,但我不想抛出异常,而是我想显示一条消息,如“无效凭据”和阻止用户继续安装应用程序.........有可能吗?
  • 用户输入无效密码会怎样?在用户输入正确的密码或回滚安装之前,您要一直停留在同一个窗口上吗?
  • 如果用户输入了错误的凭据,那么我想显示一条消息并关闭安装窗口。

标签: c# windows-installer


【解决方案1】:

安装程序类仅在执行序列中运行,并非设计用于显示 UI。安装程序也非常透明且易于转换以击败这种机制。我建议在运行时将其移动到应用程序逻辑中,或者使用允许您自定义 UI 序列的 Windows 安装程序创作工具(适当的设计,但仍然可以破解)。

【讨论】:

  • 感谢您的回复。你能不能详细讨论一下。
  • 没有更多细节。所有 VS 安装自定义操作都在安装完所有文件后运行,因此停止安装为时已晚。我认为克里斯是在说“谁在乎安装”?只需要求应用程序在首次运行时要求提供凭据。这比 MSI 文件更安全。由于 MSI 文件是透明的,您为阻止从 MSI 卸载所做的任何操作都将是可破解的,而且像这样阻止卸载似乎很不寻常 - 您可能会让 IT 经理和管理员疯狂地尝试管理系统。
  • 啊...卸载。错过了。因此,请使用 ARPSYSTEMCOMPONENT 并编写自己的 EXE 以在正确检查密码后启动卸载。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2021-05-10
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多