Implemented detection of the Firefox flavor on Windows and fixed registry detection (#350)

This commit is contained in:
Paulo Manrique 2020-10-31 12:55:27 -03:00 committed by GitHub
parent 91148e8e44
commit 4a082a5efe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 50 additions and 5 deletions

View File

@ -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, " ")