0
Fork 0
mirror of https://codeberg.org/librewolf/source.git synced 2024-12-22 13:43:04 -05:00
LibreWolf/patches/msix.patch
2023-04-11 20:33:05 +02:00

204 lines
8.3 KiB
Diff

# LibreWolf msix.patch
#
# Author: Malte Jürgens <maltejur@dismail.de>
# Description: Allows us to build a msix for the Microsoft Store
# Last Updated: 2023-03-11
# License: MPL 2.0
--- a/browser/installer/windows/msix/AppxManifest.xml.in
+++ b/browser/installer/windows/msix/AppxManifest.xml.in
@@ -29,13 +29,14 @@
</Resources>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.1" />
+ <PackageDependency Name="Microsoft.VCLibs.140.00.UWPDesktop" MinVersion="14.0.0.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
</Dependencies>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
<Applications>
<Application Id="App" Executable="VFS\ProgramFiles\@APPX_INSTDIR@\@MOZ_APP_NAME@.exe" EntryPoint="Windows.FullTrustApplication">
- <uap:VisualElements BackgroundColor="#20123A" DisplayName="@MOZ_APP_DISPLAYNAME@" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="@MOZ_APP_DISPLAYNAME@">
+ <uap:VisualElements BackgroundColor="#FFFFFF" DisplayName="@MOZ_APP_DISPLAYNAME@" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="@MOZ_APP_DISPLAYNAME@">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" Square310x310Logo="Assets\LargeTile.png" Square71x71Logo="Assets\SmallTile.png">
<uap:ShowNameOnTiles>
<uap:ShowOn Tile="square150x150Logo"/>
@@ -108,31 +109,4 @@
</Extensions>
</Application>
</Applications>
- <Extensions>
- <!-- These COM registrations allow Windows/MSAA to access Firefox accessibility features. -->
- <com:Extension Category="windows.comInterface">
- <com:ComInterface>
- <com:ProxyStub DisplayName="AccessibleHandler"
- Id="@MOZ_IGECKOBACKCHANNEL_IID@"
- Path="VFS\ProgramFiles\@APPX_INSTDIR@\AccessibleHandler.dll" />
- <com:ProxyStub DisplayName="AccessibleMarshal"
- Id="1814ceeb-49e2-407f-af99-fa755a7d2607"
- Path="VFS\ProgramFiles\@APPX_INSTDIR@\AccessibleMarshal.dll" />
- <com:Interface Id="@MOZ_IGECKOBACKCHANNEL_IID@"
- ProxyStubClsid="@MOZ_IGECKOBACKCHANNEL_IID@" />
- <com:Interface Id="@MOZ_IHANDLERCONTROL_IID@"
- ProxyStubClsid="@MOZ_IGECKOBACKCHANNEL_IID@"
- AsynchronousInterface="@MOZ_ASYNCIHANDLERCONTROL_IID@" />
- <com:Interface Id="@MOZ_ASYNCIHANDLERCONTROL_IID@"
- ProxyStubClsid="@MOZ_IGECKOBACKCHANNEL_IID@"
- SynchronousInterface="@MOZ_IHANDLERCONTROL_IID@" />
- <com:Interface Id="4e747be5-2052-4265-8af0-8ecad7aad1c0"
- ProxyStubClsid="1814ceeb-49e2-407f-af99-fa755a7d2607" />
- <com:Interface Id="1814ceeb-49e2-407f-af99-fa755a7d2607"
- ProxyStubClsid="1814ceeb-49e2-407f-af99-fa755a7d2607" />
- <com:Interface Id="0d68d6d0-d93d-4d08-a30d-f00dd1f45b24"
- ProxyStubClsid="1814ceeb-49e2-407f-af99-fa755a7d2607" />
- </com:ComInterface>
- </com:Extension>
- </Extensions>
</Package>
--- a/python/mozbuild/mozbuild/mach_commands.py
+++ b/python/mozbuild/mozbuild/mach_commands.py
@@ -2493,7 +2493,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'.",
@@ -2630,7 +2630,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
@@ -105,68 +105,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):
@@ -193,9 +144,9 @@ def get_appconstants_sys_mjs_values(finder, *args):
yield value
-def get_branding(use_official, build_app, finder, log=None):
+def get_branding(use_official, topsrcdir, build_app, finder, log=None):
"""Figure out which branding directory to use."""
- conf_vars = mozpath.join(build_app, "confvars.sh")
+ conf_vars = mozpath.join(topsrcdir, build_app, "confvars.sh")
def conf_vars_value(key):
lines = open(conf_vars).readlines()
@@ -254,7 +205,7 @@ def get_branding(use_official, build_app, finder, log=None):
},
"{branding_reason}; Using branding from '{branding}'.",
)
- return branding
+ return mozpath.join(topsrcdir, branding)
def unpack_msix(input_msix, output, log=None, verbose=False):
@@ -404,12 +355,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
@@ -471,8 +417,8 @@ def repackage_msix(
# Release (official) and Beta share branding. Differentiate Beta a little bit.
brandFullName += " Beta"
- branding = os.path.join(
- topsrcdir, get_branding(use_official_branding, build_app, unpack_finder, log)
+ branding = get_branding(
+ use_official_branding, topsrcdir, build_app, unpack_finder, log
)
if not os.path.isdir(branding):
raise Exception("branding dir {} does not exist".format(branding))