为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 golang 运行 .msi 文件?

如何使用 golang 运行 .msi 文件?

Go
吃鸡游戏 2023-06-26 17:35:21
我正在编写一个函数,该函数将通过将应用程序路径作为参数来运行 msi 文件。现在该函数返回一个错误代码,表明应用程序的路径不是有效的 Win32 应用程序。此函数适用于 .exe 文件,但不适用于 .msi 文件。如何重构它以适用于 .msi 文件?func Run(application string) {     cmd := exec.Command(application)     err := cmd.Run()         if err != nil {         log.Fatalf("cmd.Run() failed with %s\n", err)     } }
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

你可以简单地通过Windows命令行运行它


   func main(){    

    c := exec.Command("cmd", "/C", "msiexec /a \"pathtotheMSIfile\"")

    if err := c.Run(); err != nil { 

        fmt.Println("Error: ", err)

    }   

}


查看完整回答
反对 回复 2023-06-26
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

创建一个像这样的文件:


//go:generate mkwinsyscall -output zmsi.go msi.go

//sys msiInstallProduct(file string, command string) (e error) = msi.MsiInstallProductW

package main


func main() {

   msiInstallProduct(`C:\file.msi`, "")

}

然后构建:


go generate

go mod init msi

go mod tidy

go build

https://github.com/golang/sys/tree/master/windows/mkwinsyscall


查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信