如何自动更新-CMD

来源:互联网 发布:语法高亮 js 编辑:程序博客网 时间:2024/05/16 23:44
不打算讲得很细 我本人能看懂就行

现在客户端自动更新 一般要用到更新程序,这样就是两个项目,两个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
原创粉丝点击