Deploy Chromium-Edge PWAs as Start menu tiles

2 minute read

Intro

Yesterday colleague of mine sent me interesting video - How to open “multiple instances” of Microsoft Teams. Which got me thinking, is there a way to customize those apps and attach them for employees to have quick access links on their workstations?? Drum roll…🥁

Deploy new Edge

This whole solution is based on the newest Chromium-Edge so first thing you should do is to migrate your users to it. With the help of Intune it’s a piece of cake 😊. Go to apps and click Add, select Microsoft Edge and proceed with configuration.

Apps

Edge

EdgeSum

Now that it is being deployed we can prepare our Start menu Tiles.

Start menu Tiles

Basically what installing a site as an app in Edge is creation of simple shortcut with some AppID:

“C:\Program Files (x86)\Microsoft\Edge\Application\msedge_proxy.exe” –profile-directory=”Default” –app-id=idedlkepfahmdemmnladahgfmcaapdjg

But what you can do is modify this like that:

“C:\Program Files (x86)\Microsoft\Edge Dev\Application\msedge_proxy.exe” –profile-directory=”Default” –app=https://universecitiz3n.tech/

And you get link to my blog!😆

Blog

That’s one app but how about creating multiple apps using Powershell! For this project I’ve created input data file with:

  • App Name
  • Site link
  • App icon
[
  {
    "Application": "Blog",
    "Link": "https://universecitiz3n.tech/",
    "Icon": "universe-icon.ico"
  },
  {
    "Application": "Fun",
    "Link": "https://9gag.com/",
    "Icon": "9gag-icon.ico"
  },
  {
    "Application": "Teams",
    "Link": "https://teams.microsoft.com/",
    "Icon": "teams-icon.ico"
  },
]

This input then goes to this script

$Config = Get-Content .\ConfigJSON.json | ConvertFrom-Json
foreach ($item in $Config) {
    $SourceFileLocation = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge_proxy.exe"
    $Arguments = "--profile-directory=Default --app=$($item.Link)"
    #This is a location of global start menu on workstation
    $ShortcutLocation = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\$($item.Application).lnk"
    $WScriptShell = New-Object -ComObject WScript.Shell
    $Shortcut = $WScriptShell.CreateShortcut($ShortcutLocation)
    $Shortcut.TargetPath = $SourceFileLocation
    #Location of icons on workstation
    $Shortcut.IconLocation = (Get-item ".\icons\$($item.icon)").FullName
    $Shortcut.Arguments = $Arguments
    $Shortcut.Save()
    Write-Output "Adding $($item.Application) to start menu"
}

And that is how we created Start menu items which work as Edge PWAs!

Start layout deployment

Again thanks to Intune this task couldn’t be easier!!
Firstly drag and drop all apps to some group and place group in destined location

Tiles

Secondly export created layout to xml with Powershell

Export-StartLayout -Path c:\temp\layout.xml

Resulting XML will contain all tiles so you will need to modify it just to leave our configuration

<LayoutModificationTemplate xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
  <LayoutOptions StartTileGroupCellWidth="6" />
  <DefaultLayoutOverride LayoutCustomizationRestrictionType="OnlySpecifiedGroups">
    <StartLayoutCollection>
      <defaultlayout:StartLayout GroupCellWidth="6">
        <start:Group Name="Important">
          <start:DesktopApplicationTile Size="2x2" Column="4" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Maciej Horbacz.lnk" />
          <start:DesktopApplicationTile Size="2x2" Column="0" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Fun.lnk" />
          <start:DesktopApplicationTile Size="2x2" Column="2" Row="0" DesktopApplicationLinkPath="%APPDATA%\Microsoft\Windows\Start Menu\Programs\Teams.lnk" />
        </start:Group>
      </defaultlayout:StartLayout>
    </StartLayoutCollection>
  </DefaultLayoutOverride>
</LayoutModificationTemplate>

And to block newly created tiles from editing by user you must specify parameter at line:

<DefaultLayoutOverride LayoutCustomizationRestrictionType="OnlySpecifiedGroups">

But the rest of the tiles will not be changed.

Such prepared xml can be deployed using Intune. Go to Configuration profiles, create Device restrictions profile, upload xml

profile

profile2

profile3

And no other settings are required!

Summary

Chromium-Edge PWAs is such great feature! And taking advantage of it is simple a thing!
One last thing… make sure that the icons are somewhere to found the workstation

See you in next! 😉 🧠