diff --git a/pkg/utils/file.go b/pkg/utils/file.go index 1c1c539..a50ee44 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -1,6 +1,7 @@ package utils import ( + "fmt" "io" "os" "os/exec" @@ -93,3 +94,8 @@ func (*FileUtils) WinOpenFolder(folderPath string) error { //_, err = Exec.Command(fmt.Sprintf("explorer %s", f), dir) //return err } + +func (*FileUtils) WinOpenFile(dir string, fileName string) error { + _, err := Exec.Command(fmt.Sprintf("cmd /c start %s", fileName), dir) + return err +} diff --git a/views/createView/createExecFile.go b/views/createView/createExecFile.go index 089d978..67cbbd4 100644 --- a/views/createView/createExecFile.go +++ b/views/createView/createExecFile.go @@ -8,11 +8,11 @@ import ( "fyne.io/fyne/v2/widget" dialogWin "github.com/sqweek/dialog" "log" - "os/exec" "path/filepath" "time" "work_cation/global" "work_cation/models" + "work_cation/pkg/utils" "work_cation/repo" "work_cation/service" ) @@ -67,17 +67,12 @@ func CreateExecFile(w fyne.Window) fyne.CanvasObject { dialog.ShowInformation("测试失败", "未填写执行命令", w) return } - ex := exec.Command("cmd", "/c", "start", info.Cmd) - ex.Dir = filepath.Join(chooseDir, info.Pwd) - if err := ex.Start(); err != nil { + dir := filepath.Join(chooseDir, info.Pwd) + err := utils.File.WinOpenFile(dir, info.Cmd) + if err != nil { dialog.ShowInformation("测试失败", err.Error(), w) return } - go func() { - if err := ex.Wait(); err != nil { - dialog.ShowInformation("测试失败", err.Error(), w) - } - }() }) return container.NewBorder(container.NewHBox(widget.NewLabel("新建"), widget.NewSeparator()), diff --git a/views/showView/execFile.go b/views/showView/execFile.go index 91baa37..a77acd7 100644 --- a/views/showView/execFile.go +++ b/views/showView/execFile.go @@ -11,6 +11,7 @@ import ( "path/filepath" "work_cation/cfg" "work_cation/models" + "work_cation/pkg/utils" ) func ExecFileCardView(w fyne.Window, data *models.BaseCard) (fyne.CanvasObject, error) { @@ -34,17 +35,12 @@ func runExecFile(data *models.BaseCard, w fyne.Window) { dialog.ShowInformation("测试失败", err.Error(), w) return } - ex := exec.Command("cmd", "/c", "start", info.Cmd) - ex.Dir = filepath.Join(cfg.T.CardDir, data.UUID, info.Pwd) - if err := ex.Start(); err != nil { + dir := filepath.Join(cfg.T.CardDir, data.UUID, info.Pwd) + err = utils.File.WinOpenFile(dir, info.Cmd) + if err != nil { dialog.ShowInformation("测试失败", err.Error(), w) return } - go func() { - if err := ex.Wait(); err != nil { - dialog.ShowInformation("测试失败", err.Error(), w) - } - }() } func openDir(data *models.BaseCard, w fyne.Window) {