SvRooij.Winget-Intune.Cli
0.7.0-alpha0007
See the version list below for details.
dotnet tool install --global SvRooij.Winget-Intune.Cli --version 0.7.0-alpha0007
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local SvRooij.Winget-Intune.Cli --version 0.7.0-alpha0007
#tool dotnet:?package=SvRooij.Winget-Intune.Cli&version=0.7.0-alpha0007&prerelease
nuke :add-package SvRooij.Winget-Intune.Cli --version 0.7.0-alpha0007
Winget Intune packager CLI
Take any (just msi installers for now) app from winget and upload it to Intune in minutes.
- Downloading the installer and the logo
- Creating an
intunewin
file automatically - Generating the needed script information
- Publish the app to Intune.
This application is Windows only and requires Dotnet 7 to be installed on your computer. It's a beta application, so please report any issues you find.
Some commands run the winget
in the background and are thus Windows-only, make sure you have the App Installer installed on your computer if you want to use these commands.
The package
and publish
commands are cross-platform, and should work on any platform that supports dotnet 7. These commands no longer use the winget executable, which also means any other sources than winget
are no longer supported.
The msi
command is still windows only, as it uses the Microsoft.Deployment.WindowsInstaller
package.
Installing
This package can be downloaded as a dotnet tool. Make sure you have Dotnet 7 installed on your computer. I'm working to get a code signing certificate, but for now you might have to configure an exception on your computer to run unsigned code.
# Install dotnet 7 sdk (or the way specific for your platform)
winget install --id Microsoft.DotNet.SDK.7 --source winget
# Add the nuget feed, if that is not already done
dotnet nuget add source https://api.nuget.org/v3/index.json --name nuget.org
# This command will install the tool
dotnet tool install --global Svrooij.Winget-Intune.Cli
# or to update to the latest version
dotnet tool update --global SvRooij.Winget-Intune.Cli
Beta application
This is a beta application, it's not yet ready for production use. I'm still working on it, and I'm looking for feedback. If you found a bug please create an issue, if you have questions or want to share your feedback, check out the discussions page.
Commands
The CLI has several commands, try them out yourself.
Description:
winget-intune by @svrooij allows you to package any winget app for Intune
Usage:
winget-intune [command] [options]
Options:
--version Show version information
-?, -h, --help Show help and usage information
Commands:
package <packageId> Package an app for Intune (cross platform)
publish <packageId> Publish a packaged app to Intune (cross platform)
about Information about this package and it's author (cross platform)
install <packageId> Installs or upgrades a package (Windows-only)
check <packageId> Check if a specific version in installed (Windows-only)
info <packageId> Show package info as json (Windows-only)
msi <msiFile> Extract info from MSI file (Windows-only)
Package
You should definitely try the package
command. as it's the most important one. Package an app from winget as an intunewin
file, ready for uploading to intune.
You can also expect a detection.ps1
file, that you should configure to be used as detection script in Intune, provided it's not a MSI installer, in that case you can find the detection information in the readme.
It will also write a app.json
file with all the information about the app, for automation purposes.
winget-intune package {PackageId} [--version {version}] [--source winget] --package-folder {PackageFolder}
The
packageId
is case sensitive, so make sure you use the correct casingwill be matches against any package in the open source index. Tip: Copy it from the result of thewinget search {name}
command.
Upon downloading the installer, the SHA256 hash is checked against the one in the winget
manifest, to make sure you won't package a tampered installer.
The packaging command uses an open-source & cross-platform implementation of the Windows-only & closed source content-prep-tool, to allow cross-platform building of the packages. This new implementation is available as a dotnet library and a PowerShell module, so if you're into Intune packaging, check it out.
Publish
The publish
command will upload the intunewin
file to Intune. You'll need to run the package command first.
Not all packages will work for publishing, you can always try to manually upload the intunewin
file to Intune.
# This app uses the built-in windows authentication, this will trigger a login prompt (or do sso).
winget-intune publish {PackageId} --package-folder {PackageFolder} --tenant {TenantId} --username {Username}
# You can also provide a token, this is useful for automation.
winget-intune publish {PackageId} --package-folder {PackageFolder} --token {Token}
Assignement and categories
You can also assign the app to a group, and set the categories.
# Add --category "Productivity" --category "Utilities" to the command to set the categories (use the exact name!)
winget-intune publish {PackageId} ... --category "Productivity" --category "Utilities"
# Add --available "group-guid" to make the app available to a group (use the guid of the group)
# Add --available "allusers" to make the app available to all users
# Instead of --available you can also use --required to make the app required for the group
# Or if you want to remove the app for that group, use --uninstall
winget-intune publish {PackageId}... --required "3bac8336-623f-46bf-bcab-b5c61e3e5b7a" --required "allusers"
winget-intune publish {PackageId}... --uninstall "3bac8336-623f-46bf-bcab-b5c61e3e5b7a" --uninstall "allusers"
Auto-package
You can also combine the package
and publish
command into one command, this will package the app and publish it to Intune. But this makes debugging harder, so when submitting issues, please don't use this option.
winget-intune publish {PackageId}... --auto-package
Library (soon)
I'm planning to release the actual intune specific code as a separate library, so you can use it in your own projects. This will be released as a separate package.
Contributing
If you want to contribute to this project, please check out the contributing page and the Code of Conduct.
Usefull information
- Blog articles on Intune
- Open-source winget index
- Open-source PowerShell Content Prep
- Closed source Microsoft Win32 Content Prep tool
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
This package has no dependencies.
Version | Downloads | Last updated |
---|---|---|
0.9.1 | 2,634 | 7/30/2024 |
0.9.0 | 779 | 7/25/2024 |
0.8.9 | 1,543 | 6/13/2024 |
0.8.8 | 1,325 | 5/28/2024 |
0.8.7 | 1,073 | 5/25/2024 |
0.8.6 | 1,603 | 5/7/2024 |
0.8.5 | 1,212 | 5/3/2024 |
0.8.4 | 1,879 | 4/24/2024 |
0.8.3 | 1,752 | 4/9/2024 |
0.8.2 | 659 | 4/7/2024 |
0.8.1 | 1,562 | 4/3/2024 |
0.8.0-alpha0008 | 267 | 1/9/2024 |
0.7.0 | 3,001 | 1/3/2024 |
0.7.0-alpha0007 | 373 | 1/2/2024 |
0.7.0-alpha0004 | 336 | 12/29/2023 |
0.6.1-alpha0002 | 262 | 12/27/2023 |
0.6.1-alpha0001 | 389 | 12/21/2023 |
0.6.0 | 915 | 12/21/2023 |
0.6.0-alpha0014 | 303 | 12/1/2023 |
0.6.0-alpha0013 | 245 | 12/1/2023 |
0.6.0-alpha0012 | 454 | 10/17/2023 |
0.6.0-alpha0010 | 380 | 10/4/2023 |
0.6.0-alpha0009 | 3,592 | 9/26/2023 |
0.6.0-alpha0008 | 320 | 9/23/2023 |
0.5.6-alpha0005 | 368 | 9/20/2023 |
0.5.5 | 554 | 9/18/2023 |
0.5.4 | 1,215 | 9/17/2023 |
0.5.3 | 1,691 | 9/17/2023 |
0.5.2 | 768 | 9/5/2023 |
0.5.1 | 612 | 9/1/2023 |
0.5.0 | 602 | 8/29/2023 |
0.4.1 | 514 | 8/22/2023 |
0.4.0 | 647 | 8/17/2023 |
0.3.0 | 2,330 | 8/16/2023 |
0.2.2 | 1,954 | 8/14/2023 |