我正在编写一个函数,该函数将通过将应用程序路径作为参数来运行 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)
}
}
芜湖不芜
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
- 2 回答
- 0 关注
- 149 浏览
添加回答
举报
0/150
提交
取消