diff --git a/interfacer/src/browsh/firefox_windows.go b/interfacer/src/browsh/firefox_windows.go index 4597cb4..3df1d7b 100644 --- a/interfacer/src/browsh/firefox_windows.go +++ b/interfacer/src/browsh/firefox_windows.go @@ -12,10 +12,11 @@ import ( func getFirefoxPath() string { versionString := getWindowsFirefoxVersionString() + flavor := getFirefoxFlavor() k, err := registry.OpenKey( - registry.CURRENT_USER, - `Software\Mozilla\Mozilla Firefox\`+versionString+`\Main`, + registry.LOCAL_MACHINE, + `Software\Mozilla\`+flavor+` `+versionString+`\bin`, registry.QUERY_VALUE) if err != nil { Shutdown(errors.New("Error reading Windows registry: " + fmt.Sprintf("%s", err))) @@ -29,16 +30,18 @@ func getFirefoxPath() string { } func getWindowsFirefoxVersionString() string { + flavor := getFirefoxFlavor() + k, err := registry.OpenKey( - registry.CURRENT_USER, - `Software\Mozilla\Mozilla Firefox`, + registry.LOCAL_MACHINE, + `Software\Mozilla\`+flavor, registry.QUERY_VALUE) if err != nil { Shutdown(errors.New("Error reading Windows registry: " + fmt.Sprintf("%s", err))) } defer k.Close() - versionString, _, err := k.GetStringValue("CurrentVersion") + versionString, _, err := k.GetStringValue("") if err != nil { Shutdown(errors.New("Error reading Windows registry: " + fmt.Sprintf("%s", err))) } @@ -48,6 +51,48 @@ func getWindowsFirefoxVersionString() string { return versionString } +func getFirefoxFlavor() string { + var flavor = "null" + k, err := registry.OpenKey( + registry.LOCAL_MACHINE, + `Software\Mozilla\Mozilla Firefox`, + registry.QUERY_VALUE) + + if err == nil { + flavor = "Mozilla Firefox" + } + defer k.Close() + + if flavor == "null" { + k, err := registry.OpenKey( + registry.LOCAL_MACHINE, + `Software\Mozilla\Firefox Developer Edition`, + registry.QUERY_VALUE) + + if err == nil { + flavor = "Firefox Developer Edition" + } + defer k.Close() + } + + if flavor == "null" { + k, err := registry.OpenKey( + registry.LOCAL_MACHINE, + `Software\Mozilla\Nightly`, + registry.QUERY_VALUE) + + if err == nil { + flavor = "Nightly" + } + defer k.Close() + } + + if flavor == "null" { + Shutdown(errors.New("Could not find Firefox on your registry")) + } + return flavor +} + func ensureFirefoxVersion(path string) { versionString := getWindowsFirefoxVersionString() pieces := strings.Split(versionString, " ")