【问题标题】:uninstalling an application and then installing another one using c#卸载一个应用程序,然后使用 c# 安装另一个应用程序
【发布时间】:2014-12-06 16:37:31
【问题描述】:

我正在尝试从系统中卸载应用程序并安装它的新版本。

我尝试在 c# 代码中使用 Process.start 和 WaitForExit 方法

var process1 = Process.Start(@"C:\Program Files\CPUID\CPU-Z\unins000.exe");
process1.WaitForExit();
var process2 = Process.Start(@"C:\Users\abc\Downloads\Programs\cpu-z_1.71-setup-en.exe");

当代码运行时,cpu-z_1.71 的安装文件会在卸载程序退出之前启动。

如何让安装程序等到我按下完全卸载对话框的确定​​按钮。

是否可以使用流程来完成上述任务,或者我应该使用一些替代方法

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    您可以从以下文章中找到方法。

    而且这段代码可以是一个方法。

    private void RunNotePad()
    {
        Process p1 = new Process("notepad.exe");
        p1.EnableRaisingEvents = true;
        //when process exit, excute ProcessExited function.
        p1.Exited += new EventHandler(ProcessExited);
        p1.Start();
    }
    
    public void ProcessExited(object source, EventArgs e)
    {
        //start to install a new version
    }
    

    【讨论】:

    • 当我尝试上述代码时,我收到一条错误消息,指出 System.Diagnostic.Process 不包含采用 1 个参数的构造函数
    • 可能是NET框架版本的不同。您可以在msdn 中找到一些使用 Process 类的示例代码
    • 我试了下,还是弹出了新版本的安装提示,我还没来得及点击最后一个卸载旧版本的对话框
    • 你能再次发布你的代码吗?我已经测试了我的代码,但它确实有效。
    • private void Rununinstaller() { 进程 process1; process1 = Process.Start(@"C:\Program Files\CPUID\CPU-Z\unins000.exe"); process1.EnableRaisingEvents = true; process1.Exited += new EventHandler(ProcessExited); //process1.Start(); } public void ProcessExited(object source, EventArgs e) { var process2 = Process.Start(@"C:\Users\abc\Downloads\Programs\cpu-z_1.71-setup-en.exe"); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多