Check that an app is installed before installing it

RESOLVED FIXED in 2012-10-04

Status

Marketplace
Consumer Pages
P3
normal
RESOLVED FIXED
7 years ago
6 years ago

People

(Reporter: Andy McKay, Assigned: cvan)

Tracking

2012-10-04
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(blocking-basecamp:-)

Details

(Reporter)

Description

7 years ago
We should be checking that an app is installed before installing it in the JS api.

https://developer.mozilla.org/en/Apps/Apps_JavaScript_API/navigator.mozApps.amInstalled

There's an amInstalled(..) api that we can call. If it's already installed, we can just show an error message I presume using showError:

https://github.com/mozilla/zamboni/blob/master/media/js/zamboni/apps.js#L86
(Reporter)

Updated

7 years ago
Blocks: 710074
Could we just launch it?  Or is that not the expected behavior?
Priority: -- → P3
(Reporter)

Comment 2

7 years ago
Dunno, I think that would be fine. There was talk about AMO knowing what apps are installed, in which case the button would say "Launch" not "Install" in that case launching would be even more fine.
Blocks: 718560
No longer blocks: 710074
Duplicate of this bug: 709051
Jason, Bryan: the latest design I saw shows "Installed" on the button.  Is that what we're going with?  No way to launch from the marketplace if it's already installed?
Whiteboard: [needs ux]
Blocks: 735202
No longer blocks: 718560
Wil: Actually, I had the same question. Dils explained it to me: "By labeling the button "installed", it does double duty. It provides a call to action to launch the app, while implicitly telling the user this app is already installed."

So actually, that button would in fact launch the app.
(In reply to Jason Grlicky [:grlicky] from comment #5)
> Wil: Actually, I had the same question. Dils explained it to me: "By
> labeling the button "installed", it does double duty. It provides a call to
> action to launch the app, while implicitly telling the user this app is
> already installed."
> 
> So actually, that button would in fact launch the app.

Ah.  Over to bill then.  Bill - is it possible for the marketplace to know if you have an app installed or not?
Sounds like Anant is the expert here and that the API to list currently installed apps does exist from bug 720415.  That brings us to the next question - is it possible to launch the native app from the marketplace?
(Assignee)

Comment 8

6 years ago
Looks like we have this https://developer.mozilla.org/en/Apps/Apps_JavaScript_API/navigator.mozApps.amInstalled

Seems like we're good to go if you're using Firefox. If you're using the HTML5/JS shim you're SOL until that is implemented there too.

Assuming this works, this bug is ready for implementation.
(Assignee)

Updated

6 years ago
Blocks: 735054
No longer blocks: 735202
(Assignee)

Comment 9

6 years ago
https://github.com/mozilla/zamboni/commit/3de94e3
Assignee: nobody → cvan
Status: NEW → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → 6.5.0

Comment 10

6 years ago
Looks like comment 0 is not addressed completely here. If a user tries to reinstall and installed app, what do we do? Tell them that the app is already installed? Or reinstall it?

reopening so that further conversation can happen.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
(Assignee)

Updated

6 years ago
Target Milestone: 6.5.0 → 6.5.2
Target Milestone: 6.5.2 → 6.5.4
(In reply to krupa raj 82[:krupa] from comment #10)
> Looks like comment 0 is not addressed completely here. If a user tries to
> reinstall and installed app, what do we do? Tell them that the app is
> already installed? Or reinstall it?
> 
> reopening so that further conversation can happen.

How do they reinstall it - the button says installed?
Blocks: 752013
No longer blocks: 735054
Just to clarify, re-installation of an already installed app is non-destructive as far as the web runtime is concerned, i.e. the install() call will succeed with no errors.

If we'd like to raise an error, it has to be done at the marketplace level by calling getInstalled() first and not calling install() if a matching entry was found.

This also give you full flexibility regarding which solution you'd like to implement when the user encounters an already installed app on the marketplace and clicks a button:

- Launch the app via the launch() method
- Reinstall the app by calling install(), will almost always succeed
- Raise an error, don't call instal()

In all cases, getInstalled() must be called first.
(Assignee)

Comment 13

6 years ago
If we decide to throw an error/warning or disallow re-installations (by clicking on the button), I could natively uninstall the app (on Mac/Windows) and never be able to install that app again. We should wait until bug 749033 is addressed before trying to accommodate for this case.
Depends on: 749033
Target Milestone: 2012-05-10 → ---
This is also related to bug 765380.
Blocks: 766201
No longer blocks: 752013
Keywords: uiwanted
Whiteboard: [needs ux]
(Assignee)

Comment 15

6 years ago
I'm not sure what's supposed to happen in this bug.
Maybe we should show "Reinstall" instead of "Installed"
(Assignee)

Updated

6 years ago
Component: Public Pages → Consumer Pages
Product: addons.mozilla.org → Marketplace
QA Contact: web-ui → consumer-pages
Version: unspecified → 1.0
(Assignee)

Updated

6 years ago
Target Milestone: --- → 2012-07-05
(Assignee)

Comment 17

6 years ago
CC'ing Maria for ideas.
blocking-basecamp: --- → ?
(In reply to Chris Van Wiemeersch [:cvan] from comment #17)
> CC'ing Maria for ideas.

After reading through the full comment thread here I'm still not sure if we have the ability to launch the app from the Marketplace instead of reinstalling it. Chris - I think you said to me once that we can't launch from Marketplace. 

If I could get the final word on this, I can move forward from there.
The fixes for the dependencies of meta bug 745924 will make it possible for Marketplace to launch the app.
(In reply to Myk Melez [:myk] [@mykmelez] from comment #19)
> The fixes for the dependencies of meta bug 745924 will make it possible for
> Marketplace to launch the app.

Awesome, thanks Myk. Since we have the capability to launch the app from the Marketplace, let's do that. If a user wants to reinstall an app, they have to uninstall it and install it again. This is how it works for desktop applications as well as mobile apps on other platforms and seems like a good standard. I will update the install button states from bug 747144 comment 5 to reflect that.
(In reply to Maria Sandberg [:mushi] from comment #20)
> Awesome, thanks Myk. Since we have the capability to launch the app from the
> Marketplace, let's do that. If a user wants to reinstall an app, they have
> to uninstall it and install it again.

Should we disable reinstallation in general or just for our Marketplace?
(In reply to Marco Castelluccio from comment #21)
> (In reply to Maria Sandberg [:mushi] from comment #20)
> > Awesome, thanks Myk. Since we have the capability to launch the app from the
> > Marketplace, let's do that. If a user wants to reinstall an app, they have
> > to uninstall it and install it again.
> 
> Should we disable reinstallation in general or just for our Marketplace?

I'm not sure I understand what you mean, could you give some more detail? In my mind the act of uninstalling and installing again equals reinstalling.
(In reply to Maria Sandberg [:mushi] from comment #22)
> I'm not sure I understand what you mean, could you give some more detail? In
> my mind the act of uninstalling and installing again equals reinstalling.

Currently a user can reinstall an application without uninstalling it. Should we disallow this behaviour? If yes, only for our Marketplace or for everyone using the mozApps API?
(In reply to Marco Castelluccio from comment #23)
> Currently a user can reinstall an application without uninstalling it.
> Should we disallow this behaviour? If yes, only for our Marketplace or for
> everyone using the mozApps API?

From the point of view of the Marketplace there will be no path a user can go to reinstall a currently installed app. If an app is installed, a user can launch it from the Marketplace. If it's not installed, it can be installed. 

From a design perspective I don't have enough information about all the different use cases of someone using the mozApps API to decide if we should disallow it everywhere or not.
(Assignee)

Comment 25

6 years ago
So to conclude: Per bug 747144 comment 12, we say "Open" to launch the app. Yes, Maria?

Updated

6 years ago
Duplicate of this bug: 770923
(In reply to Maria Sandberg [:mushi] from comment #22)
> (In reply to Marco Castelluccio from comment #21)
> > (In reply to Maria Sandberg [:mushi] from comment #20)
> > > Awesome, thanks Myk. Since we have the capability to launch the app from the
> > > Marketplace, let's do that. If a user wants to reinstall an app, they have
> > > to uninstall it and install it again.
> > 
> > Should we disable reinstallation in general or just for our Marketplace?
> 
> I'm not sure I understand what you mean, could you give some more detail? In
> my mind the act of uninstalling and installing again equals reinstalling.

Right. I think the case for reinstalling is to cut down the actions in the case you've described from down from two to one (re-install instead of uninstall + install). I do agree though that the flow for a "re-install" though exists if you take those two steps, which users are accustomed to. 

Sounds like our reinstall bugs for webrt on desktop then should be deprioritized if marketplace goes this direction.

Updated

6 years ago
Depends on: 745924
(In reply to Chris Van Wiemeersch [:cvan] from comment #25)
> So to conclude: Per bug 747144 comment 12, we say "Open" to launch the app.
> Yes, Maria?

Yes :)
(In reply to Jason Smith [:jsmith] from comment #27)
> Right. I think the case for reinstalling is to cut down the actions in the
> case you've described from down from two to one (re-install instead of
> uninstall + install). I do agree though that the flow for a "re-install"
> though exists if you take those two steps, which users are accustomed to. 
> 
> Sounds like our reinstall bugs for webrt on desktop then should be
> deprioritized if marketplace goes this direction.

Okay, I see. Did this use case come from UX? My hunch is it will not be very common for users to reinstall an app (at all) but there could be research I'm unaware of. If it's a rare use case, let's not use space in the Marketplace for this functionality.
(In reply to Maria Sandberg [:mushi] from comment #29)
> (In reply to Jason Smith [:jsmith] from comment #27)
> > Right. I think the case for reinstalling is to cut down the actions in the
> > case you've described from down from two to one (re-install instead of
> > uninstall + install). I do agree though that the flow for a "re-install"
> > though exists if you take those two steps, which users are accustomed to. 
> > 
> > Sounds like our reinstall bugs for webrt on desktop then should be
> > deprioritized if marketplace goes this direction.
> 
> Okay, I see. Did this use case come from UX? My hunch is it will not be very
> common for users to reinstall an app (at all) but there could be research
> I'm unaware of. If it's a rare use case, let's not use space in the
> Marketplace for this functionality.

Makes sense. The use case didn't come from UX, it was just off hand of why I could see someone using a reinstall of a web app. I'll go mark associated reinstall bugs for webrt for re-triage, since the priority is likely to drop.
(Assignee)

Updated

6 years ago
Target Milestone: 2012-07-05 → 2012-07-12
(Assignee)

Updated

6 years ago
Target Milestone: 2012-07-12 → 2012-07-19

Updated

6 years ago
Depends on: 772600
FYI - Desktop pieces have landed. Haven't verified yet (it's on my list of things to do though).
Target Milestone: 2012-07-19 → 2012-07-26
I'm inclined to mark this blocking-basecamp- because installing an app that is already installed doesn't hurt anyone.  However, I expect this will be fixed shortly now that the blocker, bug 772600, is closed.  Additionally, this section of code will be changing with packaged apps - there is a new InstallPackage() (or something similar) function which we'll have to integrate.  For now, marking not a blocker.
blocking-basecamp: ? → -
(Assignee)

Comment 33

6 years ago
https://github.com/mozilla/zamboni/commit/70884ab

1) visit page of free app: http://cl.ly/image/082N0r3j3o3O
2) install app: http://cl.ly/image/0C282M3i0k1d
3) return to page later: http://cl.ly/image/1T1R3h080j2A

The launch instructions are likely redundant since there is a "Launch" button and - if you have Growl installed - a notification. Will users know that the app is natively installed on his/her machine (and accessible from not just the Marketplace app/site) if we omit those details? That's an open question. (And a rhetorical one! This is the 33rd comment to this bug, so if you have requests, please file a new bug. Thank you!)
Status: REOPENED → RESOLVED
Last Resolved: 6 years ago6 years ago
Keywords: uiwanted
Resolution: --- → FIXED

Comment 34

6 years ago
We now say "launch" after an app is installed.
Status: RESOLVED → VERIFIED
(Assignee)

Updated

6 years ago
Depends on: 777971
(Assignee)

Comment 35

6 years ago
Reverted due to platform bug, bug 777971:

a5f2302
994f964
7172cd2
535fdc3
70884ab
Status: VERIFIED → REOPENED
Resolution: FIXED → ---
Target Milestone: 2012-07-26 → ---
What is the action in this bug?
(Assignee)

Updated

6 years ago
Target Milestone: --- → 2012-09-27
(Assignee)

Comment 37

6 years ago
https://github.com/mozilla/zamboni/commit/56b98cc
Status: REOPENED → RESOLVED
Last Resolved: 6 years ago6 years ago
Resolution: --- → FIXED
(Assignee)

Updated

6 years ago
Target Milestone: 2012-09-27 → 2012-10-04
You need to log in before you can comment on or make changes to this bug.