我正在編寫一個函數,該函數將通過將應用程序路徑作為參數來運行 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 關注
- 212 瀏覽
添加回答
舉報
0/150
提交
取消