github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmg/SubCommand/SelfUpdate_windows.go (about) 1 package SubCommand 2 3 import ( 4 "github.com/bronze1man/kmg/kmgCmd" 5 "github.com/bronze1man/kmg/kmgConsole" 6 "github.com/bronze1man/kmg/kmgFile" 7 "github.com/bronze1man/kmg/kmgNet/kmgHttp" 8 9 "github.com/bronze1man/kmg/kmgRand" 10 ) 11 12 func selfUpdate() { 13 prefixB, err := kmgHttp.UrlGetContent("http://kmgtools.qiniudn.com/v1/kmgUrlPrefix.txt?v=" + kmgRand.MustCryptoRandToAlphaNum(16)) 14 kmgConsole.ExitOnErr(err) 15 16 exeContent, err := kmgHttp.UrlGetContent(string(prefixB) + "_windows_amd64.exe") 17 kmgConsole.ExitOnErr(err) 18 19 //cmd 这个东西有超级神力,直接os.Rename不行 但是360会报警 20 // 已经试过下列方案: 21 // 1.os.Rename 后面的write会没有权限,原因不明 22 // 2.move windows上面没有这个命令 23 kmgCmd.ProxyRun(`cmd /c move C:\windows\system32\kmg.exe C:\windows\system32\kmg-old.exe`) 24 25 kmgFile.MustWriteFile(`C:\windows\system32\kmg.exe`, exeContent) 26 }