如何下载和运行.exe文件c#

Posted

技术标签:

【中文标题】如何下载和运行.exe文件c#【英文标题】:How to download and run a .exe file c# 【发布时间】:2016-02-28 15:16:34 【问题描述】:

在您将其标记为重复之前,是的,存在这样的问题,我已经查看了所有这些问题,但仍然无法使其正常工作。我正在尝试编写一个下载并运行 .exe 文件的功能,但它不会下载、运行或执行任何操作。我什至删除了尝试捕获以查找错误或错误代码,但我没有,所以我不知道哪里出错了,这是我的代码

public test_Configuration()
    
        InitializeComponent();
    

    Uri uri = new Uri("http://example.com/files/example.exe");
    string filename = @"C:\Users\**\AppData\Local\Temp\example.exe";

    private void button1_Click(object sender, EventArgs e)
    
        try
        
            if(File.Exists(filename))
            
                File.Delete(filename);
            
            else
            
                WebClient wc = new WebClient();
                wc.DownloadDataAsync(uri, filename);
                wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
                wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
            
        
        catch(Exception ex)
        
            MessageBox.Show(ex.Message.ToString());
              
    
    private void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    
        progressBar1.Value = e.ProgressPercentage;
        if (progressBar1.Value == progressBar1.Maximum)
        
            progressBar1.Value = 0;
        
    
    private void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
    
        if(e.Error == null)
        
            MessageBox.Show("Download complete!, running exe", "Completed!");
            Process.Start(filename);
        
        else
        
            MessageBox.Show("Unable to download exe, please check your connection", "Download failed!");
        

【问题讨论】:

【参考方案1】:

DownloadDataAsync 更改为DownloadFileAsync

wc.DownloadFileAsync(uri, filename);

【讨论】:

谢谢!没想到这么容易解决【参考方案2】:

这段代码在更新文件方面帮助了我很多,所以我想我会展示一下我的转折,希望其他人有和我类似的要求。

单击按钮时,我需要这段代码来执行以下操作:

    从服务器获取文件并将其存储在本地 AppData\Temp 中。 让我的用户了解最新的安装进度(已下载安装程序)。 如果下载成功(注意删除旧文件检查后删除else),启动“daInstaller.exe”,同时终止当前正在运行的程序。 如果所述文件已经存在(即旧的“daIstaller.exe”),请在将新文件复制到 AppData\Temp 之前删除。

不要忘记保持文件名相同,否则您会在 AppData\Temp 文件夹中留下更多垃圾。

 private void button1_Click(object sender, EventArgs e)
    
        Uri uri = new Uri("http://example.com/files/example.exe");
        filename = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Temp/example.exe");

        try
        
            if (File.Exists(filename))
            
                File.Delete(filename);
            

            WebClient wc = new WebClient();
            wc.DownloadFileAsync(uri, filename);
            wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wc_DownloadProgressChanged);
            wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);
        
        catch (Exception ex)
        
            MessageBox.Show(ex.Message.ToString());
        

    

    private void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    
        progressBar1.Value = e.ProgressPercentage;
        if (progressBar1.Value == progressBar1.Maximum)
        
            progressBar1.Value = 0;
        
    
    private void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
    
        if (e.Error == null)
        
            Process.Start(filename);
            Close();
            Application.Exit();
        
        else
        
            MessageBox.Show("Unable to download exe, please check your connection", "Download failed!");
        
    

【讨论】:

以上是关于如何下载和运行.exe文件c#的主要内容,如果未能解决你的问题,请参考以下文章

如何从Vb程序运行exe文件

c语言如何把c程序编译成可执行的exe文件

Java编程成exe后不能在别的机器上运行

如何从 PowerShell 运行 *.exe 文件

JNLP文件如何能成功安装运行?

怎么生成exe文件