This is working well for installs done when signed into the Microsoft Store (as long as the signed in account has never installed Firefox before). The other path -- which is supposed to handle cases where the user is not signed in, does not appear to work, nor does Microsoft's sample code that this is modeled after. It's possible that I'm somehow testing in an invalid way, but it's hard to be certain. At this point I think the best path forward is to go with the code that is _supposed_ to work, and make sure we can distinguish between attributions from a signed in user and a not signed in user - and see if it ends up working in the wild. Differential Revision: https://phabricator.services.mozilla.com/D141987
42 lines
1.9 KiB
Plaintext
42 lines
1.9 KiB
Plaintext
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
[scriptable, uuid(ad57ac40-52f0-11ec-ada8-4f671255c4aa)]
|
|
interface nsIWindowsPackageManager : nsISupports
|
|
{
|
|
/* Searches for any user installed MSIX packages whose
|
|
* packageFamilyName matches any of the provided `aNamePrefixes`
|
|
* and returns them. The Windows APIs only allow querying user
|
|
* installed packages without elevation, so this will not see any
|
|
* packages installed by another user.
|
|
*/
|
|
Array<AString> findUserInstalledPackages(in Array<AString> prefix);
|
|
|
|
/* When running within a Packaged App environment, returns the
|
|
* InstalledDate of the Package. If called when not running within
|
|
* a Packaged App environment, throws NS_ERROR_NOT_IMPLEMENTED.
|
|
* Any other others will cause NS_ERROR_FAILURE to be thrown.
|
|
*/
|
|
unsigned long long getInstalledDate();
|
|
|
|
/* Retrieves the campaignId, if any, a user's Microsoft Store install is
|
|
* associated with. These are present if the user clicked a "ms-window-store://"
|
|
* or "https://" link that included a "cid" query argument the very first time
|
|
* they installed the app. (This value appears to be cached forever, so
|
|
* subsequent installs will not refresh it.) If a non-empty campaign ID is
|
|
* found it will be assumed to be a properly formatted attribution code and
|
|
* have an additional "msstoresignedin" key appended to it indicate whether or
|
|
* not the user was signed in when they installed the application. This key
|
|
* will either be set to "true" or "false".
|
|
*
|
|
* @throw NS_ERROR_NOT_IMPLEMENTED if called on Windows 8 or earlier, or from
|
|
* a non-packaged build.
|
|
* @throw NS_ERROR_FAILURE for any other errors
|
|
*/
|
|
AString getCampaignId();
|
|
};
|