Last week Microsoft announced the ability to deploy Win32 apps via Microsoft Intune during Microsoft Ignite. That takes away one of the biggest challenges when looking at modern management and Microsoft Intune. I know that I’m not the first to blog about this subject, but I do think that this subject demands a spot on my blog. Besides that, I’ll show in this post that the configuration looks a lot like deploying apps via ConfigMgr. Not just from the perspective of the configuration options, but also from the perspective of the configuration challenges when the installation contains multiple files. In this post I’ll show the configuration steps, followed by the end-user experience, when deploying a customized Adobe Reader DC app (including the latest patch).
Pre-process Win32 app
The first step in deploying Win32 apps via Microsoft Intune is using the Microsoft Intune Win32 App Packaging Tool to pre-process Win32 apps. Wrap the Win32 app. The packaging tool wraps the application installation files into the .intunewin format. Also, the packaging tool detects the parameters required by Intune to determine the application installation state. After using this tool on apps, it will be possible to upload and assign the apps in the Microsoft Intune console. The following six steps walk through wrapping the Adobe Reader DC app, including some customizations and the latest patch.
1 | Download the Microsoft Intune Win32 App Packaging Tool. In my example C:\Temp; |
2 | Create a folder that contains the Adobe Reader DC installation files (including the latest MSP and the MST that contains the customizations). In my example C:\Temp\AdobeReader; |
3 | Create an installation file that contains the complete installation command and place that file in the directory with the installation files. In my example I created an Install.cmd in C:\Temp\AdobeReader that contains msiexec /i “%~dp0AcroRead.msi” TRANSFORMS=”%~dp0AcroRead.mst” /Update “%~dp0AcroRdrDCUpd1801120063.msp” /qn /L*v c:\InstallReader.log ; |
— | ![]() |
— | Note: This method is similar to an easy method in the ConfigMgr world to make sure that the installation process would look at the right location for the additional files. |
4 | Open a Command Prompt as Administrator and navigate to the location of IntuneWinAppUtil.exe. In my example that means cd \Temp; |
5 | Run IntuneWinAppUtil.exe and provide the following information, when requested
|
— | ![]() |
— | Note: Even though I will use a command file to trigger the installation, it’s important to specify the MSI as setup file. That will make sure that, during the configuration in Microsoft Intune, the information will be preconfigured based on the information of the MSI. |
6 | Once the wrapping is done. The message Done!!! will be shown. In my example a file named AcroRead.intunewin will be created in C:\Temp. |
— | ![]() |
Note: It’s possible to use something like 7-Zip to open the created AcroRead.intunewin file. Besides content, that file contains a Detection.xml file that shows the detected information of the installation file.
Configure Win32 app
Now let’s continue by looking at the actual configuration steps, within Microsoft Intune, to configure the Win32 app. The following 17 steps walk through all the steps to configure the Win32 app, by using the .intunewin file. After configuring the app, make sure to assign the app to a user group.
1 | Open the Azure portal and navigate to Intune > Client apps > Apps to open the Client apps – Apps blade; |
2 | On the Client apps – Apps blade, click Add to open the Add app blade; |
3 | On the Add app blade, select Windows app (Win32) – preview to show the configuration options and select App package file to open the App package file blade. |
4 | ![]() |
5 | Back on the Add app blade, select App information to open the App information blade; |
6 |
Note: The remaining information regarding the Information URL, the Privacy URL, the Developer, the Owner, the Notes and the Logo is optional. |
7 | Back on the Add app blade, select Program to open the Program blade; |
8 | ![]() |
9 | Back on the Add app blade, select Requirements to open the Requirements blade; |
10 |
|
11 | Back on the Add app blade, select Detection rules to open the Detection rules blade; |
12 | On the Detection rules blade, select Manually configure detection rules and click Add to open the Detection rule blade. |
13 | ![]() |
14 | Back on the Detection rules blade, click OK to return to the Add app blade; |
15 | Back on the Add app blade, select Return codes to open the Return codes blade; |
16 | ![]() |
17 | Back on the Add app blade, click Add to actually add app. |
Note: The Intune Management Extension will be used for installing the Win32 app. That also means that the process regarding detection, download and installation, of the Win32 app, can be followed in the IntuneManagementExtension.log file.
End-user experience
Let’s end this post by looking at the end-user experience. The user will receive a notification that changes are required, followed by a notification that a download is in progress, followed by a notification about a successful installation. All three stages are shown below. After the last message, the Start Screen shows the newly installed Adobe Reader DC app. Also, in this case, the Desktop doesn’t show the default desktop icon, which I removed using the customization file (MST).
More information
For more information about the Microsoft Intune Win32 App Packaging Tool, please refer to the GitHub location here.
Hi Peter,
I have tried to follow the exact same steps in an attempt to include a key file. However, the app fails to be deployed from Intune. Do you have any clue what the reason could be for the App deployment to fail? Cheers, Erona
Hi Erona,
Have you looked at the logs of the Intune Management Extensions?
Regards, Peter
Maybe we missed something, after the app updates we are getting notifications this install is failing on clients, those clients which the app is already installed. Do we need to keep the package updated or is there a setting where if it’s already installed it will not try to install again. Any ideas?
Hi Carl,
The detection rule should make sure that the app is detected when it’s already installed.
Regards, Peter
i need to install the application which contains .exe file and two .ini files. Hence i wrap the application with all these three files. However i can see the the ini files are not getting copied in the program files . i assume intunewin push the .ini files while installation but in my case this is not happening . Can somebody help me?
Hi Shirish,
Wrapping the files only makes sure that you can use the files on the device. However, if you don’t have an action that copies the files, or something like that, it will simply be removed again.
Regards, Peter
does anybody had succes creating a intuneapp form teamviewer.exe files?
created a app with intunewinapputil but no luck getting it installed with intune. stays on status installing
adding a teamviewer.msi in intune installed right away. but are subscription doesn’t allow a msi for costum modules. only .exe.
can you help convert the exe to intuneapp?
Hi Mattheas,
Without testing it, I would say that it shouldn’t be an issue. Did you very the logs on the device?
Regards, Peter
Hi Peter,
I did the same steps ,,but i am getting an extra step
Do you want to specify catalog folder (Y/N)?
If I say Y,,then it asks,
“Specify folder name-”
If I say N,,then intuneWin file was created , but at the time of adding app intune wont accept that file.
I am not able to go ahed .
please help
Thanks .
Hi Shalini,
Depending on the app, it should be possible to simply specify N (or bypass by using the full command).
Regards, Peter
Hi Peter,
Thanks for the guide.
I have a quick query please: I have all my files in C:\PDFSetup. I have an installscript.bat file which has the following:
msiexec /i “C:\PDFSetup\PDF1_enu_Setup.msi” TRANSFORMS=”C:\PDFSetup\PDF1_enu_Setup.mst” /qn
Do I need to keep the C:\Temp in the path or can I remove before wrapping in to the .intunewin file? Will it still work if I remove the C:\Temp and replace with:
msiexec /i “PDF1_enu_Setup.msi” TRANSFORMS=”PDF1_enu_Setup.mst” /qn
I noticed you have %~dp0 variable in your script.
Hi Westy,
The %~dp0 variable is a specific batch variable which is often used to refer to the current directory of the running script.That’s an easy method to make the correct referral.
Regards, Peter
All good stuff but you now Scripts ar not supportet by Win32 Apps!
https://docs.microsoft.com/en-us/troubleshoot/mem/intune/software-distribution-best-practices
Unsupported scenario: Deploy scripts or batch files
The Intune service is usually used to deploy .msi or .exe files. Microsoft doesn’t support using Intune to deploy custom scripts or batch files.
Any Win64 Variable is not avalible.
Hi René,
That article is referring to the old Windows PC client.
Regards, Peter
Hi Peter,
You saved my life! I was tired of trying to make a Teamviewer 15 deployment which requires absolute paths for the configuration files and there was no way to get it to work.
I saw your post and I did the test with the installation using a cmd script and the execution paths %~dp0 (I didn’t know about them ngl) and saved me from having to reconfigure all of my clients!
If someone by any chances comes here for the same I quote (.msi, config file and .cmd on the same folder):
msiexec /i “%~dp0TeamViewer_Host.msi” /qn CUSTOMCONFIGID=XXX APITOKEN=XXX SETTINGSFILE=”%~dp0ConfigFile.tvopt”
Thank you very much for your post.
Greetings from Spain,
Enrico.
Thank you for the information Enrico!
Regards, Peter