<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Winget on Nicola Suter</title><link>https://nicolasuter.ch/tags/winget/</link><description>Recent content in Winget on Nicola Suter</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>© 2026 Nicola Suter</copyright><lastBuildDate>Mon, 30 Jan 2023 18:56:24 +0000</lastBuildDate><atom:link href="https://nicolasuter.ch/tags/winget/rss.xml" rel="self" type="application/rss+xml"/><item><title>Migrating to the new Windows Store experience</title><link>https://nicolasuter.ch/migrating-to-the-new-windows-store-experience/</link><pubDate>Mon, 30 Jan 2023 18:56:24 +0000</pubDate><guid>https://nicolasuter.ch/migrating-to-the-new-windows-store-experience/</guid><description>&lt;p&gt;The Microsoft Store for Business will be discontinued mid 2023 and Intune recently introduced the new Windows Store experience backed by winget to distribute apps to your Intune managed endpoints.&lt;/p&gt;
&lt;p&gt;To simplify the migration to the new Windows Store experience I created a PowerShell Script that migrates all currently assigned Windows Store for Business apps to the new Windows Store experience.&lt;/p&gt;
&lt;p&gt;Kudos to &lt;a href="https://www.rozemuller.com/add-microsoft-store-app-with-icon-into-intune-automated/" target="_blank" rel="noreferrer"&gt;Sander Rozemuller&lt;/a&gt; for providing detailed instructions about creating winget apps as PowerShell code samples.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Challenges
 &lt;div id="challenges" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#challenges" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;While scripting and extracting the existing Windows Store for Business (WSfB) apps I encountered the following issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Not all apps in WSfB have valid privacy and information URLs, therefore I added a check whether the URL starts with http(s).&lt;/li&gt;
&lt;li&gt;Some apps have characters present (äöüë….) that require UTF-8 encoding. So I explicitly set the HTTP &lt;em&gt;content-type&lt;/em&gt; header to UTF8.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Script prerequisites
 &lt;div id="script-prerequisites" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#script-prerequisites" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;To run the script you need to have the Microsoft Graph PowerShell SDK modules installed on your machine. You can install them with the following command:&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Install-Module&lt;/span&gt; &lt;span class="n"&gt;Microsoft&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Authentication&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Microsoft&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;Devices&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;CorporateManagement&lt;/span&gt; &lt;span class="n"&gt;-Scope&lt;/span&gt; &lt;span class="n"&gt;CurrentUser&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;From a permissions perspective you need an Azure AD Application Administrator for the initial OAuth permission consent and for regular execution the Intune Administrator role.&lt;/p&gt;</description></item><item><title>Inside Windows package manager (winget)</title><link>https://nicolasuter.ch/inside-windows-package-manager/</link><pubDate>Fri, 30 Dec 2022 23:11:03 +0000</pubDate><guid>https://nicolasuter.ch/inside-windows-package-manager/</guid><description>&lt;p&gt;Windows Package Manager (winget) provides exciting features to install and upgrade apps on Windows devices. But how does winget actually work and how are new packages integrated? Within this post I want to elaborate on some questions I had when having a closer look into winget.&lt;/p&gt;

&lt;h4 class="relative group"&gt;How does winget find sources?
 &lt;div id="how-does-winget-findsources" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#how-does-winget-findsources" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;p&gt;By default, winget has the following sources configured:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;msstore: Microsoft Store (public)&lt;/li&gt;
&lt;li&gt;winget: Winget Content Delivery Network (CDN)&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://cdn-images-1.medium.com/max/800/1*A7BC1sZg0P8h43LvLkvIpw.png"
 &gt;&lt;/figure&gt;
&lt;p&gt;When searching for a particular package, e.g: &lt;code&gt;winget search wireshark&lt;/code&gt; all configured sources are searched for a match.&lt;/p&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://cdn-images-1.medium.com/max/800/1*Kck4GHmNrkEWRLfkASY39g.png"
 &gt;&lt;/figure&gt;
&lt;p&gt;lesson learned: winget can install packages from the public Microsoft store and the winget CDN.&lt;/p&gt;

&lt;h4 class="relative group"&gt;How are winget CDN packages provided?
 &lt;div id="how-are-winget-cdn-packages-provided" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#how-are-winget-cdn-packages-provided" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;p&gt;Winget CDN packages reside within a public git repository hosted on &lt;a href="https://github.com/microsoft/winget-pkgs" target="_blank" rel="noreferrer"&gt;GitHub&lt;/a&gt;. The repository contains an alphabetic folder structure by vendor and product name holding manifests in YAML format that describe the app details.&lt;/p&gt;
&lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://cdn-images-1.medium.com/max/800/1*UY1wLURvUmrb-FKFa-Uapw.png"
 &gt;&lt;/figure&gt;
&lt;p&gt;The &lt;code&gt;manifests&lt;/code&gt; folder within the repo is grouped by the app vendor and app name and YAML contents of a manifest look like this:&lt;/p&gt;</description></item></channel></rss>