首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 软件自动升级解决办法

2012-08-21 
C# 软件自动升级我想通过文件覆盖进行软件升级,但文件覆盖式老是弹出文件正由另一进程使用,因此该进程无法

C# 软件自动升级
我想通过文件覆盖进行软件升级,但文件覆盖式老是弹出

文件正由另一进程使用,因此该进程无法访问该文件

[解决办法]
File.WriteAllText("test.bat",
@"@echo off
:run
del %1 >nul
if exist %1 goto run
del test.bat
");
ProcessStartInfo p= new ProcessStartInfo();
p.FileName = "test.bat";
p.Arguments = System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName;
p.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(p);

[解决办法]

C# code
       try                {                    System.IO.File.Copy(DownLoadPath, App.PPath, true);                }                catch (Exception ex)                {                    if (ex is System.IO.IOException)                    {                        System.Diagnostics.Process[] Ps = System.Diagnostics.Process.GetProcessesByName(App.PPName);                        if (Ps.Length == 0)                        {                            throw ex;                        }                        else                        {                            bool isrun = false;                            foreach (System.Diagnostics.Process p in Ps)                            {                                if (p.MainModule.FileName == App.PPath)                                {                                    isrun = true;                                    break;                                }                            }                            if (isrun)                            {                                MessageBox.
[解决办法]
文件正在用,你要先关闭当前的系统,才能覆盖.
网上有许多例子.
关键词"AutoUpdate"

[解决办法]
更新思路:
前提条件,先启动更新程序,下载,完毕后,启动主程序;
1、客户端更新程序需要有记忆体,记载哪些文件更新,并和服务器上传时间一致;
服务端:a.xx 2010-09-08
b.xx 2010-09-08
a.xx 2010-09-07
客户端记忆体:
b.xx 2010-09-06
a.xx 2010-09-06
启动更新程序后,对照服务端,发现有a.xx 2010-09-08和2010-09-07需更新,那么就取08日的。
发现有b.xx 2010-09-07也需要更新。
2、只要更新完毕一个文件,记忆体就做记载,否则认为下载失败。

热点排行