<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PacKit</title>
	<atom:link href="https://www.getpackit.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.getpackit.com</link>
	<description></description>
	<lastBuildDate>Wed, 04 Nov 2026 07:41:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://www.getpackit.com/wp-content/uploads/2024/09/cropped-packit-favicon-32x32.png</url>
	<title>PacKit</title>
	<link>https://www.getpackit.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Intune App Inventory Goes Fleet-Wide: A Packaging Cleanup Tool</title>
		<link>https://www.getpackit.com/blog/intune-app-inventory-goes-fleet-wide-a-packaging-cleanup-tool/</link>
		
		<dc:creator><![CDATA[Alex Marin]]></dc:creator>
		<pubDate>Wed, 04 Nov 2026 07:20:51 +0000</pubDate>
				<category><![CDATA[Intune]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=930605</guid>

					<description><![CDATA[Watching over a whole fleet of devices is not an easy task, and there are some scenarios where things get complicated.&#160; One of these scenarios is when you are trying to figure out whether or not an outdated application exists on the fleet and which devices have this vulnerability.&#160; Microsoft knows about this and is [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Watching over a whole fleet of devices is not an easy task, and there are some scenarios where things get complicated.&nbsp;</p>



<p class="wp-block-paragraph">One of these scenarios is when you are trying to figure out whether or not an outdated application exists on the fleet and which devices have this vulnerability.&nbsp;</p>



<p class="wp-block-paragraph">Microsoft knows about this and is about to make the job considerably less painful. So, it’s worth getting ahead of it before it lands in your tenant.</p>



<h2 class="wp-block-heading">What is changing?</h2>



<p class="wp-block-paragraph">According to the <a href="https://learn.microsoft.com/en-us/intune/whats-new/in-development" rel="nofollow noopener" target="_blank">Intune “In development”</a> page, <strong>Advanced Analytics</strong> is extending its multi-device query capabilities to include Windows app inventory data.&nbsp;</p>



<p class="wp-block-paragraph">Right now, you actually can do multi-device querying, but only for hardware inventory. This lets administrators run a single <strong>Kusto Query Language</strong> (KQL) query across multiple devices at once instead of pulling reports device by device.&nbsp;</p>



<p class="wp-block-paragraph">The upcoming change brings that same fleet-wide querying to installed applications on Windows.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="529" src="https://www.getpackit.com/wp-content/uploads/2026/11/endpoint-analytics-1024x529.png" alt="Endpoint analytics in Intune" class="wp-image-930608" srcset="https://www.getpackit.com/wp-content/uploads/2026/11/endpoint-analytics-1024x529.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/11/endpoint-analytics-300x155.png 300w, https://www.getpackit.com/wp-content/uploads/2026/11/endpoint-analytics-768x397.png 768w, https://www.getpackit.com/wp-content/uploads/2026/11/endpoint-analytics.png 1377w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">In practice, this means you will be able to write one KQL query and get back installed app versions, counts, and locations across your entire Windows estate in a single pass.&nbsp;</p>



<p class="wp-block-paragraph">Microsoft is stating that this will ease up compliance reviews, vulnerability tracking, and license tracking, but for anyone doing packaging work, the more interesting use case is a bit different because this turns app inventory into a drift detection tool.&nbsp;</p>



<p class="wp-block-paragraph">Instead of manually spot-checking devices to see who is running an MSI version 3.2 when you shipped 3.5 months ago or hunting for machines where competing MSIX packages of the same app that somehow both got installed, you can query for it directly and get a fleet-wide answer. This is quite a big shift from where things stood with the per-device version of this feature.&nbsp;</p>



<p class="wp-block-paragraph">We covered that earlier rollout in the article “Intune app inventory now surfaces MSI product codes and MSIX package names for cleaner packaging decisions,” which was genuinely useful for confirming product codes and package identities on a specific machine during troubleshooting.&nbsp;</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="508" src="https://www.getpackit.com/wp-content/uploads/2026/11/app-view-packit-1024x508.png" alt="Intune App Inventory view" class="wp-image-930607" srcset="https://www.getpackit.com/wp-content/uploads/2026/11/app-view-packit-1024x508.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/11/app-view-packit-300x149.png 300w, https://www.getpackit.com/wp-content/uploads/2026/11/app-view-packit-768x381.png 768w, https://www.getpackit.com/wp-content/uploads/2026/11/app-view-packit.png 1392w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">But that stopped at the device boundary. What Microsoft is describing now removes that boundary entirely. For packaging teams specifically, this will open up some concrete workflows once it ships.&nbsp;</p>



<p class="wp-block-paragraph">You will be able to identify stale MSI or MSIX versions that are still installed weeks or months after a new build went out or catch unmanaged apps where users or scripts installed something outside your Intune deployment channel. You can also build target lists for remediation based on actual fleet data rather than tickets and guesswork.&nbsp;</p>



<p class="wp-block-paragraph">It is worth noting that this feature is listed as “<em>in development</em>,” not the usual “<em>what’s new</em>” announcement, so there is no confirmed release date yet and details such as exact schema fields for the app inventory table could still shift before it ships.&nbsp;</p>



<p class="wp-block-paragraph">Of course, querying your fleet is only half of the story because once you know which devices have stale or duplicate packages, you still need to clean them so the problem doesn’t go away with a simple report.&nbsp;</p>



<p class="wp-block-paragraph">This is where <a href="https://www.getpackit.com/">PacKit</a> helps with the automation side by keeping your MSI and MSIX builds consistent and properly versioned as part of your CI pipeline, so the fleet-wide inventory data you will soon be able to query reflects a controlled release process rather than a moving target.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="621" src="https://www.getpackit.com/wp-content/uploads/2026/11/intune-app-inventory-1024x621.png" alt="Application List view in PacKit" class="wp-image-930606" srcset="https://www.getpackit.com/wp-content/uploads/2026/11/intune-app-inventory-1024x621.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/11/intune-app-inventory-300x182.png 300w, https://www.getpackit.com/wp-content/uploads/2026/11/intune-app-inventory-768x466.png 768w, https://www.getpackit.com/wp-content/uploads/2026/11/intune-app-inventory.png 1301w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><em>Multi-device app inventory query</em> will not replace good packaging discipline, but it does give you visibility you’ve never really had before: a single query that tells you exactly where packaging drift is happening across the whole fleet, not just on the one machine about which someone happened to file a ticket.</p>



<p class="wp-block-paragraph">Once it is available, it is worth adding it to your regular cleanup routine along with your existing detection rules and update checks.</p>



<div class="wp-block-custom-admonition-note admonition admonition-note"><div class="admonition-iconWrap" aria-hidden="true"><span class="admonition-icon"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.3799 3H3.37988V19.6816L12.6982 29H29.3799V31H11.8701L1.37988 20.5098V3C1.37988 1.9 2.27988 1 3.37988 1H29.3799C30.4799 1 31.3799 1.9 31.3799 3V29C31.3799 30.1 30.4799 31 29.3799 31V3Z" fill="white"/><path d="M25.7197 5.89014C26.272 5.89014 26.7197 6.33785 26.7197 6.89014C26.7197 7.44242 26.272 7.89014 25.7197 7.89014H7.04004C6.48775 7.89014 6.04004 7.44242 6.04004 6.89014C6.04004 6.33785 6.48775 5.89014 7.04004 5.89014H25.7197Z" fill="white"/><path d="M25.7197 11.9102C26.272 11.9102 26.7197 12.3579 26.7197 12.9102C26.7197 13.4624 26.272 13.9102 25.7197 13.9102H7.04004C6.48775 13.9102 6.04004 13.4624 6.04004 12.9102C6.04004 12.3579 6.48775 11.9102 7.04004 11.9102H25.7197Z" fill="white"/><path d="M25.7197 17.9399C26.272 17.9399 26.7197 18.3877 26.7197 18.9399C26.7197 19.4922 26.272 19.9399 25.7197 19.9399H11.04C10.4878 19.9399 10.04 19.4922 10.04 18.9399C10.04 18.3877 10.4878 17.9399 11.04 17.9399H25.7197Z" fill="white"/><path d="M25.7197 23.96C26.272 23.96 26.7197 24.4077 26.7197 24.96C26.7197 25.5122 26.272 25.96 25.7197 25.96H17.04C16.4878 25.96 16.04 25.5122 16.04 24.96C16.04 24.4077 16.4878 23.96 17.04 23.96H25.7197Z" fill="white"/><path d="M3.37988 30.9998H8.86988L1.37988 23.5098V28.9998C1.37988 30.0998 2.27988 30.9998 3.37988 30.9998Z" fill="white"/></svg></span></div><div class="admonition-body"><div class="admonition-content">
<p class="wp-block-paragraph"><a href="https://www.getpackit.com/download/">Download</a> <strong>PacKit</strong> for free and access all <a href="https://www.getpackit.com/features/">features</a> instantly. No registration required.</p>
</div></div></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PSADT 4.1.8: The solution to your MSP patching</title>
		<link>https://www.getpackit.com/blog/psadt-4-1-8-the-solution-to-your-msp-patching/</link>
		
		<dc:creator><![CDATA[Radu Popescu]]></dc:creator>
		<pubDate>Fri, 30 Oct 2026 06:38:20 +0000</pubDate>
				<category><![CDATA[PSADT]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=930587</guid>

					<description><![CDATA[Modern-day application packaging is done in a very different way than it was in the past. The packaging engineer has to deal with multiple applications and scenarios when creating EXE, MSI, or MSP packages.&#160; This is where tools like PowerShell App Deploy Toolkit (PSADT), Advanced Installer, and PacKit can help. In a previous article, I [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Modern-day application packaging is done in a very different way than it was in the past. The packaging engineer has to deal with multiple applications and scenarios when creating EXE, MSI, or MSP packages.&nbsp;</p>



<p class="wp-block-paragraph">This is where tools like <strong>PowerShell App Deploy Toolkit</strong> (PSADT), <strong>Advanced Installer</strong>, and <strong>PacKit</strong> can help.</p>



<p class="wp-block-paragraph">In a previous article, I tackled <a href="https://www.getpackit.com/blog/migration-from-psadt-v3-x-to-v4-1/">migration from PSADT version 3.x to version 4.1</a> and how that was a game changer in combination with Advanced Installer to overcome limitations.</p>



<p class="wp-block-paragraph">In this article, I will go over the <strong>4.1.8</strong> release improvements and features (later currently available) for MSP patching.</p>



<h3 class="wp-block-heading">TL;DR</h3>



<ul class="wp-block-list">
<li><strong>PSADT 4.1.8</strong> simplifies MSP patching with automatic logging, multi-product code target matching, aligned parameters, and zero-configuration execution for MSI, MST, and MSP files</li>



<li>With the upgrade to v4, you gain modular deployment, native SYSTEM context interactive prompts (no ServiceUI.exe) and internal logic automation that eliminates complex custom scripting</li>
</ul>



<h2 class="wp-block-heading">PSADT 4.1.8: Key Changes and Use Cases</h2>



<h3 class="wp-block-heading">MSP automatic logging&nbsp;</h3>



<p class="wp-block-paragraph">Previously, using <em>Start-ADTMsiProcess</em> to install an MSI would automatically generate logs for the MSI installer but not for the patches that are called alongside it unless explicitly defined.&nbsp;</p>



<p class="wp-block-paragraph">Now, using the same <em>Start-ADTMsiProcess</em> with the <em>-Action &#8216;Patch&#8217;</em> parameter will generate the same MSP log without the need to use <em>-AdditionalArgumentLis</em>t.</p>



<p class="wp-block-paragraph">Here is an example of applying patches over the well-known Adobe Acrobat Pro:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Start-ADTMsiProcess -Action "Patch" -FilePath "$($adtSession.DirFiles)\AcrobatDCx64Updxxxxxxxx.msp"</textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #24292E">Start</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTMsiProcess </span><span style="color: #D73A49">-</span><span style="color: #24292E">Action </span><span style="color: #032F62">&quot;Patch&quot;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">FilePath </span><span style="color: #032F62">&quot;$($adtSession.DirFiles)</span><span style="color: #005CC5">\A</span><span style="color: #032F62">crobatDCx64Updxxxxxxxx.msp&quot;</span></span></code></pre></div>



<p class="wp-block-paragraph">If we go to the default log location C:\windows\logs, we can see all three logs generated there: the PSADT main log, the MSI log, and the MSP log.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="981" height="408" src="https://www.getpackit.com/wp-content/uploads/2026/10/image.png" alt="PSADT 4.1.8: Key Changes and Use Cases" class="wp-image-930588" style="aspect-ratio:2.41897233201581;width:612px;height:auto" srcset="https://www.getpackit.com/wp-content/uploads/2026/10/image.png 981w, https://www.getpackit.com/wp-content/uploads/2026/10/image-300x125.png 300w, https://www.getpackit.com/wp-content/uploads/2026/10/image-768x319.png 768w" sizes="(max-width: 981px) 100vw, 981px" /></figure>



<h3 class="wp-block-heading">Multiple Product Code Support</h3>



<p class="wp-block-paragraph">Before version 4.1.8, when you had a patch that applied for multiple product versions (let&#8217;s say a language pack in the form of <em>.msp</em> valid for 2025 and 2026 versions of an application), you would have needed to make sure you had any of the versions present on the machine before applying the patch. Otherwise, the script would return error 1642 and exit the installation.</p>



<p class="wp-block-paragraph">This would have required a more complex if/else install logic similar to the one below:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>$App2025 = Get-ADTApplication -Name 'Demo App 2025'$App2026 = Get-ADTApplication -Name 'Demo App 2026'
If ($App2025) {    Write-ADTLogEntry -Message "Found Demo App 2025. Applying patch..."    Start-ADTMsiProcess -Action 'Patch' -FilePath "$($adtSession.DirFiles)\SecurityUpdate.msp"} ElseIf ($App2026) {    Write-ADTLogEntry -Message "Found  Demo App 2026. Applying patch..."    Start-ADTMsiProcess -Action 'Patch' -FilePath "$($adtSession.DirFiles)\SecurityUpdate.msp"}Else {    Write-ADTLogEntry -Message "No applicable product found to patch."}   </textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #24292E">$App2025 </span><span style="color: #D73A49">=</span><span style="color: #24292E"> Get</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTApplication </span><span style="color: #D73A49">-</span><span style="color: #24292E">Name </span><span style="color: #032F62">&#39;Demo App 2025&#39;</span><span style="color: #24292E">$App2026 </span><span style="color: #D73A49">=</span><span style="color: #24292E"> Get</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTApplication </span><span style="color: #D73A49">-</span><span style="color: #24292E">Name </span><span style="color: #032F62">&#39;Demo App 2026&#39;</span></span>
<span class="line"><span style="color: #6F42C1">If</span><span style="color: #24292E"> ($App2025) {    Write</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTLogEntry </span><span style="color: #D73A49">-</span><span style="color: #24292E">Message </span><span style="color: #032F62">&quot;Found Demo App 2025. Applying patch...&quot;</span><span style="color: #24292E">    Start</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTMsiProcess </span><span style="color: #D73A49">-</span><span style="color: #24292E">Action </span><span style="color: #032F62">&#39;Patch&#39;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">FilePath </span><span style="color: #032F62">&quot;$($adtSession.DirFiles)</span><span style="color: #005CC5">\S</span><span style="color: #032F62">ecurityUpdate.msp&quot;</span><span style="color: #24292E">} </span><span style="color: #6F42C1">ElseIf</span><span style="color: #24292E"> ($App2026) {    Write</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTLogEntry </span><span style="color: #D73A49">-</span><span style="color: #24292E">Message </span><span style="color: #032F62">&quot;Found  Demo App 2026. Applying patch...&quot;</span><span style="color: #24292E">    Start</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTMsiProcess </span><span style="color: #D73A49">-</span><span style="color: #24292E">Action </span><span style="color: #032F62">&#39;Patch&#39;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">FilePath </span><span style="color: #032F62">&quot;$($adtSession.DirFiles)</span><span style="color: #005CC5">\S</span><span style="color: #032F62">ecurityUpdate.msp&quot;</span><span style="color: #24292E">}Else {    Write</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTLogEntry </span><span style="color: #D73A49">-</span><span style="color: #24292E">Message </span><span style="color: #032F62">&quot;No applicable product found to patch.&quot;</span><span style="color: #24292E">}   </span></span></code></pre></div>



<p class="wp-block-paragraph">Now, you can simply use:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Start-ADTMsiProcess -Action 'Patch' -FilePath "$($adtSession.DirFiles)\SecurityUpdate.msp" </textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #24292E">Start</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTMsiProcess </span><span style="color: #D73A49">-</span><span style="color: #24292E">Action </span><span style="color: #032F62">&#39;Patch&#39;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">FilePath </span><span style="color: #032F62">&quot;$($adtSession.DirFiles)</span><span style="color: #005CC5">\S</span><span style="color: #032F62">ecurityUpdate.msp&quot;</span><span style="color: #24292E"> </span></span></code></pre></div>



<p class="wp-block-paragraph">Why? PSADT 4.1.8 does all the logic internally, searches for any available targetable MSI, and applies the patch. If no base MSI is detected, it will simply skip the patching and add a log entry in the main PSADT log with the return code 0 for the patch action and move forward with the script.</p>



<h3 class="wp-block-heading">Aligned parameters for MSI and MSP</h3>



<p class="wp-block-paragraph">To clear up the confusion, Start-ADTMsiProcess and Start-ADTMspProcess cmdlets have aligned parameters, and using Start-ADTMspProcess standalone also automatically generates logs.</p>



<p class="wp-block-paragraph">The complete parameter lists can be found here:</p>



<ul class="wp-block-list">
<li>Click <a href="https://psappdeploytoolkit.com/docs/4.1.x/reference/functions/Start-ADTMsiProcess" rel="nofollow noopener" target="_blank">here</a> to see the <em>Start-ADTMsiProcess</em> list</li>



<li>Click <a href="https://psappdeploytoolkit.com/docs/4.1.x/reference/functions/Start-ADTMspProcess" rel="nofollow noopener" target="_blank">here</a> to see the <em>Start-ADTMspProcess</em> list</li>
</ul>



<h3 class="wp-block-heading">Zero-Config Reliability</h3>



<p class="wp-block-paragraph">While this has been introduced since the early release of version 4.1, it was perfected in PSADT 4.1.8, and MSI is well integrated and supported within the script.&nbsp;</p>



<p class="wp-block-paragraph">Let’s take an example of a command that needed to be used before:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Start-ADTMsiProcess -Action "Install" -FilePath "$($adtSession.DirFiles)\AcroPro.msi" -Transforms "$($adtSession.DirFiles)\$transform" -Patches "$($adtSession.DirFiles)\AcrobatDCx64Updxxxxxx.msp" -AdditionalArgumentList "EULA_ACCEPT=YES IGNOREVCRT64=1"</textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #24292E">Start</span><span style="color: #D73A49">-</span><span style="color: #24292E">ADTMsiProcess </span><span style="color: #D73A49">-</span><span style="color: #24292E">Action </span><span style="color: #032F62">&quot;Install&quot;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">FilePath </span><span style="color: #032F62">&quot;$($adtSession.DirFiles)</span><span style="color: #005CC5">\A</span><span style="color: #032F62">croPro.msi&quot;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">Transforms </span><span style="color: #032F62">&quot;$($adtSession.DirFiles)</span><span style="color: #005CC5">\$</span><span style="color: #032F62">transform&quot;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">Patches </span><span style="color: #032F62">&quot;$($adtSession.DirFiles)</span><span style="color: #005CC5">\A</span><span style="color: #032F62">crobatDCx64Updxxxxxx.msp&quot;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">AdditionalArgumentList </span><span style="color: #032F62">&quot;EULA_ACCEPT=YES IGNOREVCRT64=1&quot;</span></span></code></pre></div>



<p class="wp-block-paragraph">With PSADT 4.1.8, you take the PSADT template, place the .MSI, .MST, and .MSP files in the <strong>Files</strong> directory and then execute “Invoke-AppDeployToolkit.exe install.” You do not need to edit a single line of code.</p>



<div class="wp-block-custom-admonition-note admonition admonition-note"><div class="admonition-iconWrap" aria-hidden="true"><span class="admonition-icon"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.3799 3H3.37988V19.6816L12.6982 29H29.3799V31H11.8701L1.37988 20.5098V3C1.37988 1.9 2.27988 1 3.37988 1H29.3799C30.4799 1 31.3799 1.9 31.3799 3V29C31.3799 30.1 30.4799 31 29.3799 31V3Z" fill="white"/><path d="M25.7197 5.89014C26.272 5.89014 26.7197 6.33785 26.7197 6.89014C26.7197 7.44242 26.272 7.89014 25.7197 7.89014H7.04004C6.48775 7.89014 6.04004 7.44242 6.04004 6.89014C6.04004 6.33785 6.48775 5.89014 7.04004 5.89014H25.7197Z" fill="white"/><path d="M25.7197 11.9102C26.272 11.9102 26.7197 12.3579 26.7197 12.9102C26.7197 13.4624 26.272 13.9102 25.7197 13.9102H7.04004C6.48775 13.9102 6.04004 13.4624 6.04004 12.9102C6.04004 12.3579 6.48775 11.9102 7.04004 11.9102H25.7197Z" fill="white"/><path d="M25.7197 17.9399C26.272 17.9399 26.7197 18.3877 26.7197 18.9399C26.7197 19.4922 26.272 19.9399 25.7197 19.9399H11.04C10.4878 19.9399 10.04 19.4922 10.04 18.9399C10.04 18.3877 10.4878 17.9399 11.04 17.9399H25.7197Z" fill="white"/><path d="M25.7197 23.96C26.272 23.96 26.7197 24.4077 26.7197 24.96C26.7197 25.5122 26.272 25.96 25.7197 25.96H17.04C16.4878 25.96 16.04 25.5122 16.04 24.96C16.04 24.4077 16.4878 23.96 17.04 23.96H25.7197Z" fill="white"/><path d="M3.37988 30.9998H8.86988L1.37988 23.5098V28.9998C1.37988 30.0998 2.27988 30.9998 3.37988 30.9998Z" fill="white"/></svg></span></div><div class="admonition-body"><div class="admonition-content">
<p class="wp-block-paragraph">If you have multiple <em>.msi</em>, <em>.mst</em>, and <em>.msp</em> files, the script will take only the first one it finds and apply it (usually in alphabetical order).</p>
</div></div></div>



<h2 class="wp-block-heading">Still on PSADT version 3.x? Things to consider when upgrading to PSADT 4.1.8</h2>



<ol class="wp-block-list">
<li><strong>PSADT v4 has moved to a completely modular structure.</strong> This means upgrading from one version to another in the future allows you to simply drop in the updated module while keeping your <em>.ps1</em> scripts, configuration files, and package assets are completely separate and intact.</li>



<li><strong>The MSI and MSP commands are only a fraction of what the modern toolkit is capable of.</strong> The toolkit&#8217;s built-in logic saves you hours of scripting by allowing you to write a single line of code instead of relying on old-fashioned If/Else blocks, custom detections, and manual file searches.</li>



<li><strong>No more ServiceUI.exe.</strong> If you need to display interactive prompts to a user while an application is deploying in the SYSTEM context (such as via SCCM or Intune), the v4 framework handles the session crossover natively. You no longer need to bundle or wrestle with ServiceUI.exe.</li>



<li><strong>PSADT offers a v3 backward-compatibility template</strong>, so you don’t have to worry about having to rewrite all your existing v3 packages to work with v4. However, I highly suggest taking the time to modernize your code natively in v4. It will give you a much cleaner script and eliminate technical debt for the future.</li>
</ol>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">PSADT matured well to version 4.1.8.&nbsp;</p>



<p class="wp-block-paragraph">The MSP and MSI features proved to be extremely beneficial in the enterprise world, especially for <strong>Application Packagers</strong> who do high-volume packaging with vendor-provided MSI sources, for <strong>Security and Patching teams</strong> who deploy patches frequently on large applications, and last but not least, for <strong>Level 3 Support and Troubleshooting</strong> who encounter incident tickets related to failed application and patch installation.</p>



<p class="wp-block-paragraph">Did you know our tool <strong>PacKit</strong> has PSADT version 4.1.8 fully integrated? You can get it from <a href="https://www.getpackit.com/download/">here</a> and try it for free.&nbsp;</p>



<p class="wp-block-paragraph">Speaking of PSADT, PacKit comes with a solid set of features built around it:</p>



<ul class="wp-block-list">
<li>Custom PSADT templates</li>



<li>Digital signing support for PSADT scripts and detection scripts</li>



<li>PSADT 3.x and 4.x support</li>



<li>PSADT inline editor</li>
</ul>



<div class="wp-block-custom-admonition-note admonition admonition-note"><div class="admonition-iconWrap" aria-hidden="true"><span class="admonition-icon"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.3799 3H3.37988V19.6816L12.6982 29H29.3799V31H11.8701L1.37988 20.5098V3C1.37988 1.9 2.27988 1 3.37988 1H29.3799C30.4799 1 31.3799 1.9 31.3799 3V29C31.3799 30.1 30.4799 31 29.3799 31V3Z" fill="white"/><path d="M25.7197 5.89014C26.272 5.89014 26.7197 6.33785 26.7197 6.89014C26.7197 7.44242 26.272 7.89014 25.7197 7.89014H7.04004C6.48775 7.89014 6.04004 7.44242 6.04004 6.89014C6.04004 6.33785 6.48775 5.89014 7.04004 5.89014H25.7197Z" fill="white"/><path d="M25.7197 11.9102C26.272 11.9102 26.7197 12.3579 26.7197 12.9102C26.7197 13.4624 26.272 13.9102 25.7197 13.9102H7.04004C6.48775 13.9102 6.04004 13.4624 6.04004 12.9102C6.04004 12.3579 6.48775 11.9102 7.04004 11.9102H25.7197Z" fill="white"/><path d="M25.7197 17.9399C26.272 17.9399 26.7197 18.3877 26.7197 18.9399C26.7197 19.4922 26.272 19.9399 25.7197 19.9399H11.04C10.4878 19.9399 10.04 19.4922 10.04 18.9399C10.04 18.3877 10.4878 17.9399 11.04 17.9399H25.7197Z" fill="white"/><path d="M25.7197 23.96C26.272 23.96 26.7197 24.4077 26.7197 24.96C26.7197 25.5122 26.272 25.96 25.7197 25.96H17.04C16.4878 25.96 16.04 25.5122 16.04 24.96C16.04 24.4077 16.4878 23.96 17.04 23.96H25.7197Z" fill="white"/><path d="M3.37988 30.9998H8.86988L1.37988 23.5098V28.9998C1.37988 30.0998 2.27988 30.9998 3.37988 30.9998Z" fill="white"/></svg></span></div><div class="admonition-body"><div class="admonition-content">
<p class="wp-block-paragraph">Access features such as  <strong>IntuneWin Auto-Generator, WinGet integration, and SCCM &amp; Intune Upload</strong> instantly. No registration needed.<br>You can find out more about PacKit’s features <a href="https://www.getpackit.com/features/">here</a>.</p>
</div></div></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Intune EAM Auto‑Updates Change Versioning for Your Managed Apps</title>
		<link>https://www.getpackit.com/blog/intune-eam-auto-updates-change-versioning-for-your-managed-apps/</link>
		
		<dc:creator><![CDATA[Alex Marin]]></dc:creator>
		<pubDate>Fri, 25 Sep 2026 10:29:35 +0000</pubDate>
				<category><![CDATA[Intune]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=930570</guid>

					<description><![CDATA[Working as a software packager in an enterprise environment is already quite straightforward.&#160; Once a vendor ships a new build, you pull it down, repackage it, bump the detection rule, test it against your ring structure, and push it out before the old version becomes a compliance liability.&#160; However, in large infrastructures, you don’t have [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Working as a software packager in an enterprise environment is already quite straightforward.&nbsp;</p>



<p class="wp-block-paragraph">Once a vendor ships a new build, you pull it down, repackage it, bump the detection rule, test it against your ring structure, and push it out before the old version becomes a compliance liability.&nbsp;</p>



<p class="wp-block-paragraph">However, in large infrastructures, you don’t have only one app. You have dozens of apps that every organization seems to standardize on, including browsers, PDF readers, communication tools, runtimes, and so on.&nbsp;</p>



<p class="wp-block-paragraph">Aside from the multitude of apps you need to constantly repackage, the problem you face is having a version tracking mechanism in place.&nbsp;</p>



<p class="wp-block-paragraph">Microsoft has been chipping away at this problem for a while with <strong>Enterprise App Management</strong> (EAM), which is basically a curated catalog of pre-packaged applications within the Intune Admin Center.&nbsp;</p>



<p class="wp-block-paragraph">However, this June, Microsoft <a href="https://techcommunity.microsoft.com/blog/microsoftintuneblog/what%E2%80%99s-new-in-microsoft-intune-%E2%80%93-june/4491983" rel="nofollow noopener" target="_blank">officially announced that EAM auto-updates</a> are now generally available, which means that managed apps from the catalog will move automatically from one incremental release to the next, for example, 4.1 to 4.2, without the need for an administrator actually touching a package or a detection script.&nbsp;</p>



<p class="wp-block-paragraph">Everything happens automatically in the background, giving your software packagers some room to breathe while also keeping your security in place with the latest updates, which usually cover some security exploits/issues.&nbsp;</p>



<h2 class="wp-block-heading">What Changes With EAM Auto-Updates?</h2>



<p class="wp-block-paragraph">Now, the term “auto-updates” gets thrown around loosely, so let’s understand what that actually means.&nbsp;</p>



<p class="wp-block-paragraph"><strong>EAM auto-updates</strong> only apply to applications in the Enterprise App Catalog, not custom Win32 applications that you have built and uploaded yourself.&nbsp;</p>



<p class="wp-block-paragraph">When an application in that catalog gets a new incremental update, Intune automatically advances it on your managed devices based on the update settings you’ve configured.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="560" src="https://www.getpackit.com/wp-content/uploads/2026/09/Intunes-Enterprise-app-catalog-1024x560.png" alt="Intune’s Enterprise app catalog" class="wp-image-930572" srcset="https://www.getpackit.com/wp-content/uploads/2026/09/Intunes-Enterprise-app-catalog-1024x560.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/09/Intunes-Enterprise-app-catalog-300x164.png 300w, https://www.getpackit.com/wp-content/uploads/2026/09/Intunes-Enterprise-app-catalog-768x420.png 768w, https://www.getpackit.com/wp-content/uploads/2026/09/Intunes-Enterprise-app-catalog-1536x841.png 1536w, https://www.getpackit.com/wp-content/uploads/2026/09/Intunes-Enterprise-app-catalog.png 1999w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Microsoft frames this as a way to shrink the window of exposure to known vulnerabilities between full version upgrade cycles, which is a fair way to think about it.&nbsp;</p>



<p class="wp-block-paragraph">If you spend less time on mechanical repackaging, and an application spends less time sitting in an outdated, potentially exploitable build, it’s better for everybody, right?</p>



<p class="wp-block-paragraph">For teams that maintain large Win32 catalogs in large enterprises, this slightly changes the calculations on what deserves in-house packaging efforts and what doesn’t.&nbsp;</p>



<p class="wp-block-paragraph">If an application support is in the EAM catalog and its packaging needs are generic, there is a decent argument for letting EAM handle it entirely and redirecting your packaging time toward the applications that actually need human judgment.&nbsp;</p>



<p class="wp-block-paragraph">When we talk about generic versus human judgment applications, I mean that in enterprise environments, applications must usually come already configured to the user. There are many applications where the auto-update feature is not simply disabled via an MSI Property, or there are extra configurations that the business expects to be already included in the package so that the overall infrastructure has a common ground in terms of configurations.&nbsp;</p>



<p class="wp-block-paragraph">Unfortunately, generic applications are simply applications with standard silent install switches, no custom transforms, and no special configuration layered on top, whereas the others are usually line-of-business software or anything that requires an MST or custom MSI properties, applications with dependencies that don’t detect cleanly out of the box, or anything where the organization-specific configuration doesn’t match the Microsoft default catalog build. This is where EAM doesn’t help anymore because the vendor install default is not good enough for your environment.&nbsp;</p>



<p class="wp-block-paragraph">Even in a world where EAM is absorbing more generic applications, tools like <a href="https://www.getpackit.com/">PacKit</a> earn their keep. This tool won’t replace EAM’s zero-touch model, but it does cut down the manual overhead of the applications that stay under your control.&nbsp;</p>



<p class="wp-block-paragraph"><strong>PacKit</strong> reuses the silent install command line from the previous version when you are updating a package, so a new version bump doesn’t mean redoing switches from scratch, and it handles the .intunewin generation and actual push to Intune or SCCM from the same workspace, rather than being a separate manual step after packaging.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="658" src="https://www.getpackit.com/wp-content/uploads/2026/09/App-Available-Updates-in-PacKit-1024x658.png" alt="App Available Updates in PacKit" class="wp-image-930574" srcset="https://www.getpackit.com/wp-content/uploads/2026/09/App-Available-Updates-in-PacKit-1024x658.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/09/App-Available-Updates-in-PacKit-300x193.png 300w, https://www.getpackit.com/wp-content/uploads/2026/09/App-Available-Updates-in-PacKit-768x494.png 768w, https://www.getpackit.com/wp-content/uploads/2026/09/App-Available-Updates-in-PacKit.png 1469w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">It also has its own <a href="https://learn.microsoft.com/en-us/windows/package-manager/winget/" rel="nofollow noopener" target="_blank">WinGet</a>-backed app catalog for the genuinely generic applications you don’t want to hand-build from scratch, which is a useful middle ground between fully automated with EAM and fully manual in-house for teams that want to keep everything in one deployment pipeline instead of splitting workflows between EAM and their own tooling.</p>



<p class="wp-block-paragraph">PacKit recently introduced <a href="https://www.getpackit.com/blog/introducing-packit-package-manifest/">Package Manifest</a>, which addresses a version tracking problem that is separate from EAM but similar in spirit: keeping the package metadata from drifting apart across systems.&nbsp;</p>



<p class="wp-block-paragraph">Instead of having detection rules, silent switches, uninstall commands, and deployment requirements scattered across installer files, spreadsheets, or internal wikis, PacKit stores that metadata as an open format alongside the package source in a “.packit” folder that acts as a single source of truth.&nbsp;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="916" height="611" src="https://www.getpackit.com/wp-content/uploads/2026/09/PacKit-package-structure.jpg" alt="PacKit package structure" class="wp-image-930573" srcset="https://www.getpackit.com/wp-content/uploads/2026/09/PacKit-package-structure.jpg 916w, https://www.getpackit.com/wp-content/uploads/2026/09/PacKit-package-structure-300x200.jpg 300w, https://www.getpackit.com/wp-content/uploads/2026/09/PacKit-package-structure-768x512.jpg 768w" sizes="(max-width: 916px) 100vw, 916px" /></figure>



<p class="wp-block-paragraph">It is also built to be used outside of PacKit through the <a href="https://github.com/Caphyon/packit-module" rel="nofollow noopener" target="_blank">free PowerShell module</a>, so the same package definition can feed CI/CD pipelines, Intune workflows, or an internal repository without typing the same install parameters in five places.&nbsp;</p>



<p class="wp-block-paragraph">For a team maintaining a large catalog, structured and portable metadata is the more direct answer to less version-heavy packaging than auto-updates alone.</p>



<div class="wp-block-custom-admonition-info admonition admonition-info"><div class="admonition-iconWrap" aria-hidden="true"><span class="admonition-icon"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M25.12 13.5595C25.1198 7.17431 19.9448 1.99999 13.5595 1.99999C7.17445 2.00022 2.00022 7.17445 1.99999 13.5595C1.99999 19.9448 7.17431 25.1198 13.5595 25.12V27.12L13.2099 27.1151C5.88177 26.9295 0 20.9324 0 13.5595C0.000232371 6.06989 6.06989 0.000232366 13.5595 0C21.0493 0 27.1198 6.06974 27.12 13.5595L27.1151 13.9101C26.9294 21.2382 20.9324 27.12 13.5595 27.12V25.12C19.9449 25.12 25.12 19.9449 25.12 13.5595Z" fill="white"/><path d="M14.9 12.1003C14.9 11.3602 14.3023 10.7603 13.565 10.7603C12.8277 10.7603 12.23 11.3602 12.23 12.1003V19.6103C12.23 20.3503 12.8277 20.9503 13.565 20.9503C14.3023 20.9503 14.9 20.3503 14.9 19.6103V12.1003Z" fill="white"/><path d="M15.244 7.88386C15.2511 6.95052 14.5003 6.1881 13.567 6.18093C12.6336 6.17376 11.8712 6.92457 11.8641 7.8579C11.8569 8.79123 12.6077 9.55366 13.541 9.56083C14.4744 9.568 15.2368 8.81719 15.244 7.88386Z" fill="white"/></svg></span></div><div class="admonition-body"><div class="admonition-content">
<p class="wp-block-paragraph">You can learn more about PacKit’s features <a href="https://www.getpackit.com/features/">here</a> and track its progress on the <a href="https://www.getpackit.com/change-log/">Version History page</a>.&nbsp;</p>
</div></div></div>



<h2 class="wp-block-heading">Three Things You Should Know Before Leaning on EAM:</h2>



<p class="wp-block-paragraph">There are some things that are maybe worth mentioning in this article.&nbsp;</p>



<p class="wp-block-paragraph">First, <strong>EAM is not free</strong>.</p>



<p class="wp-block-paragraph">It is licensed per user and is separate from the base Intune subscription. It is worth checking current pricing before you plan around it, as Microsoft has been restructuring how these add-ons are packaged.&nbsp;</p>



<p class="wp-block-paragraph"><a href="https://techcommunity.microsoft.com/blog/microsoftintuneblog/advanced-microsoft-intune-capabilities-now-available-in-microsoft-365-e3-and-e5/4529335" rel="nofollow noopener" target="_blank">As of July 2026, EAM and Endpoint Privilege Management will be integrated into Microsoft 365 E5</a>, changing the cost equation for organizations sitting on E5 licensing but leaving it as a genuine line item decision for anyone on an E3 or standalone Intune plan.</p>



<p class="wp-block-paragraph">The second is that <strong>Microsoft controls the catalog</strong>, <a href="https://learn.microsoft.com/en-us/intune/app-management/deployment/enterprise-app-management" rel="nofollow noopener" target="_blank">not you</a>.&nbsp;</p>



<p class="wp-block-paragraph">Applications are added to the Enterprise App Catalog, but some apps also may get removed from it, sometimes at the vendor’s own request.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="794" height="343" src="https://www.getpackit.com/wp-content/uploads/2026/09/Apps-removed-from-Enterprise-App-Catalog-message.png" alt="Apps removed from Enterprise App Catalog message" class="wp-image-930575" srcset="https://www.getpackit.com/wp-content/uploads/2026/09/Apps-removed-from-Enterprise-App-Catalog-message.png 794w, https://www.getpackit.com/wp-content/uploads/2026/09/Apps-removed-from-Enterprise-App-Catalog-message-300x130.png 300w, https://www.getpackit.com/wp-content/uploads/2026/09/Apps-removed-from-Enterprise-App-Catalog-message-768x332.png 768w" sizes="(max-width: 794px) 100vw, 794px" /></figure>



<p class="wp-block-paragraph">That is a useful reminder that a catalog is a moving target over which you have no control and that any app your organization depends on heavily is worth a periodic sanity <a href="https://learn.microsoft.com/en-us/intune/app-management/deployment/enterprise-app-management" rel="nofollow noopener" target="_blank">check against the current catalog list</a> rather than assuming that “it’s in EAM.”</p>



<p class="wp-block-paragraph">The third is that <strong>EAM is not the only solution</strong> for this.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Patch my PC</strong> has been offering automated third-party update management for Intune for years, complete with its own catalog, customization options for pre and post scripts, and MSI transforms.&nbsp;</p>



<p class="wp-block-paragraph">Patch my PC is priced per device rather than per user.&nbsp;</p>



<p class="wp-block-paragraph">Patch My PC is the natural comparison point if you are evaluating whether to lean on the Microsoft catalog or keep more control in-house.</p>



<h2 class="wp-block-heading">Why Packaging Still Matters</h2>



<p class="wp-block-paragraph">None of this eliminated the need for packaging.&nbsp;</p>



<p class="wp-block-paragraph">Versioning still matters for anything outside the EAM catalog, and it arguably matters more for the applications you keep in house, since those are now the exception rather than the rule and deserve a deliberate reason for staying that way.&nbsp;</p>



<p class="wp-block-paragraph">Detection rules still need to be accurate and specific, and rollback planning doesn’t go away just because updates are automated.&nbsp;</p>



<p class="wp-block-paragraph">Even for EAM-managed apps, keeping a ring-based rollout and knowing how to pin or hold a version if a release causes problems is still worth incorporating into your process.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph"><strong>EAM</strong> auto‑updates reduce the repetitive packaging workload for generic, catalog‑based apps, but they don’t eliminate the need for software packaging in enterprise environments.&nbsp;</p>



<p class="wp-block-paragraph">Auto‑updates keep popular apps current and secure, but they are limited to Microsoft’s catalog and have licensing, catalog‑control, and coverage limitations.</p>



<p class="wp-block-paragraph"><strong>Packaging still matters</strong> for everything outside that catalog, such as apps requiring custom configs, transforms, dependencies, or organization‑specific behavior. Tools like <strong>PacKit</strong> remain essential for version tracking, metadata consistency, and streamlined Win32 update workflows.&nbsp;</p>



<p class="wp-block-paragraph">While EAM shrinks the generic workload, deliberate in‑house packaging continues to be the backbone of maintaining a reliable and predictable enterprise application ecosystem.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Perform an Oracle Client Silent Install</title>
		<link>https://www.getpackit.com/blog/how-to-perform-an-oracle-client-silent-install/</link>
		
		<dc:creator><![CDATA[Horatiu Vladasel]]></dc:creator>
		<pubDate>Fri, 18 Sep 2026 06:42:52 +0000</pubDate>
				<category><![CDATA[PacKit]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=930545</guid>

					<description><![CDATA[When working with the Oracle Client, IT Pros often need a consistent, repeatable installation method across multiple systems, and one of the most effective ways to achieve this is by creating a custom installation from a response file. In this article, you’ll learn how to build a customized Oracle Client installation using a response file [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When working with the Oracle Client, IT Pros often need a consistent, repeatable installation method across multiple systems, and one of the most effective ways to achieve this is by creating a custom installation from a response file.</p>



<p class="wp-block-paragraph">In this article, you’ll learn how to build a customized Oracle Client installation using a response file and how to implement it step by step.</p>



<h2 class="wp-block-heading">What Is a Response File?</h2>



<p class="wp-block-paragraph">A <strong>response file</strong> is a configuration file that contains predefined answers to installation prompts. Instead of manually stepping through the graphical installer, you can use this file to automate the process.</p>



<p class="wp-block-paragraph">The <strong>Oracle Universal Installer</strong> reads values from the response file and uses them to complete the installation either silently or with minimal interaction. When using the <strong>-silent</strong> option, installations can run without displaying GUI screens.</p>



<h2 class="wp-block-heading">Why Should You Use a Custom Response File?</h2>



<p class="wp-block-paragraph">Creating a custom response file gives you full control over how the Oracle Client is installed. Rather than relying on generic installation switches, you can define:</p>



<ul class="wp-block-list">
<li><strong>installation type</strong> (Administrator, Runtime, Instant Client, or Custom)</li>



<li><strong>installation directories</strong> (ORACLE_HOME and ORACLE_BASE)</li>



<li><strong>components and features</strong></li>



<li><strong>system configuration preferences</strong></li>
</ul>



<p class="wp-block-paragraph">Furthermore, once created, the same response file can be reused across multiple machines, making it ideal for enterprise deployments.</p>



<h2 class="wp-block-heading">Step-by-Step: Creating a Custom Response File</h2>



<h3 class="wp-block-heading">1. Launch the Installer Manually</h3>



<p class="wp-block-paragraph">Start by running the Oracle Client installer (setup.exe) in interactive mode. This allows you to configure all installation options through the graphical interface.&nbsp;</p>



<p class="wp-block-paragraph">During this step, select your preferred installation type, paths, and components.</p>



<h3 class="wp-block-heading">&nbsp;2. Save the Response File</h3>



<p class="wp-block-paragraph">When you reach the Summary screen in the installer, click on “<strong>Save Response File</strong>”, name it something meaningful, such as <em>Oracle19Client_Install.rsp</em>. Save the file to your installation directory (e.g., <em>C:\Downloads\Oracle19c_64bit\client</em>).</p>



<p class="wp-block-paragraph">This file will contain all the configuration choices you made during the setup process.</p>



<h3 class="wp-block-heading">&nbsp;3. Exit the Installer</h3>



<p class="wp-block-paragraph">After saving the response file, cancel and exit the installation wizard. You don’t need to complete the installation at this stage because your goal is to capture the configuration.</p>



<h3 class="wp-block-heading">&nbsp;4. Create a Silent Install Script</h3>



<p class="wp-block-paragraph">Next, create a command script to execute the installation using the response file.</p>



<p class="wp-block-paragraph">For example, if you use the PowerShell Application Deployment Toolkit, your command line should look like this:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono-NL.ttf" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Execute-Process -Path "setup.exe" -Parameters "-silent -nowait -noconsole -waitForCompletion -ignoreSysPrereqs -ignorePrereqFailure -responseFile `"$dirFiles\Oracle19Client_Install.rsp`""</textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #24292E">Execute</span><span style="color: #D73A49">-</span><span style="color: #24292E">Process </span><span style="color: #D73A49">-</span><span style="color: #24292E">Path </span><span style="color: #032F62">&quot;setup.exe&quot;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">Parameters </span><span style="color: #032F62">&quot;-silent -nowait -noconsole -waitForCompletion -ignoreSysPrereqs -ignorePrereqFailure -responseFile `&quot;</span><span style="color: #24292E">$dirFiles\Oracle19Client_Install.</span><span style="color: #6F42C1">rsp</span><span style="color: #032F62">`&quot;&quot;</span></span></code></pre></div>



<h2 class="wp-block-heading">How PacKit Can Help You In This Process</h2>



<p class="wp-block-paragraph">While response files make Oracle Client installations easier, managing them across multiple applications, versions, and environments can quickly become complex.&nbsp;</p>



<p class="wp-block-paragraph">PacKit can be very useful in this situation.</p>



<p class="wp-block-paragraph">PacKit is designed to help IT professionals manage, organize, and deploy application packages from a centralized interface. It bridges the gap between packaging and deployment, allowing you to standardize workflows and reduce repetitive tasks.</p>



<div class="wp-block-custom-admonition-note admonition admonition-note"><div class="admonition-iconWrap" aria-hidden="true"><span class="admonition-icon"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.3799 3H3.37988V19.6816L12.6982 29H29.3799V31H11.8701L1.37988 20.5098V3C1.37988 1.9 2.27988 1 3.37988 1H29.3799C30.4799 1 31.3799 1.9 31.3799 3V29C31.3799 30.1 30.4799 31 29.3799 31V3Z" fill="white"/><path d="M25.7197 5.89014C26.272 5.89014 26.7197 6.33785 26.7197 6.89014C26.7197 7.44242 26.272 7.89014 25.7197 7.89014H7.04004C6.48775 7.89014 6.04004 7.44242 6.04004 6.89014C6.04004 6.33785 6.48775 5.89014 7.04004 5.89014H25.7197Z" fill="white"/><path d="M25.7197 11.9102C26.272 11.9102 26.7197 12.3579 26.7197 12.9102C26.7197 13.4624 26.272 13.9102 25.7197 13.9102H7.04004C6.48775 13.9102 6.04004 13.4624 6.04004 12.9102C6.04004 12.3579 6.48775 11.9102 7.04004 11.9102H25.7197Z" fill="white"/><path d="M25.7197 17.9399C26.272 17.9399 26.7197 18.3877 26.7197 18.9399C26.7197 19.4922 26.272 19.9399 25.7197 19.9399H11.04C10.4878 19.9399 10.04 19.4922 10.04 18.9399C10.04 18.3877 10.4878 17.9399 11.04 17.9399H25.7197Z" fill="white"/><path d="M25.7197 23.96C26.272 23.96 26.7197 24.4077 26.7197 24.96C26.7197 25.5122 26.272 25.96 25.7197 25.96H17.04C16.4878 25.96 16.04 25.5122 16.04 24.96C16.04 24.4077 16.4878 23.96 17.04 23.96H25.7197Z" fill="white"/><path d="M3.37988 30.9998H8.86988L1.37988 23.5098V28.9998C1.37988 30.0998 2.27988 30.9998 3.37988 30.9998Z" fill="white"/></svg></span></div><div class="admonition-body"><div class="admonition-content">
<p class="wp-block-paragraph">Download <a href="https://www.getpackit.com/download/">PacKit</a> for free. </p>



<p class="wp-block-paragraph"><br>Access IntuneWin Auto-Generator, PSADT Wrapper, and SCCM &amp; Intune Upload features instantly; no registration needed.</p>



<p class="wp-block-paragraph"><br>You can find out more about PacKit’s features <a href="https://www.getpackit.com/features/">here</a>.</p>
</div></div></div>



<p class="wp-block-paragraph">All you have to do is define the install and uninstall command lines:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="380" src="https://www.getpackit.com/wp-content/uploads/2026/09/image-1024x380.png" alt="How to Perform an Oracle Client Silent Install" class="wp-image-930546" style="aspect-ratio:2.689655172413793;width:624px;height:auto" title="How to Perform an Oracle Client Silent Install" srcset="https://www.getpackit.com/wp-content/uploads/2026/09/image-1024x380.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/09/image-300x111.png 300w, https://www.getpackit.com/wp-content/uploads/2026/09/image-768x285.png 768w, https://www.getpackit.com/wp-content/uploads/2026/09/image.png 1537w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Once that’s completed, you can use PacKit’s PSADT and Intune integrations to wrap your installer in PSADT, convert it into an .intunewin file, and upload it to Intune with just a few clicks.</p>



<div class="wp-block-custom-admonition-note admonition admonition-note"><div class="admonition-iconWrap" aria-hidden="true"><span class="admonition-icon"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.3799 3H3.37988V19.6816L12.6982 29H29.3799V31H11.8701L1.37988 20.5098V3C1.37988 1.9 2.27988 1 3.37988 1H29.3799C30.4799 1 31.3799 1.9 31.3799 3V29C31.3799 30.1 30.4799 31 29.3799 31V3Z" fill="white"/><path d="M25.7197 5.89014C26.272 5.89014 26.7197 6.33785 26.7197 6.89014C26.7197 7.44242 26.272 7.89014 25.7197 7.89014H7.04004C6.48775 7.89014 6.04004 7.44242 6.04004 6.89014C6.04004 6.33785 6.48775 5.89014 7.04004 5.89014H25.7197Z" fill="white"/><path d="M25.7197 11.9102C26.272 11.9102 26.7197 12.3579 26.7197 12.9102C26.7197 13.4624 26.272 13.9102 25.7197 13.9102H7.04004C6.48775 13.9102 6.04004 13.4624 6.04004 12.9102C6.04004 12.3579 6.48775 11.9102 7.04004 11.9102H25.7197Z" fill="white"/><path d="M25.7197 17.9399C26.272 17.9399 26.7197 18.3877 26.7197 18.9399C26.7197 19.4922 26.272 19.9399 25.7197 19.9399H11.04C10.4878 19.9399 10.04 19.4922 10.04 18.9399C10.04 18.3877 10.4878 17.9399 11.04 17.9399H25.7197Z" fill="white"/><path d="M25.7197 23.96C26.272 23.96 26.7197 24.4077 26.7197 24.96C26.7197 25.5122 26.272 25.96 25.7197 25.96H17.04C16.4878 25.96 16.04 25.5122 16.04 24.96C16.04 24.4077 16.4878 23.96 17.04 23.96H25.7197Z" fill="white"/><path d="M3.37988 30.9998H8.86988L1.37988 23.5098V28.9998C1.37988 30.0998 2.27988 30.9998 3.37988 30.9998Z" fill="white"/></svg></span></div><div class="admonition-body"><div class="admonition-content">
<p class="wp-block-paragraph">For more details, check out <a href="https://www.getpackit.com/blog/wrapping-win32-apps-psadt/">Wrapping Win32 apps with PSADT for Intune Deployment</a>.</p>
</div></div></div>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">By capturing your configuration once and reusing it, you can dramatically simplify deployments while maintaining consistency across environments.</p>



<p class="wp-block-paragraph">Whether you’re managing a handful of clients or a large enterprise infrastructure, response file-based installations provide a reliable, scalable, and efficient solution for Oracle client deployment.</p>



<h2 class="wp-block-heading">Final Takeaways</h2>



<ul class="wp-block-list">
<li>A <strong>response file</strong> is a configuration file that contains predefined answers to installation prompts. Instead of manually stepping through the graphical installer, you can use this file to automate the process.</li>



<li>The <strong>Oracle Universal Installer</strong> reads values from the response file and uses them to complete the installation either silently or with minimal interaction.</li>



<li>Creating a <strong>custom response file</strong> gives you full control over how the Oracle Client is installed. </li>



<li>Rather than relying on generic installation switches, you can define installation type, installation directories, components and features, and system configuration preferences</li>



<li><strong>Steps on creating a custom response file</strong>: launch the installer manually, save the response file, exit the installation wizard, then create a silent install script</li>



<li><strong>PacKit</strong> can speed up the process: just define the install and uninstall command lines, then use the PSADT and Intune integrations to wrap your installer into PSADT, convert it into an .intunewin file and upload it to Intune</li>
</ul>



<div class="wp-block-custom-admonition-note admonition admonition-note"><div class="admonition-iconWrap" aria-hidden="true"><span class="admonition-icon"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.3799 3H3.37988V19.6816L12.6982 29H29.3799V31H11.8701L1.37988 20.5098V3C1.37988 1.9 2.27988 1 3.37988 1H29.3799C30.4799 1 31.3799 1.9 31.3799 3V29C31.3799 30.1 30.4799 31 29.3799 31V3Z" fill="white"/><path d="M25.7197 5.89014C26.272 5.89014 26.7197 6.33785 26.7197 6.89014C26.7197 7.44242 26.272 7.89014 25.7197 7.89014H7.04004C6.48775 7.89014 6.04004 7.44242 6.04004 6.89014C6.04004 6.33785 6.48775 5.89014 7.04004 5.89014H25.7197Z" fill="white"/><path d="M25.7197 11.9102C26.272 11.9102 26.7197 12.3579 26.7197 12.9102C26.7197 13.4624 26.272 13.9102 25.7197 13.9102H7.04004C6.48775 13.9102 6.04004 13.4624 6.04004 12.9102C6.04004 12.3579 6.48775 11.9102 7.04004 11.9102H25.7197Z" fill="white"/><path d="M25.7197 17.9399C26.272 17.9399 26.7197 18.3877 26.7197 18.9399C26.7197 19.4922 26.272 19.9399 25.7197 19.9399H11.04C10.4878 19.9399 10.04 19.4922 10.04 18.9399C10.04 18.3877 10.4878 17.9399 11.04 17.9399H25.7197Z" fill="white"/><path d="M25.7197 23.96C26.272 23.96 26.7197 24.4077 26.7197 24.96C26.7197 25.5122 26.272 25.96 25.7197 25.96H17.04C16.4878 25.96 16.04 25.5122 16.04 24.96C16.04 24.4077 16.4878 23.96 17.04 23.96H25.7197Z" fill="white"/><path d="M3.37988 30.9998H8.86988L1.37988 23.5098V28.9998C1.37988 30.0998 2.27988 30.9998 3.37988 30.9998Z" fill="white"/></svg></span></div><div class="admonition-body"><div class="admonition-content">
<p class="wp-block-paragraph">Here are some of PacKit&#8217;s post-packaging configuration and deployment features:</p>



<ul class="wp-block-list">
<li>PSADT Wrapper</li>



<li>IntuneWin Auto-Generator</li>



<li>App Catalog – WinGet</li>



<li>Command Line Finder</li>



<li>Intune Detection Rules</li>



<li>Intune OS Requirements</li>
</ul>



<p class="wp-block-paragraph"><br><a href="https://www.getpackit.com/download/">Try it for free here</a>.</p>
</div></div></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Install WinGet on Windows OS and Sandbox Environment</title>
		<link>https://www.getpackit.com/blog/how-to-install-winget-on-windows-os-and-sandbox-environment/</link>
		
		<dc:creator><![CDATA[Alex Marin]]></dc:creator>
		<pubDate>Fri, 04 Sep 2026 06:49:10 +0000</pubDate>
				<category><![CDATA[WinGet]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=930518</guid>

					<description><![CDATA[We’ve discussed WinGet in previous articles, mostly in the context of packaging workflows, Intune deployments, PacKit, and how it fits alongside tools like MSIX and MSI.&#160; But in this article I want us to focus on something more fundamental: how WinGet gets into the OS and how to install it. Installing WinGet on supported Windows [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">We’ve discussed <a href="https://www.advancedinstaller.com/best-alternative-to-winget-windows-package-manager.html" target="_blank" rel="noopener">WinGet</a> in previous articles, mostly in the context of packaging workflows, Intune deployments, PacKit, and how it fits alongside tools like MSIX and MSI.&nbsp;</p>



<p class="wp-block-paragraph">But in this article I want us to focus on something more fundamental: how WinGet gets into the OS and how to install it.</p>



<h2 class="wp-block-heading">Installing WinGet on supported Windows versions</h2>



<p class="wp-block-paragraph">Before we jump into any kind of installation steps or instructions, we should note that <strong>WinGet </strong>is not a simple standalone executable you just download and run once.&nbsp;</p>



<p class="wp-block-paragraph"><strong>WinGet </strong>ships as part of the<strong> App Installer</strong> package, a system component that Microsoft maintains and updates through the Microsoft Store on desktop editions of Windows and regular Windows Updates on Windows Server 2025. This matters because it explains why WinGet might sometimes appear as “missing” even on systems that should support it and why the fix is rarely a traditional installer.&nbsp;</p>



<p class="wp-block-paragraph">WinGet is preinstalled as part of the App Installer component in Windows 11, a modern build of Windows 10, and Windows Server 2025.&nbsp;</p>



<p class="wp-block-paragraph">The minimum supported baseline is Windows 10 version 1809, which means that most machines today should have it the moment a user signs in because Microsoft Store registers the Windows Package Manager during that first login.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="577" src="https://www.getpackit.com/wp-content/uploads/2026/09/winget-cmd-1024x577.png" alt="WinGet command in CMD" class="wp-image-930521" srcset="https://www.getpackit.com/wp-content/uploads/2026/09/winget-cmd-1024x577.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/09/winget-cmd-300x169.png 300w, https://www.getpackit.com/wp-content/uploads/2026/09/winget-cmd-768x433.png 768w, https://www.getpackit.com/wp-content/uploads/2026/09/winget-cmd.png 1115w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">That registration part is probably what people misunderstand, and if you open a fresh VM, log in, and try to run WinGet directly, it will not work because the registration process has not finished yet. This takes place asynchronously in the background.&nbsp;</p>



<p class="wp-block-paragraph">If you don’t want to wait for that registration process, <a href="https://learn.microsoft.com/en-us/windows/package-manager/winget/#install-winget" rel="nofollow noopener" target="_blank">you can trigger it manually using PowerShell</a>:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono-NL.ttf" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe </textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #24292E">Add</span><span style="color: #D73A49">-</span><span style="color: #24292E">AppxPackage </span><span style="color: #D73A49">-</span><span style="color: #24292E">RegisterByFamilyName </span><span style="color: #D73A49">-</span><span style="color: #24292E">MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe </span></span></code></pre></div>



<p class="wp-block-paragraph">There is also a slim chance that App Installer is not already installed on your device. In that case, you can <a href="https://apps.microsoft.com/detail/9nblggh4nns1?hl=en-US&amp;gl=RO" rel="nofollow noopener" target="_blank">download it from the Store</a>, which will also install the WinGet component.</p>



<p class="wp-block-paragraph">However, there is another version of WinGet known as the “preview version” that is technically directed towards developers.&nbsp;</p>



<p class="wp-block-paragraph">This is basically the “Insider” program, which allows you to test new features before they reach general availability. You can get that version in two ways: either you <a href="https://aka.ms/getwingetpreview" rel="nofollow noopener" target="_blank">install the latest WinGet preview version directly</a>, or you <a href="https://insider.windows.com/" rel="nofollow noopener" target="_blank">sign up with your account for the Windows Insider Program</a>.</p>



<p class="wp-block-paragraph">WinGet is not available from the start for the Windows Sandbox feature. The whole purpose of Windows Sandbox is to offer a light desktop environment to safely run applications in isolation. However, that means it lacks a few things, one of which is WinGet.&nbsp;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="975" height="227" src="https://www.getpackit.com/wp-content/uploads/2026/09/winget-windows-sandbox.png" alt="Windows Sandbox winget command" class="wp-image-930519" srcset="https://www.getpackit.com/wp-content/uploads/2026/09/winget-windows-sandbox.png 975w, https://www.getpackit.com/wp-content/uploads/2026/09/winget-windows-sandbox-300x70.png 300w, https://www.getpackit.com/wp-content/uploads/2026/09/winget-windows-sandbox-768x179.png 768w" sizes="(max-width: 975px) 100vw, 975px" /></figure>



<p class="wp-block-paragraph">Microsoft offers a simple PowerShell script that you can run to install WinGet in a Windows Sandbox:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono-NL.ttf" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>$progressPreference = 'silentlyContinue'Write-Host "Installing WinGet PowerShell module from PSGallery..."Install-PackageProvider -Name NuGet -Force | Out-NullInstall-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery | Out-NullWrite-Host "Using Repair-WinGetPackageManager cmdlet to bootstrap WinGet..."Repair-WinGetPackageManager -AllUsersWrite-Host "Done."</textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #24292E">$progressPreference </span><span style="color: #D73A49">=</span><span style="color: #24292E"> </span><span style="color: #032F62">&#39;silentlyContinue&#39;</span><span style="color: #24292E">Write</span><span style="color: #D73A49">-</span><span style="color: #24292E">Host </span><span style="color: #032F62">&quot;Installing WinGet PowerShell module from PSGallery...&quot;</span><span style="color: #24292E">Install</span><span style="color: #D73A49">-</span><span style="color: #24292E">PackageProvider </span><span style="color: #D73A49">-</span><span style="color: #24292E">Name NuGet </span><span style="color: #D73A49">-</span><span style="color: #24292E">Force </span><span style="color: #D73A49">|</span><span style="color: #24292E"> Out</span><span style="color: #D73A49">-</span><span style="color: #24292E">NullInstall</span><span style="color: #D73A49">-</span><span style="color: #24292E">Module </span><span style="color: #D73A49">-</span><span style="color: #24292E">Name Microsoft.WinGet.Client </span><span style="color: #D73A49">-</span><span style="color: #24292E">Force </span><span style="color: #D73A49">-</span><span style="color: #24292E">Repository PSGallery </span><span style="color: #D73A49">|</span><span style="color: #24292E"> Out</span><span style="color: #D73A49">-</span><span style="color: #24292E">NullWrite</span><span style="color: #D73A49">-</span><span style="color: #24292E">Host </span><span style="color: #032F62">&quot;Using Repair-WinGetPackageManager cmdlet to bootstrap WinGet...&quot;</span><span style="color: #24292E">Repair</span><span style="color: #D73A49">-</span><span style="color: #24292E">WinGetPackageManager </span><span style="color: #D73A49">-</span><span style="color: #24292E">AllUsersWrite</span><span style="color: #D73A49">-</span><span style="color: #24292E">Host </span><span style="color: #032F62">&quot;Done.&quot;</span></span></code></pre></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="974" height="544" src="https://www.getpackit.com/wp-content/uploads/2026/09/install-winget-ws.png" alt="Install WinGet in Windows Sandbox via Powershell" class="wp-image-930520" srcset="https://www.getpackit.com/wp-content/uploads/2026/09/install-winget-ws.png 974w, https://www.getpackit.com/wp-content/uploads/2026/09/install-winget-ws-300x168.png 300w, https://www.getpackit.com/wp-content/uploads/2026/09/install-winget-ws-768x429.png 768w" sizes="(max-width: 974px) 100vw, 974px" /></figure>



<h1 class="wp-block-heading">Conclusion</h1>



<p class="wp-block-paragraph">Getting WinGet running on a machine is usually simple since it rides along with the App Installer component and registers itself automatically on first login, but the moment you step outside that happy path, whether that&#8217;s a sandboxed environment, a locked-down image, or a desire to run preview builds, the process becomes a lot more deliberate.&nbsp;</p>



<p class="wp-block-paragraph">Knowing the registration command, the PowerShell bootstrap method, and the difference between the manual preview download and the Insider channel gives you the flexibility to get WinGet working reliably no matter what environment you are starting from.&nbsp;</p>



<p class="wp-block-paragraph">In a future article, we’ll look at putting WinGet to work for actual package installs and how it works with tools like Advanced Installer in a broader deployment pipeline.</p>



<h2 class="wp-block-heading">TL;DR – Final Takeaways</h2>



<ul class="wp-block-list">
<li>WinGet is included in the App Installer package, a system component that Microsoft maintains and updates via the Microsoft Store on desktop versions of Windows and regular Windows Updates on Windows Server 2025</li>



<li>Winget is preinstalled as part of the App Installer component in Windows 11, a modern build of Windows 10, and Windows Server 2025</li>



<li>The minimum supported baseline is Windows 10 version 1809</li>



<li>Microsoft Store registers the Windows Package Manager during the first login, so if you open a new VM, log in, and try to run WinGet directly, it will simply fail because the registration process has not yet been completed. If you don&#8217;t want to wait for the registration process, you can start it manually with PowerShell</li>



<li>If App Installer is not already installed on your device, you can download it from the Store, which will also install the WinGet component</li>



<li>WinGet is not available from the start for the Windows Sandbox feature but Microsoft provides a simple PowerShell script to install WinGet in a Windows Sandbox</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why Your Intune Registry Detection Rules Fail (Even When the App Is There)</title>
		<link>https://www.getpackit.com/blog/why-your-intune-registry-detection-rules-fail-even-when-the-app-is-there/</link>
		
		<dc:creator><![CDATA[Alex Marin]]></dc:creator>
		<pubDate>Fri, 14 Aug 2026 06:51:11 +0000</pubDate>
				<category><![CDATA[Intune]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=930391</guid>

					<description><![CDATA[If you read our previous article on Intune deployment latency and how the Intune Management Extension (IME) handles its check-in cycles, you already know that timing plays an important role in Intune’s behavior.&#160; In this article, let’s talk about registry-based detection rules and the possible reasons why they fail in some applications. How detection rules [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you read our previous article on Intune deployment latency and how the <a href="https://www.getpackit.com/blog/intune-win32-app-troubleshooting/"><strong>Intune Management Extension</strong> (IME) handles its check-in cycles</a>, you already know that timing plays an important role in Intune’s behavior.&nbsp;</p>



<p class="wp-block-paragraph">In this article, let’s talk about registry-based detection rules and the possible reasons why they fail in some applications.</p>



<h2 class="wp-block-heading">How detection rules work in IME</h2>



<p class="wp-block-paragraph">Before we get into the reasons, let us first try to understand how things should work in IME.&nbsp;</p>



<p class="wp-block-paragraph">After installing a Win32 app, the IME immediately runs the detection logic configured in the portal. In terms of detection logic, it can be a registry check, file or folder checks, or a custom PowerShell script that is placed on each application. And this doesn’t wait.&nbsp;</p>



<p class="wp-block-paragraph">Once the installer returns an exit code, IME interprets it as a success or failure based on the exit code and immediately runs detection to confirm if the application is installed or not.&nbsp;</p>



<p class="wp-block-paragraph">The result of that detection is what IME reports back to the Intune portal, and if the installer exists cleanly with a return code 0, but the detection returns nothing, the deployment is marked as <em>failed </em>in Intune.&nbsp;</p>



<p class="wp-block-paragraph">The application can be fully functional on the device, but Intune will still display a red status because, from its perspective, the detection is the only source of truth.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="664" src="https://www.getpackit.com/wp-content/uploads/2026/08/mozilla-install-status-1024x664.png" alt="Mozilla Firefox installation status" class="wp-image-930398" srcset="https://www.getpackit.com/wp-content/uploads/2026/08/mozilla-install-status-1024x664.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/08/mozilla-install-status-300x194.png 300w, https://www.getpackit.com/wp-content/uploads/2026/08/mozilla-install-status-768x498.png 768w, https://www.getpackit.com/wp-content/uploads/2026/08/mozilla-install-status.png 1304w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Another thing to keep in mind is that IME runs in the SYSTEM context, which we will discuss later on in the article.&nbsp;</p>



<p class="wp-block-paragraph">Now that we understand how IME and detections work, let’s look at some of the most common reasons for detection failure when using a registry detection rule.</p>



<h2 class="wp-block-heading">Causes of Intune Registry Detection Failure</h2>



<h3 class="wp-block-heading">Cause 1: The registry has not been written yet</h3>



<p class="wp-block-paragraph">So, keep in mind that for a detection check to run, the installer must pass a successful exit code. It could be 0, 3010, or you can define custom exit codes within Intune that IME will process as successful.&nbsp;</p>



<p class="wp-block-paragraph">Once this is done, the IME immediately fires the detection mechanism. However, some installers, particularly those based on EXE, may experience a slight delay.&nbsp;</p>



<p class="wp-block-paragraph">If you deploy a standard MSI, you won’t hit this problem because the Windows installer holds the exit code until the entire installation is complete, which includes writing all registry entries containing the Uninstall hive keys.&nbsp;</p>



<p class="wp-block-paragraph">By the time IME receives the exit code and runs the detection, everything is already there.&nbsp;</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="602" src="https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor-1024x602.png" alt="Registry Editor view" class="wp-image-930399" srcset="https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor-1024x602.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor-300x176.png 300w, https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor-768x451.png 768w, https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor.png 1060w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The problem appears with EXE wrappers because EXE files do not follow any patterns.&nbsp;</p>



<p class="wp-block-paragraph">Vendors can ship an EXE that unpacks and launches an MSI or multiple installers in the background before immediately returning an exit code without waiting for the child process to finish.&nbsp;</p>



<p class="wp-block-paragraph">From IME’s perspective, the installation is complete, and the detection logic is activated, but the detection keys are missing because the installers haven’t finished processing in the background.&nbsp;</p>



<p class="wp-block-paragraph">The same thing can happen with chained installers, where the main executable finishes and the next one starts, and that secondary process is the one responsible for writing the registry keys you are using for detection.&nbsp;</p>



<p class="wp-block-paragraph">If you suspect this is your issue, the quickest way to confirm is to run the installer manually on a test machine and check the Task manager for child processes.&nbsp;</p>



<p class="wp-block-paragraph">This fix involves either switching to a custom PowerShell detection script with a short delay or finding a cleaner install switch that forces the EXE to wait for all child processes before returning.&nbsp;</p>



<p class="wp-block-paragraph">Here is an example of a PowerShell detection delay script:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono-NL.ttf" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Start-Sleep -Seconds 10
$key = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\YourApp" -ErrorAction SilentlyContinue
if ($key -and $key.DisplayVersion -eq "1.2.3") {    Write-Output "Detected"    exit 0} else {    exit 1}</textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #24292E">Start</span><span style="color: #D73A49">-</span><span style="color: #24292E">Sleep </span><span style="color: #D73A49">-</span><span style="color: #24292E">Seconds </span><span style="color: #005CC5">10</span></span>
<span class="line"><span style="color: #24292E">$key </span><span style="color: #D73A49">=</span><span style="color: #24292E"> Get</span><span style="color: #D73A49">-</span><span style="color: #24292E">ItemProperty </span><span style="color: #D73A49">-</span><span style="color: #24292E">Path </span><span style="color: #032F62">&quot;HKLM:</span><span style="color: #005CC5">\S</span><span style="color: #032F62">OFTWARE</span><span style="color: #005CC5">\M</span><span style="color: #032F62">icrosoft</span><span style="color: #005CC5">\W</span><span style="color: #032F62">indows</span><span style="color: #005CC5">\C</span><span style="color: #032F62">urrentVersion</span><span style="color: #005CC5">\U</span><span style="color: #032F62">ninstall</span><span style="color: #005CC5">\Y</span><span style="color: #032F62">ourApp&quot;</span><span style="color: #24292E"> </span><span style="color: #D73A49">-</span><span style="color: #24292E">ErrorAction SilentlyContinue</span></span>
<span class="line"><span style="color: #D73A49">if</span><span style="color: #24292E"> ($key </span><span style="color: #D73A49">-</span><span style="color: #24292E">and $key.DisplayVersion </span><span style="color: #D73A49">-</span><span style="color: #24292E">eq </span><span style="color: #032F62">&quot;1.2.3&quot;</span><span style="color: #24292E">) {    Write</span><span style="color: #D73A49">-</span><span style="color: #24292E">Output </span><span style="color: #032F62">&quot;Detected&quot;</span><span style="color: #24292E">    exit </span><span style="color: #005CC5">0</span><span style="color: #24292E">} </span><span style="color: #D73A49">else</span><span style="color: #24292E"> {    exit </span><span style="color: #005CC5">1</span><span style="color: #24292E">}</span></span></code></pre></div>



<p class="wp-block-paragraph">Ten seconds is usually more than enough for a registry write to finish, but if Intune still reports a failed detection afterwards, you know it is not a timing issue and you should look elsewhere.</p>



<h3 class="wp-block-heading">Cause 2: 32-bit vs 64-bit Registry</h3>



<p class="wp-block-paragraph">In 2026, the majority of the operating systems run on 64-bit hardware. However, it doesn’t mean that all the applications are created as 64-bit.&nbsp;</p>



<p class="wp-block-paragraph">32-bit applications do not write to <em>HKLM\Software</em> directly. Instead, they write to <em>HKLM\Software\Wow6432Node</em>, which Windows silently redirects them to via registry reflection.&nbsp;</p>



<p class="wp-block-paragraph">If you’re targeting a 32-bit installer and your detection rule points to <em>HKLM\Software\YouVendor\YouApp</em>, you won’t get anywhere, even if the key exists under <em>WOW6432Node</em>.&nbsp;</p>



<p class="wp-block-paragraph">When configuring a registry detection rule in the Intune portal, you can look for the “Associated with a 32-bit app on 64-bit clients” checkbox.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="660" src="https://www.getpackit.com/wp-content/uploads/2026/08/intune-app-detection-rules-1024x660.png" alt="Intune app detection rules manual configuration" class="wp-image-930397" srcset="https://www.getpackit.com/wp-content/uploads/2026/08/intune-app-detection-rules-1024x660.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/08/intune-app-detection-rules-300x193.png 300w, https://www.getpackit.com/wp-content/uploads/2026/08/intune-app-detection-rules-768x495.png 768w, https://www.getpackit.com/wp-content/uploads/2026/08/intune-app-detection-rules.png 1321w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">So, make sure to properly select the architecture of the application you intend to install.&nbsp;</p>



<h3 class="wp-block-heading">Cause 3: The System context issue</h3>



<p class="wp-block-paragraph">As previously mentioned, IME runs as SYSTEM (or NT Authority\System to be more precise).&nbsp;</p>



<p class="wp-block-paragraph">If your application has a detection method present in <em>HKEY_CURRENT_USER</em>, meaning this is a per-user installable application, when IME checks the HKCU, it won’t actually be the proper user’s HKCU, but the SYSTEM account’s HKCU.&nbsp;</p>



<p class="wp-block-paragraph"><em>HKEY_CURRENT_USER </em>is a redirection of the <em>HKEY_USERS\USER_ID</em>, where USER_ID is one of S-1-5-21-xxxxx-xxxxx-xxxx-xxxx.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="602" src="https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor-2-1024x602.png" alt="Registry Editor view 2" class="wp-image-930396" srcset="https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor-2-1024x602.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor-2-300x176.png 300w, https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor-2-768x451.png 768w, https://www.getpackit.com/wp-content/uploads/2026/08/registry-editor-2.png 1060w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">In that case, IME will only look in the SYSTEM registry, not the current logged-in user’s.&nbsp;</p>



<p class="wp-block-paragraph">The solution is to either switch to an HKLM based detection path if the application writes anything there or to create a custom PowerShell detection script that manually loads the user’s registry hive.&nbsp;</p>



<p class="wp-block-paragraph">In the large infrastructure environments, per-user applications are usually repackaged to be targeted on a per-machine basis, and the detection works like a charm.&nbsp;</p>



<p class="wp-block-paragraph">However, if auto-updates are involved, switching to a per-machine solution won’t work because the application may not have sufficient permissions to update itself, or worse, install an update on a per-user basis while the per-machine one still exists on the machine.&nbsp;</p>



<p class="wp-block-paragraph">There is no “one size fits all” solution here because it all depends on the application’s context.</p>



<h2 class="wp-block-heading">How to Diagnose Using IME Logs</h2>



<p class="wp-block-paragraph">When a detection fails or you have other errors with your application and can’t immediately tell why, the IME logs are the right place to start.&nbsp;</p>



<p class="wp-block-paragraph">You can find the IME logs at:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono-NL.ttf" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>C:\ProgramData\Microsoft\IntuneManagementExtension\Logs\IntuneManagementExtension.log</textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #6F42C1">C</span><span style="color: #24292E">:\ProgramData\Microsoft\IntuneManagementExtension\Logs\IntuneManagementExtension.log</span></span></code></pre></div>



<p class="wp-block-paragraph">This is the main log, and you will find all the necessary information for your application. This will display all the steps taken during the installation, as well as whether it failed or succeeded.&nbsp;</p>



<p class="wp-block-paragraph">If there is a registry issue, you will find entries showing exactly what path IME was looking for, what value is expected, and what it actually found or did not find.&nbsp;</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Intune’s detection logic is strict: IME trusts only the detection result, so any delay, wrong registry path, or SYSTEM‑context mismatch can cause a perfectly working app to appear as failed.&nbsp;</p>



<p class="wp-block-paragraph">Most issues come from EXE installers returning too early, 32‑bit vs 64‑bit registry confusion, or HKCU detections that IME cannot see.&nbsp;</p>



<p class="wp-block-paragraph">Clear detection design and checking the IME logs keep these problems easy to diagnose and avoid.</p>



<div class="wp-block-custom-admonition-info admonition admonition-info"><div class="admonition-iconWrap" aria-hidden="true"><span class="admonition-icon"><svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M25.12 13.5595C25.1198 7.17431 19.9448 1.99999 13.5595 1.99999C7.17445 2.00022 2.00022 7.17445 1.99999 13.5595C1.99999 19.9448 7.17431 25.1198 13.5595 25.12V27.12L13.2099 27.1151C5.88177 26.9295 0 20.9324 0 13.5595C0.000232371 6.06989 6.06989 0.000232366 13.5595 0C21.0493 0 27.1198 6.06974 27.12 13.5595L27.1151 13.9101C26.9294 21.2382 20.9324 27.12 13.5595 27.12V25.12C19.9449 25.12 25.12 19.9449 25.12 13.5595Z" fill="white"/><path d="M14.9 12.1003C14.9 11.3602 14.3023 10.7603 13.565 10.7603C12.8277 10.7603 12.23 11.3602 12.23 12.1003V19.6103C12.23 20.3503 12.8277 20.9503 13.565 20.9503C14.3023 20.9503 14.9 20.3503 14.9 19.6103V12.1003Z" fill="white"/><path d="M15.244 7.88386C15.2511 6.95052 14.5003 6.1881 13.567 6.18093C12.6336 6.17376 11.8712 6.92457 11.8641 7.8579C11.8569 8.79123 12.6077 9.55366 13.541 9.56083C14.4744 9.568 15.2368 8.81719 15.244 7.88386Z" fill="white"/></svg></span></div><div class="admonition-body"><div class="admonition-content">
<p class="wp-block-paragraph">Try <a href="https://www.getpackit.com/download/">PacKit </a>for free to get access to features such as:</p>



<ul class="wp-block-list">
<li><strong>Generating .intunewin file automatically</strong>, including converting EXE, MSI, or PSADT-wrapped packages to .intunewin files</li>



<li>Reuse install command lines from sibling packages when deploying the .intunewin file</li>



<li><strong>Direct upload to Intune</strong>, including creating EntraID groups directly in PacKit, assigning apps in one click, reusing app assignments, and easily managing Intune detection rules</li>
</ul>



<p class="wp-block-paragraph">You can learn more about PacKit features <a href="https://www.getpackit.com/features/">here</a>.</p>
</div></div></div>



<h2 class="wp-block-heading">Final Takeaways</h2>



<ul class="wp-block-list">
<li>After installing a Win32 app, the IME immediately executes the detection logic configured in the portal. In terms of detection logic, it could be a registry check, file or folder checks, or a custom PowerShell script that is installed with each application.</li>



<li>Once the installer returns an exit code, IME interprets it as a success or failure based on the exit code and immediately launches detection to confirm whether or not the application is installed.&nbsp;</li>



<li>IME reports back to the Intune portal, and if the installer exists cleanly with a return code 0 but the detection returns nothing, the deployment is marked as failed in Intune.</li>
</ul>



<h3 class="wp-block-heading">TL;DR: Causes of Intune Registry Detection Failures and Solutions:</h3>



<ul class="wp-block-list">
<li><strong>The registry has not been written yet</strong>: if you suspect this is the problem, the quickest way to confirm it is to run the installer manually on a test machine and check the Task Manager for child processes before using a custom PowerShell detection script with a short delay or finding a cleaner install switch that forces the EXE to wait for all child processes before returning</li>



<li><strong>32-bit vs 64-bit Registry:</strong> when configuring a registry detection rule in the Intune portal, select the &#8220;Associated with a 32-bit app on 64-bit clients&#8221; checkbox</li>



<li><strong>The System context issue</strong>: switch to an HKLM-based detection path if the application writes anything there or create a custom PowerShell detection script that manually loads the user&#8217;s registry hive</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why Replacing the .intunewin File Is Not Enough to Update an App</title>
		<link>https://www.getpackit.com/blog/replacing-intunewin-file-not-enough-to-update-apps/</link>
		
		<dc:creator><![CDATA[Alex Marin]]></dc:creator>
		<pubDate>Fri, 07 Aug 2026 08:15:36 +0000</pubDate>
				<category><![CDATA[Intune]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=930380</guid>

					<description><![CDATA[If you’ve been following along, we’ve already covered a lot of ground on how Intune handles Win32 applications, as well as the mechanics of the detection rules, why your Intune registry detection rules fail, and a full installation flow.&#160; These pieces focused on how Intune decides whether an application needs to be installed in the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If you’ve been following along, we’ve already covered a lot of ground on <a href="https://www.getpackit.com/blog/win32-app-deployment-intune-process/">how <strong>Intune </strong>handles <strong>Win32 </strong>applications</a>, as well as <a href="https://www.getpackit.com/blog/win3-intune-detection-rules/">the mechanics of the detection rules</a>, why your Intune registry detection rules fail, and a full installation flow.&nbsp;</p>



<p class="wp-block-paragraph">These pieces focused on how <strong>Intune </strong>decides whether an application needs to be installed in the first place.&nbsp;</p>



<p class="wp-block-paragraph">In this article, I&#8217;d like to also cover another scenario of a separate behavior that some people might not be aware of: what happens when you update the .intunewin file?&nbsp;</p>



<h2 class="wp-block-heading">What Happens When You Replace the .intunewin File?</h2>



<p class="wp-block-paragraph">If you are in testing or normal production mode and you have an application deployed and users who already installed it, you cannot simply replace the .intunewin file in the original deployment.&nbsp;</p>



<p class="wp-block-paragraph">Why is that?</p>



<p class="wp-block-paragraph">In theory, you think it should work because Intune should notice that the deployment contents are different, right? Well, that is not the case, and to be honest, it’s the same approach that was with SCCM (MECM).&nbsp;</p>



<p class="wp-block-paragraph">The reason comes back to exactly what we discussed in the previous detection rules articles.</p>



<p class="wp-block-paragraph">When the <strong>Intune Management Extension</strong> (IME) checks in on a device, it evaluates the detection rule for each assigned application.&nbsp;</p>



<p class="wp-block-paragraph">If the rule returns a positive result, indicating that the application is successfully detected, IME marks it as installed and moves on. It does not look at the version of the .intunewin file and does not compare timestamps or file hashes.&nbsp;</p>



<p class="wp-block-paragraph">The only thing that matters at that point is whether the detection condition is met on the local machine.&nbsp;</p>



<p class="wp-block-paragraph">So, if your detection rule checks for the presence of a registry key or a file path that already exists on the device because version 1.0 is installed, Intune returns “Installed” and does nothing else.&nbsp;</p>



<p class="wp-block-paragraph">There is a chance that the deployment with the updated .intunewin file will reach some users.&nbsp;</p>



<p class="wp-block-paragraph">However, these are the users who have not yet had the chance to install version 1.0, and if you change the .intunewin file before that happens, those users will receive version 2.0.&nbsp;</p>



<p class="wp-block-paragraph">In this case, you will have a bit of a headache because what happens to the detection method?&nbsp;</p>



<p class="wp-block-paragraph">If both version 1.0 and 2.0 are successfully detected, it means there is no way to export a report that says which version is installed on each machine. If the detection is different, users who receive the 2.0 .intunewin file will appear as “Failed” in Intune because the detection method will not work.</p>



<h2 class="wp-block-heading">How to Trigger the Update?</h2>



<p class="wp-block-paragraph">If you continue to update the .intunewin file instead of creating a new deployment, the fix is quite simple: you need to change the detection rule to reflect something specific to the new version.&nbsp;</p>



<p class="wp-block-paragraph">This gives IME a condition that is not yet satisfied on devices running the old version, causing it to treat the app as not installed and kick off the installation process.&nbsp;</p>



<p class="wp-block-paragraph">In practice, this usually means that if you detect it using a registry value, update the version string your rule is looking for, or if you use an MSI product code, use the new GUID that comes with the updated installer.&nbsp;</p>



<p class="wp-block-paragraph">If you are detecting a file, you can point to a file or path that only exists in the new version, or you can check on the file version itself to see if no new files are placed in the updated .intunewin file.&nbsp;</p>



<p class="wp-block-paragraph">Once the <a href="https://www.getpackit.com/blog/intune-win32-app-troubleshooting/">detection rule</a> change is saved and the devices check in, IME evaluates the rule, finds it unsatisfied on the machines running the old version, and queues the installation, after which the new .intunewin file is downloaded and executed.&nbsp;</p>



<p class="wp-block-paragraph">It is worth mentioning that if this is done, Intune will trigger the installation of the updated package on top of the old package (if your device already had it installed).&nbsp;</p>



<p class="wp-block-paragraph">If the old package is an MSI or EXE, you rely fully on the vendor logic. If your package is a complex script, you need to rely on the logic defined in your script.</p>



<p class="wp-block-paragraph">However, keep in mind that Intune has a mechanism that prevents applications from being installed if they fail more than three times.&nbsp;</p>



<p class="wp-block-paragraph">If an application fails three times, IME enters a cooldown period before it tries again. There is a lot to discuss in this area, so I suggest you check out the separate article <a href="https://www.advancedinstaller.com/intune-application-installation-retries-grs.html" target="_blank" rel="noopener">Intune Application Retries and GRS</a> to better understand the mechanics behind it.</p>



<h2 class="wp-block-heading">The Cleaner Approach</h2>



<p class="wp-block-paragraph">Regardless of whether you have a small or large infrastructure, the best approach is creating the new version as a separate application entry in Intune entirely rather than editing the existing one.&nbsp;</p>



<p class="wp-block-paragraph">This results in a clean deployment object that you can test against a small group first, validate, and then expand.&nbsp;</p>



<p class="wp-block-paragraph">You can also use the old version as a prerequisite or set the old deployment group as an exclusion on the new one, which prevents any device from accidentally receiving both versions at the same time.&nbsp;</p>



<p class="wp-block-paragraph">Once the rollout is complete and you have confirmed that the new version is installed, you can retire the old application in Intune and clean up.</p>



<div class="wp-block-custom-admonition-note admonition admonition-note"><div class="admonition-iconWrap" aria-hidden="true"><span class="admonition-icon"><svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.3799 3H3.37988V19.6816L12.6982 29H29.3799V31H11.8701L1.37988 20.5098V3C1.37988 1.9 2.27988 1 3.37988 1H29.3799C30.4799 1 31.3799 1.9 31.3799 3V29C31.3799 30.1 30.4799 31 29.3799 31V3Z" fill="white"/><path d="M25.7197 5.89014C26.272 5.89014 26.7197 6.33785 26.7197 6.89014C26.7197 7.44242 26.272 7.89014 25.7197 7.89014H7.04004C6.48775 7.89014 6.04004 7.44242 6.04004 6.89014C6.04004 6.33785 6.48775 5.89014 7.04004 5.89014H25.7197Z" fill="white"/><path d="M25.7197 11.9102C26.272 11.9102 26.7197 12.3579 26.7197 12.9102C26.7197 13.4624 26.272 13.9102 25.7197 13.9102H7.04004C6.48775 13.9102 6.04004 13.4624 6.04004 12.9102C6.04004 12.3579 6.48775 11.9102 7.04004 11.9102H25.7197Z" fill="white"/><path d="M25.7197 17.9399C26.272 17.9399 26.7197 18.3877 26.7197 18.9399C26.7197 19.4922 26.272 19.9399 25.7197 19.9399H11.04C10.4878 19.9399 10.04 19.4922 10.04 18.9399C10.04 18.3877 10.4878 17.9399 11.04 17.9399H25.7197Z" fill="white"/><path d="M25.7197 23.96C26.272 23.96 26.7197 24.4077 26.7197 24.96C26.7197 25.5122 26.272 25.96 25.7197 25.96H17.04C16.4878 25.96 16.04 25.5122 16.04 24.96C16.04 24.4077 16.4878 23.96 17.04 23.96H25.7197Z" fill="white"/><path d="M3.37988 30.9998H8.86988L1.37988 23.5098V28.9998C1.37988 30.0998 2.27988 30.9998 3.37988 30.9998Z" fill="white"/></svg></span></div><div class="admonition-body"><div class="admonition-content">
<p class="wp-block-paragraph">Be aware that most vendor installers will not allow two versions to run simultaneously.</p>
</div></div></div>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">The key takeaway is this: the `.intunewin` file is just the payload. Intune&#8217;s decision on whether to deliver that payload is driven entirely by the detection rule.&nbsp;</p>



<p class="wp-block-paragraph">Swap the file without touching the rule, and nothing changes for devices that already have the app installed. Change the rule to reflect the new version, and the update rolls out on the next check-in cycle.</p>



<p class="wp-block-paragraph">It is one of those behaviors that makes complete sense once you understand how IME evaluates apps end to end, which is exactly why we covered that foundation in the earlier articles before getting here.</p>



<h2 class="wp-block-heading">Final Takeaways</h2>



<ul class="wp-block-list">
<li>When the Intune Management Extension (IME) checks in on a device, it evaluates the detection rule for each assigned application</li>



<li>If the rule returns a positive result, IME marks the application as installed and moves on. If your detection rule checks for the presence of a registry key or a file path that already exists on the device because version 1.0 is installed, Intune sees “Installed” and does nothing further</li>



<li>The fix is simple: you need to change the detection rule to reflect something specific to the new version</li>



<li>Whether you have a small or large infrastructure, the best approach is to create the new version as a separate application entry in Intune instead of editing the existing one</li>



<li>You can also use the old version as a prerequisite or set the old deployment group as an exclusion on the new one</li>
</ul>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Troubleshooting Win32 applications in Microsoft Intune</title>
		<link>https://www.getpackit.com/blog/intune-win32-app-troubleshooting/</link>
		
		<dc:creator><![CDATA[Horatiu Vladasel]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 07:25:49 +0000</pubDate>
				<category><![CDATA[Intune]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=930066</guid>

					<description><![CDATA[Troubleshooting Win32 applications in Microsoft Intune can sometimes feel complex, especially when deployments fail without clear error messages in the Intune portal.&#160; Fortunately, the Intune Management Extension (IME) provides detailed client-side logging that helps understand exactly where an application deployment is failing. The IME service logs every stage of the Win32 deployment workflow, including content [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Troubleshooting Win32 applications in Microsoft Intune can sometimes feel complex, especially when deployments fail without clear error messages in the Intune portal.&nbsp;</p>



<p class="wp-block-paragraph">Fortunately, the <strong>Intune Management Extension</strong> (IME) provides detailed client-side logging that helps understand exactly where an application deployment is failing.</p>



<p class="wp-block-paragraph">The IME service logs every stage of the Win32 deployment workflow, including content download, decryption, installation, and compliance reporting. Understanding this client-side process is one of the most effective ways to troubleshoot Intune Win32 app deployments.</p>



<p class="wp-block-paragraph">This guide walks administrators through the entire troubleshooting process for the Intune Win32 app and explains the most important log entries.</p>



<h2 class="wp-block-heading">Understanding the Intune Management Extension Workflow</h2>



<p class="wp-block-paragraph">The Intune Management Extension is responsible for processing Win32 app deployments on managed Windows devices.&nbsp;</p>



<p class="wp-block-paragraph">During deployment, the IME handles:</p>



<ul class="wp-block-list">
<li>Detection rule evaluation&nbsp;</li>



<li>Applicability checks&nbsp;</li>



<li>Content download&nbsp;</li>



<li>Hash verification and decryption&nbsp;</li>



<li>Package extraction&nbsp;</li>



<li>Application installation&nbsp;</li>



<li>Post-install detection&nbsp;</li>



<li>Compliance state reporting&nbsp;</li>
</ul>



<p class="wp-block-paragraph">The primary logs are stored in:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono-NL.ttf" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>C:\ProgramData\Microsoft\IntuneManagementExtension\Logs</textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #6F42C1">C</span><span style="color: #24292E">:\ProgramData\Microsoft\IntuneManagementExtension\Logs</span></span></code></pre></div>



<h2 class="wp-block-heading">Detection Rules Evaluation</h2>



<p class="wp-block-paragraph">Intune Win32 apps use detection logic very similar to the SCCM (MECM/ConfigMgr) application model. Detection rules determine whether an application has already been installed before installation begins.</p>



<p class="wp-block-paragraph">In this example, the detection rule uses an MSI product code. If the product is not detected, the log records:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="102" src="https://www.getpackit.com/wp-content/uploads/2026/07/msi-product-code-check-1024x102.gif" alt="MSI product code checking log in Intune" class="wp-image-930109" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/msi-product-code-check-1024x102.gif 1024w, https://www.getpackit.com/wp-content/uploads/2026/07/msi-product-code-check-300x30.gif 300w, https://www.getpackit.com/wp-content/uploads/2026/07/msi-product-code-check-768x77.gif 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">This indicates the application is not currently installed and deployment should continue.</p>



<p class="wp-block-paragraph">Detection failures are among the most common causes of Win32 deployment issues. Incorrect MSI codes, registry paths, or file detection logic often cause Intune to report a failed deployment, even if the application installs successfully.</p>



<h2 class="wp-block-heading">Check Applicability</h2>



<p class="wp-block-paragraph">After detection rule processing, Intune performs applicability checks against the deployment requirements configured in the Win32 app.</p>



<p class="wp-block-paragraph">The typical log entries include:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="848" height="143" src="https://www.getpackit.com/wp-content/uploads/2026/07/applicability-checking-log.gif" alt="Applicability checking log in Intune" class="wp-image-930104"/></figure>



<p class="wp-block-paragraph">If any requirement fails, the application installation will not proceed.</p>



<p class="wp-block-paragraph">Applicability checks are useful when troubleshooting situations in which applications never begin downloading or installing.</p>



<h2 class="wp-block-heading">Content Download</h2>



<p class="wp-block-paragraph">When applicability checks succeed, the Intune client starts downloading the Win32 package content.</p>



<p class="wp-block-paragraph">Downloaded content first arrives in the<strong> Incoming folder</strong> as an encrypted .bin file:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono-NL.ttf" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>C:\Program Files (x86)\Microsoft Intune Management Extension\Content\Incoming</textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #6F42C1">C</span><span style="color: #24292E">:\Program </span><span style="color: #6F42C1">Files</span><span style="color: #24292E"> (x86)\Microsoft Intune Management Extension\Content\Incoming</span></span></code></pre></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="896" height="115" src="https://www.getpackit.com/wp-content/uploads/2026/07/package-download-log.png" alt="Win32 package content download log" class="wp-image-930110" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/package-download-log.png 896w, https://www.getpackit.com/wp-content/uploads/2026/07/package-download-log-300x39.png 300w, https://www.getpackit.com/wp-content/uploads/2026/07/package-download-log-768x99.png 768w" sizes="(max-width: 896px) 100vw, 896px" /></figure>



<p class="wp-block-paragraph">The Incoming folder serves as a temporary download location before further processing begins.</p>



<p class="wp-block-paragraph">After the encrypted package has finished downloading, the IME moves the content into the <strong>Staging folder</strong>.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono-NL.ttf" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono-NL,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#fff;display:none;background-color:#24292e" aria-label="Copy" data-copied-text="Copied!" data-has-text-button="textSimple" data-inside-header-type="none" aria-live="polite" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>C:\Program Files (x86)\Microsoft Intune Management Extension\Content\Staging</textarea></pre><span class="cbp-btn-text">Copy</span></span><pre class="shiki github-light" style="background-color: #fff" tabindex="0"><code><span class="line"><span style="color: #6F42C1">C</span><span style="color: #24292E">:\Program </span><span style="color: #6F42C1">Files</span><span style="color: #24292E"> (x86)\Microsoft Intune Management Extension\Content\Staging</span></span></code></pre></div>



<p class="wp-block-paragraph">Inside this folder, the package appears as a ZIP file:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="45" src="https://www.getpackit.com/wp-content/uploads/2026/07/unzip-package-content-1024x45.gif" alt="Unzipping package content log in Intune" class="wp-image-930111" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/unzip-package-content-1024x45.gif 1024w, https://www.getpackit.com/wp-content/uploads/2026/07/unzip-package-content-300x13.gif 300w, https://www.getpackit.com/wp-content/uploads/2026/07/unzip-package-content-768x34.gif 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Unzipping package content log in Intune</figcaption></figure>



<p class="wp-block-paragraph">This stage prepares the content for hash verification and decryption.</p>



<p class="wp-block-paragraph">After decryption completes, the IME extracts the application files into the IME Cache folder.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="33" src="https://www.getpackit.com/wp-content/uploads/2026/07/ime-content-extraction-1024x33.gif" alt="IME Cache folder content extraction log" class="wp-image-930106" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/ime-content-extraction-1024x33.gif 1024w, https://www.getpackit.com/wp-content/uploads/2026/07/ime-content-extraction-300x10.gif 300w, https://www.getpackit.com/wp-content/uploads/2026/07/ime-content-extraction-768x25.gif 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The extracted installation files are now ready for execution.</p>



<p class="wp-block-paragraph">Once extraction is complete, temporary content in the Staging folder is automatically removed. This cleanup helps to reduce unnecessary disk usage on the client device.</p>



<h2 class="wp-block-heading">Application Installation</h2>



<p class="wp-block-paragraph">The next phase is the actual application installation.</p>



<p class="wp-block-paragraph">During this stage, Intune:</p>



<ul class="wp-block-list">
<li>Sets the installation working directory&nbsp;</li>



<li>Launches the installer&nbsp;</li>



<li>Tracks process IDs&nbsp;</li>



<li>Monitors timeout values&nbsp;</li>



<li>Collects installation results&nbsp;</li>
</ul>



<p class="wp-block-paragraph">Example log entries include:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="996" height="250" src="https://www.getpackit.com/wp-content/uploads/2026/07/intune-app-install.png" alt="Intune App installation log" class="wp-image-930107" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/intune-app-install.png 996w, https://www.getpackit.com/wp-content/uploads/2026/07/intune-app-install-300x75.png 300w, https://www.getpackit.com/wp-content/uploads/2026/07/intune-app-install-768x193.png 768w" sizes="(max-width: 996px) 100vw, 996px" /><figcaption class="wp-element-caption">Intune App installation log</figcaption></figure>



<p class="wp-block-paragraph">If the installation fails, administrators should focus on:</p>



<ul class="wp-block-list">
<li>Incorrect install commands&nbsp;</li>



<li>Missing silent switches&nbsp;</li>



<li>Installer exit codes&nbsp;</li>



<li>Timeout settings&nbsp;</li>



<li>SYSTEM context compatibility</li>
</ul>



<p class="wp-block-paragraph">For EXE and MSI installers, we recommend setting log parameters. If the app is wrapped with PSADT, the default log directory should be &#8220;C:\Windows\Logs\Software&#8221;.</p>



<p class="wp-block-paragraph">You can also check out this article: <a href="https://www.advancedinstaller.com/top-windows-installer-package-errors.html" target="_blank" rel="noopener">Top 10 Windows Installer Package Errors and How to Fix Them</a>.&nbsp;</p>



<h2 class="wp-block-heading">Detection Rules After Installation</h2>



<p class="wp-block-paragraph">Once installation is complete, Intune reruns the detection rules to confirm the application installed successfully.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="108" src="https://www.getpackit.com/wp-content/uploads/2026/07/intune-detection-rules-1024x108.gif" alt="Intune detection rules after installing" class="wp-image-930108" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/intune-detection-rules-1024x108.gif 1024w, https://www.getpackit.com/wp-content/uploads/2026/07/intune-detection-rules-300x32.gif 300w, https://www.getpackit.com/wp-content/uploads/2026/07/intune-detection-rules-768x81.gif 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">This final detection determines whether Intune reports the deployment as successful.</p>



<p class="wp-block-paragraph">If the installer succeeds but detection fails, Intune may incorrectly display the deployment as failed.</p>



<h2 class="wp-block-heading">Compliance State Reporting</h2>



<p class="wp-block-paragraph">After successful detection, the client sends compliance state information back to the Intune cloud service.</p>



<p class="wp-block-paragraph">Example entries include:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="37" src="https://www.getpackit.com/wp-content/uploads/2026/07/compliance-state-intune-1024x37.gif" alt="Compliance state to Intune cloud service" class="wp-image-930105" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/compliance-state-intune-1024x37.gif 1024w, https://www.getpackit.com/wp-content/uploads/2026/07/compliance-state-intune-300x11.gif 300w, https://www.getpackit.com/wp-content/uploads/2026/07/compliance-state-intune-768x27.gif 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Once the state message is processed, administrators can view the final installation status in the Intune portal.</p>



<p class="wp-block-paragraph">If enabled, users may receive a toast notification confirming successful application installation.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Troubleshooting Intune Win32 apps is much easier once administrators understand the IME client-side workflow.&nbsp;</p>



<p class="wp-block-paragraph">The Intune Management Extension fully logs every deployment stage, including detection rules and applicability checks to content download, decryption, installation, and compliance reporting.</p>



<p class="wp-block-paragraph">Administrators can isolate where deployments are failing and resolve issues more quickly by carefully reviewing IME logs and understanding the process behind them.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Introducing the PacKit Package Manifest</title>
		<link>https://www.getpackit.com/blog/introducing-packit-package-manifest/</link>
		
		<dc:creator><![CDATA[Bogdan Mitrache]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 09:27:22 +0000</pubDate>
				<category><![CDATA[PacKit]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=3850</guid>

					<description><![CDATA[Today we’re introducing the PacKit Package Manifest, an open format used to describe Windows application packages for deployment platforms such as Microsoft Intune and Configuration Manager, for now. When packaging applications, important information is often spread across multiple systems: As packages evolve, keeping all of this information synchronized becomes increasingly difficult. The PacKit Package Manifest, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Today we’re introducing the PacKit Package Manifest, an open format used to describe Windows application packages for deployment platforms such as Microsoft Intune and Configuration Manager, for now.</p>



<p class="wp-block-paragraph">When packaging applications, important information is often spread across multiple systems:</p>



<ul class="wp-block-list">
<li>Installer files</li>



<li>Detection rules</li>



<li>Installation and uninstall commands</li>



<li>Deployment requirements</li>



<li>Documentation (Word, Excel, SharePoint, etc…)</li>
</ul>



<p class="wp-block-paragraph">As packages evolve, keeping all of this information synchronized becomes increasingly difficult.</p>



<p class="wp-block-paragraph">The PacKit Package Manifest, aka fragment, addresses this problem by storing package metadata directly alongside the package source, in a folder called <strong>“.packit”. </strong>You can create this folder using the free edition of PacKit or the free <a href="https://github.com/Caphyon/open-package-manifest" rel="nofollow noopener" target="_blank">PowerShell module</a>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="916" height="611" src="https://www.getpackit.com/wp-content/uploads/2026/07/image-4.png" alt="" class="wp-image-3853" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/image-4.png 916w, https://www.getpackit.com/wp-content/uploads/2026/07/image-4-300x200.png 300w, https://www.getpackit.com/wp-content/uploads/2026/07/image-4-768x512.png 768w" sizes="(max-width: 916px) 100vw, 916px" /></figure>



<p class="wp-block-paragraph">The manifest acts as a single source of truth for the package and contains information such as:</p>



<ul class="wp-block-list">
<li>Application identity and publisher</li>



<li>Installer configuration</li>



<li>Silent installation parameters</li>



<li>Uninstall commands</li>



<li>Detection methods</li>



<li>Platform requirements</li>



<li>Additional deployment metadata</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://www.getpackit.com/wp-content/uploads/2026/07/image-5-1024x683.png" alt="" class="wp-image-3854" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/image-5-1024x683.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/07/image-5-300x200.png 300w, https://www.getpackit.com/wp-content/uploads/2026/07/image-5-768x512.png 768w, https://www.getpackit.com/wp-content/uploads/2026/07/image-5.png 1104w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">PowerShell PacKit Module</h2>



<p class="wp-block-paragraph">Although the manifest is currently used by PacKit, it is intentionally stored as an open format within the package structure, 100% under your control via de free PowerShell Module &#8211; <a href="https://github.com/Caphyon/open-package-manifest" rel="nofollow noopener" target="_blank">https://github.com/Caphyon/open-package-manifest</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="140" src="https://www.getpackit.com/wp-content/uploads/2026/07/image-3-1024x140.png" alt="" class="wp-image-3852" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/image-3-1024x140.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/07/image-3-300x41.png 300w, https://www.getpackit.com/wp-content/uploads/2026/07/image-3-768x105.png 768w, https://www.getpackit.com/wp-content/uploads/2026/07/image-3.png 1093w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">This means the same package definition can be consumed by:</p>



<ul class="wp-block-list">
<li>PowerShell automation</li>



<li>CI/CD pipelines</li>



<li>Intune deployment workflows</li>



<li>Configuration Manager integrations</li>



<li>WinGet publishing tools</li>



<li>Internal application repositories</li>
</ul>



<p class="wp-block-paragraph">The goal is to make package information portable, version-controlled, and accessible from any environment.<br></p>



<h2 class="wp-block-heading">In-house Developers</h2>



<p class="wp-block-paragraph"><br>Do you have in-house developers who package the apps without talking to admins? Just ask them to generate a .”packit” package manifest next to their setup and your Intune admins will have all they need to automate their deployment.<br><br>They can use the <a href="https://github.com/Caphyon/open-package-manifest" rel="nofollow noopener" target="_blank">PowerShell PacKit module</a> to build it no matter what tool they used to build their MSI or EXE setup.</p>



<h2 class="wp-block-heading">Watch the webinar recording to learn more about the Open Package Manifest (OPM)</h2>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Webinar: Introducing The Open Package Manifest for Intune &amp; SCCM Deployment | PacKit 3.0" width="800" height="450" src="https://www.youtube.com/embed/ZQJu_W6bPME?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Looking forward</h2>



<p class="wp-block-paragraph">This is only the first step.</p>



<p class="wp-block-paragraph">By keeping package definitions in a structured, portable format, organizations gain greater control over their application lifecycle and open the door to richer automation scenarios in the future.</p>



<p class="wp-block-paragraph">We look forward to seeing what the community builds around the <strong>.packit</strong> package manifest.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Win32 App Deployment in Intune Process Explained</title>
		<link>https://www.getpackit.com/blog/win32-app-deployment-intune-process/</link>
		
		<dc:creator><![CDATA[Alex Marin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 06:23:53 +0000</pubDate>
				<category><![CDATA[Intune]]></category>
		<guid isPermaLink="false">https://getpackitstg.wpenginepowered.com/?p=3830</guid>

					<description><![CDATA[When you deploy a Win32 Application in Intune, you assume the process is as simple as pushing.&#160; Intune sends the app, the device installs it, and that’s where the story ends. However, the actual behavior is not as simple as you might think, so understanding it can save you from future headaches.&#160; So let’s jump [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When you deploy a Win32 Application in Intune, you assume the process is as simple as pushing.&nbsp;</p>



<p class="wp-block-paragraph">Intune sends the app, the device installs it, and that’s where the story ends. However, the actual behavior is not as simple as you might think, so understanding it can save you from future headaches.&nbsp;</p>



<p class="wp-block-paragraph">So let’s jump into the article and learn about the behavior of the Win32 applications.</p>



<h2 class="wp-block-heading">How Win32 App Installation Works in Intune</h2>



<p class="wp-block-paragraph">When Intune evaluates a Win32 app on a device, it follows a structured sequence managed by the <a href="https://learn.microsoft.com/en-us/intune/device-management/tools/management-extension-windows" rel="nofollow noopener" target="_blank">Intune Management Extension (IME)</a>.&nbsp;</p>



<p class="wp-block-paragraph">The <strong>Intune Management Extension</strong> is not something found natively on every Windows OS. When the device is enrolled into Intune during the AutoPilot phase, Intune checks if the device has any policies to be applied.&nbsp;</p>



<p class="wp-block-paragraph">The MDM service then sends a command to download and install the IME, which happens silently in the background during the<strong> Enrollment Status Page</strong> (ESP) and is listed as <em>IntuneManagementExtension </em>under Services in the Task Manager.&nbsp;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1022" height="636" src="https://www.getpackit.com/wp-content/uploads/2026/07/image-2.png" alt="" class="wp-image-3833" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/image-2.png 1022w, https://www.getpackit.com/wp-content/uploads/2026/07/image-2-300x187.png 300w, https://www.getpackit.com/wp-content/uploads/2026/07/image-2-768x478.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></figure>



<p class="wp-block-paragraph">The IME installs the following features:</p>



<ul class="wp-block-list">
<li>PowerShell scripts</li>



<li>Remediations</li>



<li>Discovery scripts for custom compliance</li>



<li>Win32 apps</li>



<li>Endpoint analytics</li>



<li>Remote Help</li>



<li>Managed Installers in Intune</li>



<li>Update Windows BIOS using configuration MDM policy</li>
</ul>



<p class="wp-block-paragraph">In terms of the sequence that IME follows, the unpopular but logical first step is to check if the application is already present on the device, which means that the Detection runs first. If this is already present, then there is no point in running an installer for software that’s already installed. If the detection rule is met, Intune marks the app as Installed in Intune and stops. During this stage, no installation command is executed and no requirement rules are evaluated.&nbsp;</p>



<p class="wp-block-paragraph">If the app is not detected, IME will then check the requirement rules. This is logical because we now need to evaluate the rules and check if any custom scripts, registry checks, disk space requirements, etc., are needed for the application’s installation. If any of the requirements are not met, the installation will stop.</p>



<p class="wp-block-paragraph">The third step is to finally run the installation command. During this phase, the IME waits for the execution&#8217;s output code within a specific time frame.</p>



<p class="wp-block-paragraph">Once the installation is complete, it is time to run the detection again to see if the installation was successful. This determines whether the app ends up marked as Installed or Failed in the portal.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="447" src="https://www.getpackit.com/wp-content/uploads/2026/07/image-1024x447.png" alt="" class="wp-image-3831" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/image-1024x447.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/07/image-300x131.png 300w, https://www.getpackit.com/wp-content/uploads/2026/07/image-768x335.png 768w, https://www.getpackit.com/wp-content/uploads/2026/07/image.png 1307w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">This four-step flow is why a common scenario trips people up: if you create a new version of the app and deploy it, but the detection rule matches the old version that is already on the device, Intune will consider the application as installed and skip the whole process altogether.&nbsp;</p>



<p class="wp-block-paragraph">Even worse, your new application will be marked as Installed in Intune, which will make identification even more difficult.&nbsp;</p>



<p class="wp-block-paragraph">This is why it is important to think carefully about what your detection rule is actually checking. If you use a simple rule such as a presence of a registry key or folder without validating the version number, it will match both old and new installations equally. So, if you want Intune to distinguish between versions, your detection logic needs to reflect that.</p>



<p class="wp-block-paragraph">Also, Intune distinguishes between “available” apps and “required” apps. Even if you update an app marked as available but the user has already installed the previous version, Intune will mark it as installed without actually pushing the new version.&nbsp;</p>



<p class="wp-block-paragraph">What is the solution? Have an updated version of the app as required, but include a requirement rule (old version must be present), and then deploy it to all devices or the specific group that was initially targeted by the &#8220;Available&#8221; app.&nbsp;</p>



<p class="wp-block-paragraph">Packaging tools that allow you to fine-tune detection scripts and requirement rules make this much easier to get right from the start.</p>



<p class="wp-block-paragraph"><a href="https://www.getpackit.com/">PacKit</a>, for example, is built around this kind of precision and lets you define exactly what constitutes a valid installation, ensuring that your deployment logic holds up in practice.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="690" src="https://www.getpackit.com/wp-content/uploads/2026/07/image-1-1024x690.png" alt="" class="wp-image-3832" srcset="https://www.getpackit.com/wp-content/uploads/2026/07/image-1-1024x690.png 1024w, https://www.getpackit.com/wp-content/uploads/2026/07/image-1-300x202.png 300w, https://www.getpackit.com/wp-content/uploads/2026/07/image-1-768x517.png 768w, https://www.getpackit.com/wp-content/uploads/2026/07/image-1.png 1410w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Conclusion</h3>



<p class="wp-block-paragraph">Intune’s Win32 app deployment follows a strict IME‑driven sequence where detection, requirements, installation, and post‑detection determine the final outcome.&nbsp;</p>



<p class="wp-block-paragraph">Because Intune always evaluates detection first, poorly designed detection logic can cause new versions to be skipped entirely and falsely marked as installed. Real-world application deployment requires precise packaging and version-aware detection rules to be reliable and predictable.</p>



<h3 class="wp-block-heading">Final Takeaways</h3>



<ul class="wp-block-list">
<li>When Intune evaluates a Win32 app on a device, it uses a structured sequence managed by the Intune Management Extension (IME)</li>



<li>When the device is enrolled in Intune during the AutoPilot phase, Intune determines whether any policies should be applied. During the ESP, the MDM service sends a command to download and install the IME, which is then listed as IntuneManagementExtension under Services in the Task Manager.</li>
</ul>



<p class="wp-block-paragraph">Here&#8217;s the typical four-step workflow:</p>



<ul class="wp-block-list">
<li>Check to see if the application is already installed on the device, in which case the Detection will run first. If this is already present, there is no point in running an installer for previously installed software</li>



<li>If the app is not detected, IME will check the requirement rules, and if any of them are not met, the installation will terminate</li>



<li>Run the installation command. The IME waits for the execution&#8217;s output code within a specific time frame</li>



<li>Run the detection again to ensure that the installation was successful, as this determines whether the app is marked as &#8220;Installed&#8221; or &#8220;Failed&#8221; in the portal</li>
</ul>



<p class="wp-block-paragraph">The Solution:</p>



<ul class="wp-block-list">
<li>Have an updated version of the app as needed, but include a requirement rule (the old version must be present), and then deploy it to all devices or the specific group that was originally targeted by the &#8220;Available&#8221; app</li>



<li>Use PacKit, which is built around this level of precision and allows you to define exactly what constitutes a valid installation, ensuring that your deployment logic works in practice</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
