# LibreWolf msix.patch # # Author: Malte Jürgens # Description: Allows us to build a msix for the Microsoft Store # Last Updated: 2023-01-26 # License: MPL 2.0 --- a/browser/installer/windows/msix/AppxManifest.xml.in +++ b/browser/installer/windows/msix/AppxManifest.xml.in @@ -1,7 +1,6 @@ - + - + @APPX_DISPLAYNAME@ @APPX_PUBLISHER_DISPLAY_NAME@ @@ -25,27 +25,34 @@ -@APPX_RESOURCE_LANGUAGE_LIST@ + @APPX_RESOURCE_LANGUAGE_LIST@ - + - - - + + + - - - + + + - + @@ -54,9 +61,10 @@ + https://searchfox.org/mozilla-central/source/browser/installer/windows/nsis/shared.nsh + and `os.environment.launched_to_handle` and `os.environment.invoked_to_handle` + telemetry in + https://searchfox.org/mozilla-central/source/browser/components/BrowserContentHandler.jsm. --> .avif .htm .html @@ -95,44 +103,18 @@ + AppId="@MOZ_INOTIFICATIONACTIVATION_CLSID@"> + Path="VFS\ProgramFiles\@APPX_INSTDIR@\notificationserver.dll" + ThreadingModel="Both" /> - + - - - - - - - - - - - - - - - - + \ No newline at end of file --- a/python/mozbuild/mozbuild/mach_commands.py +++ b/python/mozbuild/mozbuild/mach_commands.py @@ -2325,7 +2325,7 @@ def repackage_msi( @CommandArgument( "--vendor", type=str, - default="Mozilla", + default=None, required=False, help="The vendor to use in the Package/Identity/Name string to use in the App Manifest." + " Defaults to 'Mozilla'.", @@ -2462,7 +2462,7 @@ def repackage_msix( command_context.topsrcdir, channel=channel, arch=arch, - displayname=identity_name, + identity=identity_name, vendor=vendor, publisher=publisher, publisher_display_name=publisher_display_name, --- a/python/mozbuild/mozbuild/repackaging/msix.py +++ b/python/mozbuild/mozbuild/repackaging/msix.py @@ -97,7 +97,7 @@ def find_sdk_tool(binary, log=None): finder = FileFinder(sdk) # TODO: handle running on ARM. - is_64bits = sys.maxsize > 2 ** 32 + is_64bits = sys.maxsize > 2**32 arch = "x64" if is_64bits else "x86" for p, f in finder.find( @@ -122,68 +122,19 @@ def get_embedded_version(version, buildid): the dotted quad to be identically 0, so we enforce that here. """ - # It's irritating to roll our own version parsing, but the tree doesn't seem - # to contain exactly what we need at this time. - version = version.rsplit("esr", 1)[0] - alpha = "a" in version - - tail = None - if "a" in version: - head, tail = version.rsplit("a", 1) - if tail != "1": - # Disallow anything beyond `X.Ya1`. - raise ValueError( - f"Alpha version not of the form X.0a1 is not supported: {version}" - ) - tail = buildid - elif "b" in version: - head, tail = version.rsplit("b", 1) - if len(head.split(".")) > 2: - raise ValueError( - f"Beta version not of the form X.YbZ is not supported: {version}" - ) - elif "rc" in version: - head, tail = version.rsplit("rc", 1) - if len(head.split(".")) > 2: - raise ValueError( - f"Release candidate version not of the form X.YrcZ is not supported: {version}" - ) - else: - head = version - - components = (head.split(".") + ["0", "0", "0"])[:3] - if tail: - components[2] = tail - - if alpha: - # Nightly builds are all `X.0a1`, which isn't helpful. Include build ID - # to disambiguate. But each part of the dotted quad is 16 bits, so we - # have to squash. - if components[1] != "0": - # Disallow anything beyond `X.0a1`. - raise ValueError( - f"Alpha version not of the form X.0a1 is not supported: {version}" - ) + [ver, rel] = version.split("-") - # Last two digits only to save space. Nightly builds in 2066 and 2099 - # will be impacted, but future us can deal with that. - year = buildid[2:4] - if year[0] == "0": - # Avoid leading zero, like `.0YMm`. - year = year[1:] - month = buildid[4:6] - day = buildid[6:8] - if day[0] == "0": - # Avoid leading zero, like `.0DHh`. - day = day[1:] - hour = buildid[8:10] + ver_parts = ver.split(".") + ver_parts += ["0"] * (3 - len(ver_parts)) - components[1] = "".join((year, month)) - components[2] = "".join((day, hour)) - - version = "{}.{}.{}.0".format(*components) - - return version + return ".".join( + [ + ver_parts[0], + str(100 * int(ver_parts[1]) + int(ver_parts[2])), + str(int(rel) * 100), + "0", + ] + ) def get_appconstants_sys_mjs_values(finder, *args): @@ -417,12 +368,7 @@ def repackage_msix( ) first = next(values) - if not displayname: - displayname = "Mozilla {}".format(first) - - if channel == "beta": - # Release (official) and Beta share branding. Differentiate Beta a little bit. - displayname += " Beta" + displayname = displayname or first second = next(values) vendor = vendor or second