diff --git a/internal/download/jobs.go b/internal/download/jobs.go index 6fc241d..d90a195 100644 --- a/internal/download/jobs.go +++ b/internal/download/jobs.go @@ -511,9 +511,21 @@ func unzip(srcZip, destDir string) error { func unrarExtract(srcRar, destDir string) error { cmd := exec.Command("unrar", "x", "-y", srcRar, destDir) output, err := cmd.CombinedOutput() - if err != nil { - return fmt.Errorf("unrar error: %v, output: %s", err, string(output)) + if err == nil { + return nil } - return nil + + + cmd7z := exec.Command("7z", "x", srcRar, "-y", "-o"+destDir) + output7z, err7z := cmd7z.CombinedOutput() + if err7z == nil { + return nil + } + + return fmt.Errorf( + "unrar failed: %v, output: %s\n7z fallback failed: %v, output: %s", + err, string(output), + err7z, string(output7z), + ) } -//***// +