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  }