Is it valid to distribute multiple versions of an app within a single Windows Store app?


  • I posted this question on the Windows 8.1 Application Compatibility TechNet forums here, but the only response I received said that it wasn't the appropriate forum for it, so I am reposting it here in hopes of getting more responses.


    The company I work for creates Point Of Sale (POS) software using Software As A Service (SAAS), so we host our clients' databases.  We do not force all of our clients to all be on the same version of our software; i.e. some clients are on version 3, others v4, others v5, etc.  As you would expect, the database schema for each of these versions is different, so each of these clients also use a different version of our client-side app.

    We are looking at making a Windows Store app that acts as a light-weight POS app that clients can use to sell their products.  The problem is, we will require having multiple versions of our Windows Store app in production; the version of the app that the client uses must correspond to their database version.  We were initially hoping to have our Windows Store app detect which version of the app the client should be using, and then automatically update itself to the correct version, but were told on this post that it violates the Windows Store certification criteria, so that's not an option.

    It has been suggested that we put multiple apps into the Store; one for each version of our software. We really don't want to do this though, as when we upgrade a client's database from one version to the next it would require that they uninstall their current app and install the newer versions app, causing them to lose all of their custom settings. We would like the updates to remain as transparent to the end users as possible; the store clerk shouldn't need to worry about which version their database is on so they know which app to download from the Store.

    As a possible workaround, is it ok for us to package all 3 versions of our app into a single Windows Store app, and then just have the app check at runtime which version it should run?  I assume that this is alright, since we will not be downloading any other code or installing any software/apps, as was the case with our original solution that violates the certification criteria.  Essentially we would just have 3 different classes and determine at run-time which classes code we should run.  I know that this solution isn't ideal, as it means our app will be 3 times larger than it needs to be, and that an update to any one of the 3 versions of our software will require an update to the Store app (so potentially users may download a new version of the Store app, even though it doesn't have any changes for the particular code version (i.e. class) that they will use), but it's one of the best alternatives we have come up with.  I just want to check that this solution doesn't also violate any certification criteria before we go down this road.

    Any insights or suggestions that you can give are appreciated. Thanks!

    - Dan - "Can't never could do anything"

    Tuesday, April 1, 2014 4:35 PM

All replies

  • I'm just curious how would the app 'detect' which version of the app to run - keep in mind that from my experience writing a windows store app you have access to NO information on the hard disk (as a small example) unless you either created it in the app yourself or have the user browse with a file-picker each time you want it.  Also, would the person testing the app be able to test ALL VERSIONS of the app (they actually have people spend a half hour or so testing each app when you submit them).  Finally, if your 'clients' are not joe user shopping in the Windows Store, I personally don't think your app should be in the store. 

    I cannot "answer" your question, but above are the thoughts I had.


    Tuesday, April 1, 2014 7:55 PM
  • Hi Rob, thanks for the reply! To answer your questions:

    1 - For determining which version of the app to run, we provide our clients with an ID for each of their workstations, so the first time they run the app we would prompt them to enter the tablet's workstation ID. From there we would query our services to determine which company the workstation ID belongs to, and which database version they are on, and then would return the "app version" that should be used.

    2 - I hadn't thought of this, but the MS person testing our app likely won't be able to get past the login screen, as they would not have a workstation ID, or username and password to login with.  I'm not sure if this will be a problem or not?  If necessary we can likely just provide them with credentials to one of our internal test databases, or I guess, credentials for a database on each version so they can test each "version" of our app.

    3 - While the only people who will be able to actually use our app are our customers, I have seen it documented in several places that these apps can still be distributed via the Windows Store; the app should just be placed in the proper category (i.e. Line of business apps).  They even give examples of apps that would fall into this category, including "cloud backed CRM software, hosted inventory software or sales reporting and monitoring software", which is a close fit to our app.

    Thanks for the thoughts Rob! :)

    - Dan - "Can't never could do anything"

    • Edited by deadlydog Tuesday, April 1, 2014 8:23 PM
    Tuesday, April 1, 2014 8:17 PM