You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.1 KiB
62 lines
2.1 KiB
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
func install() error {
|
|
kioskInfof("checking firefox usability")
|
|
var firefoxInstallErr error
|
|
if isFirefoxUsable() {
|
|
kioskInfof("firefox is usable")
|
|
fmt.Println("Firefox is installed and usable")
|
|
if err := writeFirefoxInstallMarker("usable"); err != nil {
|
|
kioskWarnf("write firefox install marker failed err=%v", err)
|
|
}
|
|
} else if hasFirefoxInstallMarker() {
|
|
kioskWarnf("firefox unusable but install marker exists; skip automatic repair")
|
|
fmt.Println("Firefox unusable; skip automatic repair on startup")
|
|
} else {
|
|
kioskWarnf("firefox unusable and no install marker; starting first-time install")
|
|
fmt.Println("Firefox missing or unusable, installing...")
|
|
if err := installFirefox(); err != nil {
|
|
kioskErrorf("firefox first-time install failed err=%v", err)
|
|
fmt.Printf("install Firefox failed: %v\n", err)
|
|
firefoxInstallErr = fmt.Errorf("install Firefox failed: %w", err)
|
|
} else {
|
|
if err := writeFirefoxInstallMarker("installed"); err != nil {
|
|
kioskWarnf("write firefox install marker after install failed err=%v", err)
|
|
}
|
|
kioskInfof("firefox first-time install success")
|
|
fmt.Println("Firefox install success")
|
|
}
|
|
}
|
|
|
|
appPath, err := os.Executable()
|
|
if err != nil {
|
|
kioskErrorf("read executable path failed err=%v", err)
|
|
fmt.Printf("read executable path failed: %v\n", err)
|
|
return fmt.Errorf("read executable path failed: %w", err)
|
|
}
|
|
|
|
kioskInfof("current executable path=%s workdir=%s", appPath, filepath.Dir(appPath))
|
|
if !isAutoStartEnabled(appPath) {
|
|
kioskWarnf("autostart service missing or mismatched; reinstalling service=%s", autoStartServiceFile(appPath))
|
|
fmt.Println("setting autostart...")
|
|
if err := enableAutoStart(appPath); err != nil {
|
|
kioskErrorf("autostart setup failed service=%s err=%v", autoStartServiceFile(appPath), err)
|
|
fmt.Printf("setup autostart failed: %v\n", err)
|
|
return fmt.Errorf("setup autostart failed: %w", err)
|
|
}
|
|
fmt.Println("autostart setup success")
|
|
} else {
|
|
fmt.Println("autostart already configured")
|
|
}
|
|
if firefoxInstallErr != nil {
|
|
return firefoxInstallErr
|
|
}
|
|
return nil
|
|
}
|