34 lines
819 B
Go
34 lines
819 B
Go
package soft
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
// extractBinary 解压二进制压缩包到目标目录
|
|
func extractBinary(binPath, destDir string) error {
|
|
// 确保目标目录存在
|
|
if err := os.MkdirAll(destDir, 0755); err != nil {
|
|
return err
|
|
}
|
|
|
|
// 根据扩展名选择解压命令
|
|
var cmd *exec.Cmd
|
|
switch {
|
|
case strings.HasSuffix(binPath, ".tar.gz"), strings.HasSuffix(binPath, ".tgz"):
|
|
cmd = exec.Command("tar", "xzf", binPath, "-C", destDir)
|
|
case strings.HasSuffix(binPath, ".tar.bz2"):
|
|
cmd = exec.Command("tar", "xjf", binPath, "-C", destDir)
|
|
case strings.HasSuffix(binPath, ".zip"):
|
|
cmd = exec.Command("unzip", binPath, "-d", destDir)
|
|
default:
|
|
return fmt.Errorf("不支持的压缩格式: %s", binPath)
|
|
}
|
|
|
|
cmd.Stdout = os.Stdout
|
|
cmd.Stderr = os.Stderr
|
|
return cmd.Run()
|
|
}
|