最好做一个单独的windows服务来处理自动更新好一些

解决方案 »

  1.   

         if (clientVersion != newVersion)
                    {
                        ProcessStartInfo startInfo = new ProcessStartInfo();
                        startInfo.FileName = Application.StartupPath + @"\Updater.exe";
                        startInfo.WindowStyle = ProcessWindowStyle.Normal;
                        startInfo.Arguments = newVersion;
                        Process.Start(startInfo);
                        Process.GetCurrentProcess().Kill();                }
      

  2.   

    更新本身的话。是可以的
    目前我测试过
    好像本身大小超过3M  可以替换本身
    流程是
    比如本身为  ha.exe
    1.下载更新文件命名ha.up
    2.修改本身ha.exe 为ha.back
    3.修改ha.up 为ha.exe
    4.重启程序Application.Restart();
     if (File.Exists(Application.StartupPath + "\\Weixin_Pro.bak"))
                        File.Delete(Application.StartupPath + "\\Weixin_Pro.bak");
                    StreamWriter sw2 = new StreamWriter(Application.StartupPath + "\\config.txt", false);
                    sw2.Write("ServerPath=" + pathstro + "\r\nVersion=" + vero);
                    sw2.Close();
                    File.Move(Application.StartupPath + "\\Weixin_Pro.exe", Application.StartupPath + "\\Weixin_Pro.bak");
                    File.Move(Application.StartupPath + "\\Weixin_Pro.update", Application.StartupPath + "\\Weixin_Pro.exe");                try
                    {
                        Application.Restart();                }
                    catch { }
      

  3.   


    Application.Exit();//关闭当前程序
    Process.Start("Update.exe");//启动更新程序      
    更新程序中下载需要更新的文件,一般用压缩包处理。
    如果需要更进一步,可以加我Q  8150772 
      

  4.   

    可以尝试下上面说的“Windows服务”,Baidu搜下应该能帮助到你。。
      

  5.   

    简单的升级,可以用clickonce来完成。而我是这样做的,客户端和服务器都有一个xml列表,记录了各个文件的版本号(md5值).客户端定时访问远程的xml列表,进行比较,如果需要更新,则下载文件到用户数据文件夹(关系到文件校验和UAC的问题,不直接下载到程序安装目录),然后校验,如果成功,则调用管理员权限的辅助程序,覆盖各个文件。
      

  6.   

    一个exe是没有办法做到自更新的,因为exe运行的时候不能被替换。
    无论是windows server还是启动辅助程序,都需要你再写一个exe,这个exe可以比较简单,就是发现有新的更新文件就把文件覆盖掉原来的,然后启动主exe。
      

  7.   

    Desay.AutoUpdate.AppUpdater app = new AutoUpdate.AppUpdater();
                int i = 0;
                try
                {
                    i = app.CheckForUpdate();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                if (i > 0 && MessageBox.Show("发现新版本,是否要升级?\r\n\r\n选择 “是” 马上升级,选择 “否” 暂时不升级", "升级提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {                Process.Start(Application.StartupPath + "\\" + "Desay.AutoUpdate.exe");
                }
                else
                {
                    
                }
    升级程序升级完成后重新打开程序即可如果需要我可以给你一份代码
      

  8.   

    更新本身的话。是可以的
    目前我测试过
    好像本身大小超过3M  可以替换本身
    流程是
    比如本身为  ha.exe
    1.下载更新文件命名ha.up
    2.修改本身ha.exe 为ha.back
    3.修改ha.up 为ha.exe
    4.重启程序Application.Restart();=========================
    下次再次升级时,必须删除ha.back; 
    但有时会出错,无法删除 ha.back, 造成升级失败。
    这个问题怎么解决?