summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaulo Manrique <me@paulo.dev>2020-10-31 12:55:27 -0300
committerGitHub <noreply@github.com>2020-10-31 16:55:27 +0100
commit4a082a5efe1d46157ac11ad6fe54092e53377063 (patch)
treeb55e7495611c47ca06b5d2f4d36e0e7afbdeb7bf
parent91148e8e441fae184098c765c05f517613aa11dc (diff)
Implemented detection of the Firefox flavor on Windows and fixed registry detection (#350)
-rw-r--r--interfacer/src/browsh/firefox_windows.go55
1 files changed, 50 insertions, 5 deletions
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, " ")