Investigate converting Firefox to a Universal (UWP) application
Categories
(Core :: Widget: Win32, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox40 | --- | affected |
People
(Reporter: jimm, Unassigned)
References
(Blocks 2 open bugs, )
Details
(Whiteboard: tpi:+)
Attachments
(1 file)
Reporter | ||
Comment 1•10 years ago
|
||
Reporter | ||
Updated•10 years ago
|
Reporter | ||
Updated•10 years ago
|
Comment 3•10 years ago
|
||
Comment 5•9 years ago
|
||
Reporter | ||
Comment 6•9 years ago
|
||
Comment 7•9 years ago
|
||
Reporter | ||
Comment 8•8 years ago
|
||
Reporter | ||
Comment 9•8 years ago
|
||
Reporter | ||
Updated•8 years ago
|
Reporter | ||
Updated•8 years ago
|
Reporter | ||
Updated•8 years ago
|
Comment 10•8 years ago
|
||
Comment 11•8 years ago
|
||
Comment 13•6 years ago
|
||
FWIW, this would be particularly useful to allow access to the Windows.Holographic API's which are not marked DualApiPartitionAttribute. Windows MR headset users currently have to work around this limitation by installing the separate "Windows Mixed Reality for Steam VR" application and have Steam running. If we were to use Windows.Holographic directly, no additional software would be required beyond Windows, Firefox, and the hardware drivers.
Comment 14•6 years ago
|
||
This would also allow for Fluent Design APIs to be implemented, like Acrylic for the background color (which, in my opinion, is the biggest reason to use Edge over Firefox).
But, as much as I want acrylic, is this actually possible?
Comment 15•6 years ago
|
||
I did a bit of investigation into this over Christmas.
In the current Windows SDK, there is a preview release of a new API that allows Win32 applications to host UWP UI. I was successfully able to create a window with an Acrylic background that follows the OS theme.
However:
This API has one significant limitation that makes us using the new API non-trivial: Each top-level window must run on its own distinct thread. This is different from our current model, where the Win32 UI thread and the Gecko main thread are one and the same, regardless of the number of top-level windows.
As it stands, we cannot use the UWP XAML Island API without separating the Gecko main thread from our UI threads, and without supporting separate UI threads per top-level window.
(Of course, I'm sure that some of these problems were already solved back in the Metro Firefox days, but the bottom line is that this would be hard to do incrementally.)
Updated•6 years ago
|
Comment 16•6 years ago
|
||
I successfully converted the most recent Firefox Stable build into a working AppX using the Desktop App Converter and dependencies. I've outlined a relatively easy method to conversion below, step-by-step, and will be attaching this as well as a .txt with .zip archive of the output packaged program.
Converting Firefox MSI Installer to Packaged Microsoft Store App for Windows 10 - Difficulty: Moderate to Easy.
Steps:
1. Create and label the following folders on C:\, including subfolders:
a. C:\Input
b. C:\Output
c. C:\Output\Firefox
2. Download and install Desktop App Converter from the Microsoft Store
3. Download the latest Firefox MSI installer at https://support.mozilla.org/en-US/kb/deploy-firefox-msi-installers
4. Rename the downloaded MSI file to a simple "Firefox.msi" and move to C:\Input
5. Open Desktop App Converter guide at https://aka.ms/converterdocs to review as we continue...
6. Follow the on-screen instructions until you get to "Package an app" (https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-run-desktop-app-converter#installer-conversion)
7. Now, enter the following into the Desktop App Converter, as Administrator:
a. " DesktopAppConverter.exe -Installer C:\Input\Firefox.msi -Destination C:\Output\Firefox -PackageName "Firefox" -Publisher "CN=MyPublisher" -Version 0.0.0.1"
i. You can play with this and change the Publisher name and Version # if you'd like, but for simplicity-sake, I'm leaving it as-is.
8. Enable Sideloading of Unsigned AppX packages:
a. Open "Settings" and navigate to 'Update & Security < For Developers < Developer Mode'
b. Ensure "Developer Mode" is checked
c. This could take a few minutes
9. Reboot your system if you haven't already
10. Install the new unsigned converted app by registering the "Appxmanifest" file generated by the conversion process
a. Open Powershell as Administrator
b. Type "cd C:\output\Firefox\Firefox\PackageFiles" followed by 'enter'
c. Type "Add-AppxPackage –Register AppxManifest.xml" followed by 'enter' again
11. Attempt to run and open Firefox from the Start panel.
12. Congrats! Firefox should be successfully built for the Microsoft Store.
Comment 17•6 years ago
|
||
Please review.
Comment 18•6 years ago
|
||
I couldn't attach a .ZIP archive copy of the Desktop App Converter output containing a packaged AppX, so I've uploaded it to OneDrive. File can be viewed and downloaded here: https://1drv.ms/f/s!Atsjh-pCpQhZjst2dEIzdFPOoGNaKA
Comment 19•6 years ago
|
||
(In reply to jebeld17 from comment #18)
I couldn't attach a .ZIP archive copy of the Desktop App Converter output containing a packaged AppX, so I've uploaded it to OneDrive. File can be viewed and downloaded here: https://1drv.ms/f/s!Atsjh-pCpQhZjst2dEIzdFPOoGNaKA
In the Microsoft Store, applications that use other HTML and JavaScript engines cannot be published.
"Products that browse the web must use the appropriate HTML and JavaScript engines provided by the Windows Platform."
applications that use other HTML and JavaScript engines cannot be published.
Facebook for Windows has been using WebKit for web browsing feature for years, so that's not strictly true.
Comment 21•6 years ago
|
||
(In reply to saschanaz from comment #20)
applications that use other HTML and JavaScript engines cannot be published.
Facebook for Windows has been using WebKit for web browsing feature for years, so that's not strictly true.
👍
Updated•6 years ago
|
Updated•4 years ago
|
Comment 22•3 years ago
|
||
With recent changes to the Microsoft Store policies, does this mean that a UWP version of Mozilla Firefox is now possible?
Actually, scratch that. UWP is being phased out in favor of the "Windows App SDK" according to Windows Central, so maybe we should focus on converting Mozilla Firefox to that instead: https://www.windowscentral.com/microsoft-publishes-uwp-win32-migration-details
Comment 23•2 years ago
|
||
We've been shipping in the Microsoft Store for almost a year now, so this is sortof done, I think? We still can't use certain APIs with the non-Store Firefox, which we have no plans of dropping anytime soon, so maybe we want to keep this open for that reason? (We could get access to those APIs if we added support for sparse packaging to it.)
Do we have a list of such APIs that we are already using?
Comment 25•2 years ago
|
||
(In reply to Kagami :saschanaz from comment #24)
Do we have a list of such APIs that we are already using?
I'm not aware of a list, but searching for RuntimeClass on SearchFox is a decent-ish proxy, I think? I wouldn't rely on this as a complete list, but it certainly shows some (eg: SystemMediaTransportControls, ApplicationModel, WindowsIntegrityPolicy).
Updated•2 years ago
|
Description
•