I used Shell Launcher V2 to set up a custom app (win32, not UWP) to run as shell on a machine running Windows 11 Enterprise. This works fine but I need to launch other apps from my shell app, regular win32 and UWP apps. Normally, I use the shell:AppsFolder to get the AUMID of the other apps and launch them.
The problem is that shell:AppsFolder only shows the apps at the time the custom shell was set up and doesn't get updated with apps installed or removed after. When running normally (i.e. with normal explorer shell), I get all installed programs (UWP or otherwise) in the shell:AppsFolder which gets refreshed every time an app is added or removed.
After playing around with the shell some more, I got it to a point where it updated. Among the things I tried was running the windows update troubleshooter, the windows store troubleshooter, I repaired and reset the store app and added a Microsoft account, running an sfc scan and I probably fooled around some more so I'm not sure which of these actions caused it but now shell:AppsFolder shows all apps. However, installing an app or removing an app, be it a UWP app or win32 app, shell:AppsFolder still doesn't react.
Sometimes, it does work for some UWP apps when installing / removing them from the store but not all and not always.
I also tried other things to see if I can get the AUMID some other ways and what I discovered was that running Get-StartApps
or Get-AppxPackage
in Powershell also doesn't list newly installed apps, UWP or otherwise, whereas when running with explorer as shell, they do.
It's as if Windows isn't aware of app installations/removal at all when using a custom shell. Is there a service or something that isn't running which tells windows when apps get installed/removed?
I don't believe this is a limitation of running a custom shell. After all, as I mentioned above, sometimes the folder does get updated. How can I trigger it?
How can I configure Shell Launcher V2 so that shell:AppsFolder gets updated like it does when running with explorer as shell? Alternatively, what other good way do I have to retrieve the AUMID of all installed apps as I do by enumerating the shell:AppsFolder? Windows doesn't seem interested to provide an API for this as far as I can tell.
Steps to reproduce:
- Install a fresh, clean copy of Windows 11 Enterprise.
- Create an initial administrator account. I've named mine "Admin".
- Log into the "Admin" account.
- Set up a second account. I've named this account "Test".
- Sign out of "Admin" account and log into "Test" account to make sure the user account is initialized properly.
- Sign out of "Test" account, sign back into "Admin" account.
- Follow the instructions on the following link to set up shell launcher v2
https://github.com/Microsoft/Windows-iotcore-samples/blob/develop/Samples/ShellLauncherV2/SampleBridgeWmiScripts/README.md
- By now, you should have a custom shell app set up for your second account. Sign out of the "Admin" account and sign into the "Test" account and you should see explorer is gone and your custom shell app is running in its stead. For testing, you can use notepad or edge or something.
- Open shell:AppsFolder. You should see all apps that you currently have installed.
- Install some program from the internet. I tried Firefox, Notepad++ and VLC.
- After installing said program, open shell:AppsFolder. Normally, you should see shortcuts for your newly installed apps but these shortcuts are not added.
- Uninstall a program that already shows up in shell:AppsFolder. I chose to remove OneDrive.
- After uninstalling OneDrive, you would expect the OneDrive shortcut to be removed from shell:AppsFolder yet it isn't.
This is the content of my "ShellLauncher.xml" file:
<?xml version="1.0" encoding="utf-8"?>
<ShellLauncherConfiguration xmlns="http://schemas.microsoft.com/ShellLauncher/2018/Configuration"
xmlns:v2="http://schemas.microsoft.com/ShellLauncher/2019/Configuration">
<Profiles>
<DefaultProfile>
<Shell Shell="%systemroot%\explorer.exe">
<DefaultAction Action="RestartShell"/>
</Shell>
</DefaultProfile>
<Profile Id="{814B6409-8C51-4EE2-95F8-DB39B70F5F68}">
<Shell Shell="C:\Path\To\My\Awesome\Custom\Shell\App.exe" v2:AllAppsFullScreen="false">
<DefaultAction Action="RestartShell"/>
</Shell>
</Profile>
</Profiles>
<Configs>
<Config>
<Account Sid="{SID OF YOUR SECOND ACCOUNT GOES HERE}"/>
<Profile Id="{814B6409-8C51-4EE2-95F8-DB39B70F5F68}"/>
</Config>
</Configs>
</ShellLauncherConfiguration>```