diff --git a/uninstall.go b/uninstall.go index ebbb66f..8cd7e40 100644 --- a/uninstall.go +++ b/uninstall.go @@ -53,11 +53,31 @@ func runUninstall(args []string) error { for _, id := range args { var err error fmt.Printf("Uninstalling %s\n", id) - if _, installed := inst[id]; installed { + app, installed := inst[id] + if installed { + installedForUser := false if *uninstallUser == "all" { - err = device.Uninstall(id) + installedForUser = true } else { - err = device.UninstallUser(id, *uninstallUser) + uid, err := strconv.Atoi(*uninstallUser) + if err != nil { + return err + } + for _, appUser := range app.InstalledForUsers { + if appUser == uid { + installedForUser = true + break + } + } + } + if installedForUser { + if *uninstallUser == "all" { + err = device.Uninstall(id) + } else { + err = device.UninstallUser(id, *uninstallUser) + } + } else { + err = errors.New("not installed for user") } } else { err = errors.New("not installed")