go中如何打开windows应用程序包(exe,msi格式)

go项目中如何启动windows应用安装包(msi,exe格式)安装软件

我总结出有两种方法可以做到让windows自安装应用程序

1:使用cmd命令来做

Cmd命令需要区分安装exe和msi软件,命令不同,命令参数请参考

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/msiexec

代码如下

其中注释掉的

cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}

是不让弹出窗口,入参是安装包全路径

这种方法有个问题,就是如果是在完整的项目中,一旦安装出错或者客户取消安装软件,就会杀死整个项目的进程,项目停止。我没有尝试找到如何停止单个安装软件进程的方法,猜测可能可以用context来做,我没试过,如果有同学实验可以,可以私聊下我,感谢。

2:采用CreateProcess方法来创建新的进程(推荐)

在Go中,syscall包会由于你指定的系统或架构的不同而编译出不同的结果,因为syscall包里需要编译的函数或类型会根据你指定的编译参数不同而不同。大家可以去看下syscall包源码

代码如下

CreateProcess方法即使客户取消安装也不会终止当前项目进程,较为简单。推荐

还有一些同学不想弹出cmd框,可以在编译的时候go build -ldflags="-H windowsgui"方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值