目录

MōBrowser 2.20.0

In this update, you can publish MōBrowser applications to the Microsoft Store. We also fixed Windows applications signed in CI not starting and several other issues.

What’s new 

Publishing to the Microsoft Store 

MōBrowser applications can now be distributed through the Microsoft Store. The new --msix option of pack turns the output of npm run build into an .msix package that you upload to Partner Center as is. The Store signs the package itself, so you don’t need a code signing certificate.

Reserve the application name in Partner Center and copy its identity from Product management → Product identity to mobrowser.conf.json:

{
  "app": {
    "bundle": {
      "Windows": {
        "installer": {
          "msix": {
            "identityName": "PublisherName.AppName",
            "publisher": "CN=00000000-0000-0000-0000-000000000000",
            "publisherDisplayName": "Publisher Name"
          }
        }
      }
    }
  }
}

Then build the application and pack it:

npm run build
npm run pack -- --msix

The package is written to build/dist/win-x64/msix/. It describes a full-trust desktop application and includes the tile and logo images in every size and scale the Store requires. pack --msix generates the images from the Windows icon of the application. To use a different image, or to review the images before packing, generate them into assets/msix:

npm run mobrowser -- icon --msix --source branding/logo-1024.png

The application runs from the package without any changes to its code. Files that it writes next to its executable go to a per-user location, because the installation directory of an MSIX package is read-only. Packages require Windows 10 version 2004 or later.

The Store delivers updates itself and doesn’t allow applications that update themselves, so app.updateServerUrl must be empty. pack --msix runs instead of the regular packing and doesn’t touch the Velopack releases or Setup.exe, so you can keep distributing the same application from your own website.

You need the Windows SDK to build the package. To install the package locally before submitting it, sign it with your signCommand using npm run pack -- --msix --sign, or register the unpacked package in Developer Mode.

Note: File associations and custom URL schemes aren’t declared in the package yet, and pack --msix warns when they are configured. Only x64 packages are produced.

Fixes and improvements 

  • Fixed Windows applications built and signed by the generated GitHub Actions release workflow not starting. The installed application exited with code -36863 and showed no window, because the signed executable had no signed app.bin.cat. The workflow now signs the catalog together with the executable and DLLs. In projects generated before 2.20.0, add cat to files-folder-filter of the signing step in .github/workflows/release.yml.
  • mobrowser pack on Windows now fails when the application would not start because of how it is signed: when the executable or app.bin.cat isn’t validly signed, when they are signed with different certificates, or when the executable is signed and there is no catalog. A misconfigured CI pipeline now fails instead of shipping an application that doesn’t start.
  • The Linux archive created by the generated GitHub Actions release workflow is now named like the other installers, for example MyApp-1.0.0-linux-x64.tar.gz instead of linux-x64-bin.tar.gz.
  • Fixed the application freezing on Windows when win.hide() was called from a blurred listener and focus moved to another application. The tray icon and global shortcuts stopped responding, and the application had to be killed. Event listeners can now change the state of the window that emitted the event, which is a common pattern for tray popups and launchers.
  • Fixed macOS applications launched directly from their mounted DMG showing Chromium’s “Install Chromium” dialog. The application now starts like any other application opened from a disk image.
  • mobrowser signcert without --gh or --out now exports the macOS signing certificate and prints the signing secrets, so you can add them by hand in Settings → Secrets and variables → Actions of the repository. Previously, it showed the certificate and stopped. --apple-id and --apple-password-stdin now work without --gh or --out, and --out writes only secrets.env, because MAC_CERTIFICATE already contains the certificate.