public void DownloadUpdateFile(string urlzip) { string url = urlzip; var client = new System.Net.WebClient(); client.DownloadProgressChanged += (sender, e) => { UpdateProcess(e.BytesReceived, e.TotalBytesToReceive); }; client.DownloadDataCompleted += (sender, e) => { string zipFilePath = System.IO.Path.Combine(updateFileDir, "update.zip"); byte[] data = e.Result; BinaryWriter writer = new BinaryWriter(new FileStream(zipFilePath, FileMode.OpenOrCreate)); writer.Write(data); writer.Flush(); writer.Close(); System.Threading.ThreadPool.QueueUserWorkItem((s) => { Action f = () => { txtProcess.Text = "开始更新程序..."; }; this.Dispatcher.Invoke(f); string tempDir = System.IO.Path.Combine(updateFileDir, "temp"); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } UnZipFile(zipFilePath, tempDir); //移动文件 //App if(Directory.Exists(System.IO.Path.Combine(tempDir))) { CopyDirectory(System.IO.Path.Combine(tempDir),appDir); } f = () => { txtProcess.Text = "更新完成!"; try { //清空缓存文件夹 string rootUpdateDir = updateFileDir.Substring(0, updateFileDir.LastIndexOf(System.IO.Path.DirectorySeparatorChar)); System.IO.Directory.Delete(rootUpdateDir, true); } catch (Exception ex) { } }; this.Dispatcher.Invoke(f); try { f = () => { AlertWin alert = new AlertWin("更新完成,是否现在启动软件?") { WindowStartupLocation = WindowStartupLocation.CenterOwner, Owner = this }; alert.Title = "更新完成"; alert.Loaded += (ss, ee) => { alert.YesButton.Width = 40; alert.NoButton.Width = 40; }; alert.Width=300; alert.Height = 200; alert.ShowDialog(); if (alert.YesBtnSelected) { //启动软件 string exePath = System.IO.Path.Combine(appDir, callExeName + ".exe"); System.IO.File.AppendAllText("d:\\1.txt", "启动软件(exePath):" + exePath); var info = new System.Diagnostics.ProcessStartInfo(exePath); info.UseShellExecute = true; info.WorkingDirectory = appDir;// exePath.Substring(0, exePath.LastIndexOf(System.IO.Path.DirectorySeparatorChar)); System.Diagnostics.Process.Start(info); } else { } this.Close(); }; this.Dispatcher.Invoke(f); } catch (Exception ex) { //MessageBox.Show(ex.Message); } }); }; client.DownloadDataAsync(new Uri(url)); }
public void DownloadUpdateFile() { string url = Constants.RemoteUrl; var client = new System.Net.WebClient(); client.DownloadProgressChanged += (sender, e) => { UpdateProcess(e.BytesReceived, e.TotalBytesToReceive); }; client.DownloadDataCompleted += (sender, e) => { string zipFilePath = System.IO.Path.Combine(updateFileDir, "update.zip"); byte[] data = e.Result; BinaryWriter writer = new BinaryWriter(new FileStream(zipFilePath, FileMode.OpenOrCreate)); writer.Write(data); writer.Flush(); writer.Close(); System.Threading.ThreadPool.QueueUserWorkItem((s) => { Action f = () => { txtProcess.Text = "开始更新程序..."; }; this.Dispatcher.Invoke(f); string tempDir = System.IO.Path.Combine(updateFileDir, "temp"); if (!Directory.Exists(tempDir)) { Directory.CreateDirectory(tempDir); } UnZipFile(zipFilePath, tempDir); //移动文件 //App //if(Directory.Exists(System.IO.Path.Combine(tempDir,"App"))) //{ CopyDirectory(tempDir, appDir); //} f = () => { txtProcess.Text = "更新完成!"; try { //清空缓存文件夹 string rootUpdateDir = updateFileDir.Substring(0, updateFileDir.LastIndexOf(System.IO.Path.DirectorySeparatorChar)); foreach (string p in System.IO.Directory.EnumerateDirectories(rootUpdateDir)) { if (!p.ToLower().Equals(updateFileDir.ToLower())) { System.IO.Directory.Delete(p, true); } } } catch (Exception ex) { //MessageBox.Show(ex.Message); } }; this.Dispatcher.Invoke(f); try { f = () => { AlertWin alert = new AlertWin("更新完成,是否现在启动软件?") { WindowStartupLocation = WindowStartupLocation.CenterOwner, Owner = this }; alert.Title = "更新完成"; alert.Loaded += (ss, ee) => { alert.YesButton.Width = 40; alert.NoButton.Width = 40; }; alert.Width = 300; alert.Height = 200; alert.ShowDialog(); if (alert.YesBtnSelected) { //启动软件 string exePath = System.IO.Path.Combine(appDir, callExeName + ".exe"); var info = new System.Diagnostics.ProcessStartInfo(exePath); info.UseShellExecute = true; info.WorkingDirectory = appDir;// exePath.Substring(0, exePath.LastIndexOf(System.IO.Path.DirectorySeparatorChar)); System.Diagnostics.Process.Start(info); } else { } this.Close(); }; this.Dispatcher.Invoke(f); } catch (Exception ex) { //MessageBox.Show(ex.Message); } }); }; client.DownloadDataAsync(new Uri(url)); }
public void DownloadUpdateFile() { var client = new System.Net.WebClient(); client.DownloadProgressChanged += (sender, e) => { UpdateProcess(e.BytesReceived, e.TotalBytesToReceive); }; client.DownloadDataCompleted += (sender, e) => { string zipFilePath = Path.Combine(updateFileDir, "update.zip"); byte[] data = e.Result; BinaryWriter writer = new BinaryWriter(new FileStream(zipFilePath, FileMode.OpenOrCreate)); writer.Write(data); writer.Flush(); writer.Close(); System.Threading.ThreadPool.QueueUserWorkItem((s) => { Action f = () => { txtProcess.Text = "开始更新程序..."; }; Dispatcher.Invoke(f); string tempDir = Path.Combine(updateFileDir, appName); try { if (Directory.Exists(tempDir)) { Directory.Delete(tempDir, true); } Directory.CreateDirectory(tempDir); UnZipFile(zipFilePath, tempDir); } catch { System.Windows.MessageBox.Show("临时文件夹删除失败!!\r\n请确认软件拥有足够权限\r\n并且文件未被占用!", "文件夹操作失败!"); return; } var a = "F:\\Project\\Code\\LuMei\\代码\\LuMei\\bin\\Debug\\Temp\\Update\\temp"; //移动文件 //App var mainpath = ""; if (Directory.Exists(tempDir)) { CopyDirectory(tempDir, appDir); } f = () => { txtProcess.Text = "更新完成!"; try { //清空缓存文件夹 string rootUpdateDir = updateFileDir.Substring(0, updateFileDir.LastIndexOf(Path.DirectorySeparatorChar)); foreach (string p in Directory.EnumerateDirectories(rootUpdateDir)) { if (!p.ToLower().Equals(updateFileDir.ToLower())) { Directory.Delete(p, true); } } } catch (Exception ex) { //MessageBox.Show(ex.Message); } }; Dispatcher.Invoke(f); try { f = () => { AlertWin alert = new AlertWin("更新完成,是否现在启动软件?") { WindowStartupLocation = WindowStartupLocation.CenterOwner, Owner = this }; alert.Title = "更新完成"; alert.Loaded += (ss, ee) => { alert.YesButton.Width = 40; alert.NoButton.Width = 40; }; alert.Width = 300; alert.Height = 200; alert.ShowDialog(); if (alert.YesBtnSelected) { //启动软件 string exePath = Path.Combine(appDir, callExeName + ".exe"); var info = new ProcessStartInfo(exePath); info.UseShellExecute = true; info.WorkingDirectory = appDir;// exePath.Substring(0, exePath.LastIndexOf(System.IO.Path.DirectorySeparatorChar)); Process.Start(info); } else { } Close(); }; Dispatcher.Invoke(f); } catch (Exception ex) { //MessageBox.Show(ex.Message); } }); }; client.DownloadDataAsync(new Uri(fileurl)); }