如何自动更新-CMD

不打算讲得很细 我本人能看懂就行

现在客户端自动更新 一般要用到更新程序,这样就是两个项目,两个exe了 所以对我这来说比较反感

所以就选择了另外一种方法 cmd

由于是自动更新客户端 且是内置的

所以要关闭自身

但是cmd在process执行的时候 属于这个程序 如果关闭主线程这个线程也同样被终止了

所以我只能用外置bat来执行cmd了。

string b = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

这是获取本地文件路径 比如有快捷方式的。。你总不能让人家换个名字吧

这是要写入的cmd命令string.Format("taskkill /im \"BigcraftVersionUpdate.exe\"\r\nping 127.0.0.1 -n 2 >nul\r\ndel \"{0}\"\r\nrename \"{1}\" \"{2}\"\r\nstart {3}\r\ndel %0", b, "Bigcraft-1128046.exe", b.Substring(b.LastIndexOf("\\") + 1), b.Substring(b.LastIndexOf("\\") + 1))

string.Format("taskkill /im \"BigcraftVersionUpdate.exe\" //这是我的程序名字 是固定的

\r\n //cmd里面仅仅\n是不吃的 必须要\r\n才能换行

ping 127.0.0.1 -n 2 >nul \\由于结束程序有延时 所以我让他缓一会再进行后续操作

\r\n

del \"{0}\" //删除本地文件

\r\n

rename \"{1}\" \"{2}\" 重命名下载的文件为本地文件 {1}传入下载的文件路径 我这里就设置的死路径

\r\n

start {3} //开启应用程序

\r\n

del %0", //这里是删除bat文件 不然看着麻烦

 b //要taskkill的本地文件

, "Bigcraft-1128046.exe" //新客户端名称

, b.Substring(b.LastIndexOf("\\") + 1) //重命名新客户端为客户端的名称

, b.Substring(b.LastIndexOf("\\") + 1) //运行新客户端

)

        public static void RunCmd(string cmd)
        {
            string htmlfilename = DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_tmp.bat"; //保存文件的路径
            new FileOperate().Write_Txt(htmlfilename, cmd, Encoding.Default);
            Process.Start(htmlfilename);
        }
<span style="white-space:pre">	</span>public void Write_Txt(string FileName, string Content, Encoding code)
        {
            string htmlfilename = FileName; //保存文件的路径
            string str = Content;
            StreamWriter sw = null;
            {
                try
                {
                    sw = new StreamWriter(htmlfilename, false, code);
                    sw.Write(str);
                    sw.Flush();
                }
                catch { }
            }
            sw.Close();
            sw.Dispose();

        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值