Índice
O WinTuner é uma ferramenta inovadora desenvolvida por Stephan van Rooij, um MVP Microsoft, que visa facilitar o empacotamento e a implantação de aplicativos de terceiros no Intune.
Este projeto é totalmente open-source, permitindo que os usuários usem e até contribuam para melhorias. Seguindo esse artigo hands-on você conseguirá fazer deploy de apps pelo Wintuner sem qualquer esforço.
Este guia é destinado a profissionais de TI que desejam entender o propósito do WinTuner e aprender a utilizá-lo seguindo as melhores práticas. Abordaremos desde a instalação do módulo e suas dependências, até o empacotamento de programas e métodos de implantação no Intune. Não deixe de acompanhar e apoiar o projeto Wintuner.
O que é o WinTuner?
O WinTuner é um módulo PowerShell open-source que automatiza o processo de empacotamento e implantação de aplicativos de terceiros no Microsoft Intune. Utilizando o Winget, o gerenciador de pacotes da Microsoft, o WinTuner permite buscar, baixar e preparar aplicativos diretamente do repositório oficial ou de fontes customizadas, agilizando tarefas que normalmente exigiriam esforço manual significativo.

Instalando o Módulo WinTuner e suas Dependências
Execute o PowerShell como Administrador e verifique se você está utilizando a versão 5 do PowerShell. Se for o caso, vamos instalar a versão mais recente utilizando o winget. Para isso, basta executar o seguinte comando:
winget install Microsoft.PowerShellCom o Powershell 7 instalado, pode fechar o powershell 5 e execute a versão atualizada como administrador.
Instalando o Módulo WinTuner
Avançando para a próxima etapa da instalação, vamos prosseguir com a instalação do módulo WinTuner. Não pule nenhuma etapa, pois esse módulo é compatível com o PowerShell 7 e é essencial para o funcionamento adequado do WinTuner.
Install-Module -Name WinTuner -Force -AllowClobberAguarde a conclusão da instalação do módulo. Para garantir que os módulos estejam disponíveis na sessão atual do PowerShell, importe-os com o seguinte comando:
Import-Module WinTunerExecute o comando abaixo se você já possuia o modulo instalado e quiser atualizar a última versão.
Update-Module -Name WinTunerPara ver todas as funções disponíveis do WinTuner, execute:
Get-Command -Module WinTuner
Pesquisando pacotes no Wintuner
O WinTuner permite pesquisar pacotes disponíveis no repositório do Winget de forma rápida e eficiente. Exemplo: Pesquisando pelo navegador “Firefox“:
Search-WtWinGetPackage FirefoxO resultado exibe o Package ID, que é a informação necessária. No exemplo abaixo, o Package ID é ‘Mozilla.Firefox’.

Agora que descobriu o Id, vamos avançar para o próximo passo.
Autentique-se e comece a brincadeira
O WinTuner interage com a API Graph, exigindo a obtenção de um token válido para autenticação. Esse token é mantido na sessão e é reutilizado para todos os comandos que demandam autenticação.
Para começar utilize uma conta com privilégios de Administrador, ou seja, Admin Global.
Connect-WtWinTuner -Username "[email protected]" -TestExemplo:
Connect-WtWinTuner -Username "[email protected]" -TestNa primeira autenticação será solicitada permissões e o sua conta deve possuir as permissões solicitadas ou ser Administrador Global.

Depois de autenticado siga para os próximos passos.
Empacotando um Aplicativo
O WinTuner automatiza o processo de empacotamento de aplicativos para o Intune, criando o pacote intunewin a partir do winget.
Entenda o comando abaixo:
New-WtWinGetPackage -PackageId "Id do Pacote" -PackageFolder "Diretório"Preencha o Id do Pacote e o Diretório onde será copiado os pacotes. Exemplo:
New-WtWingetPackage -PackageId 7zip.7zip -PackageFolder C:\Wintuner\AppsAo executar o comando ele realiza todos os arquivos necessários realizar o deploy no intune:
- Baixa o instalador do aplicativo.
- Cria o pacote
.intunewin. - Gera os arquivos de metadados necessários.
Após executar o recomeno, verifique os arquivos baixados, que no meu exemplo estão na pasta C:\Wintuner\Apps\Mozilla.Firefox\130.0.1 e valide se os arquivos estão na pasta.

A vantagem deste processo é a possibilidade de entender melhor os arquivos gerados, que ao meu ver enriquece ainda mais o aprendizado.
Fazendo Deploy no Intune
Existem algumas formas de fazer isso, mas como já aprendemos e utilizamos anteriormente o New-WtWingetPackage, então vamos aproveita-lo e acrescentar apenas o Deploy-WtWin32App no final, conforme o exemplo abaixo.
New-WtWingetPackage -PackageId Mozilla.Firefox -PackageFolder C:\Wintuner\Apps | Deploy-WtWin32AppEste comando faz o upload do pacote para o Intune e cria o aplicativo com as configurações.
Resumindo, você pode executar o comando mencionado para baixar os arquivos e realizar o deploy diretamente no Intune. No entanto, é importante garantir que você esteja autenticado antes de rodar o comando.
Utilizando um script e otimizando o seu tempo.
O tempo pode ser tanto um aliado quanto um adversário para os profissionais de TI. Por isso, é essencial minimizar esforços automatizando processos, e uma maneira eficaz de fazer isso é por meio de scripts. Pensando nisso, desenvolvi um script que simplifica o processo de deploy, exigindo apenas o preenchimento de algumas informações básicas. Isso torna o deploy mais eficiente, reduz a curva de aprendizado e otimiza o seu tempo.
Utilize o script a seguir, salvando-o com o nome j365_wintuner.ps1 ou faça o download diretamente do meu repositório no Github. E lembre-se: para executar o script corretamente, utilize o seguinte comando:
pwsh -ExecutionPolicy Bypass -File .\j365_wintuner.ps1#####################################################
## Jornada365 | Wintuner ####
## jornada365.cloud ####
## Sua jornada começa aqui. ####
## "https://github.com/svrooij/wingetintune" ####
#####################################################
# Configurações personalizáveis
$script:config = @{
Email = "[email protected]"
PackageFolder = "C:\Wintuner\Apps"
PackageIds = @(
"7zip.7zip",
"Microsoft.VisualStudioCode",
"Mozilla.Firefox"
"Microsoft.VCRedist.2015+.x86"
"Microsoft.VCRedist.2015+.x64"
"Microsoft.PowerBI"
"Adobe.Acrobat.Reader.64-bit"
"Google.Chrome"
"AnyDeskSoftwareGmbH.AnyDesk"
"Bitwarden.Bitwarden"
"Notepad++.Notepad++"
)
LogFile = "C:\Wintuner\deployment_log.txt"
}
# Função para logging
function Write-Log {
param(
[Parameter(Mandatory=$true)]
[string]$Message,
[ValidateSet("INFO", "WARN", "ERROR", "DEBUG")]
[string]$Level = "INFO"
)
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$logMessage = "[$timestamp] [$Level] $Message"
Add-Content -Path $script:config.LogFile -Value $logMessage -ErrorAction SilentlyContinue
Write-Host $logMessage
}
# Função para verificar e instalar o módulo WinTuner
function Ensure-WinTunerModule {
try {
if (-not (Get-Module -ListAvailable -Name WinTuner)) {
Write-Log "Módulo WinTuner não encontrado. Instalando..." "WARN"
Install-Module -Name WinTuner -Force -Scope CurrentUser -ErrorAction Stop
} else {
Write-Log "Módulo WinTuner já está instalado."
}
Import-Module WinTuner -Force -ErrorAction Stop
$currentVersion = (Get-Module WinTuner).Version
$latestVersion = (Find-Module WinTuner).Version
if ($currentVersion -lt $latestVersion) {
Write-Log "Atualizando o módulo WinTuner..." "WARN"
Update-Module -Name WinTuner -Force -ErrorAction Stop
Import-Module WinTuner -Force -ErrorAction Stop
} else {
Write-Log "Módulo WinTuner está na versão mais recente."
}
} catch {
Write-Log "Erro ao gerenciar o módulo WinTuner: $($_.Exception.Message)" "ERROR"
throw
}
}
# Função para conectar ao WinTuner
function Connect-ToWinTuner {
param (
[Parameter(Mandatory=$true)]
[string]$Email
)
try {
$connection = Connect-WtWinTuner -Username $Email -Test -ErrorAction Stop
Write-Log "Conectado ao WinTuner com sucesso."
return $connection
} catch {
Write-Log "Erro ao conectar ao WinTuner: $($_.Exception.Message)" "ERROR"
throw
}
}
# Função para criar e implantar pacotes
function Deploy-Packages {
param (
[Parameter(Mandatory=$true)]
[string[]]$PackageIds,
[Parameter(Mandatory=$true)]
[string]$PackageFolder
)
foreach ($packageId in $PackageIds) {
Write-Log "Processando pacote: $packageId"
try {
$package = New-WtWingetPackage -PackageId $packageId -PackageFolder $PackageFolder -ErrorAction Stop
Write-Log "Pacote criado com sucesso: $($package.Path)"
$deployResult = $package | Deploy-WtWin32App -Verbose -ErrorAction Stop
Write-Log "Resultado do deploy: $($deployResult | ConvertTo-Json -Depth 3 -Compress)"
Write-Log "Pacote $packageId implantado com sucesso."
} catch {
Write-Log "Erro ao implantar o pacote ${packageId}: $($_.Exception.Message)" "ERROR"
Write-Log "Detalhes do erro: $($_ | ConvertTo-Json -Depth 3 -Compress)" "DEBUG"
}
}
}
# Script principal
try {
Write-Log "Iniciando script de implantação..."
Ensure-WinTunerModule
$connection = Connect-ToWinTuner -Email $script:config.Email
Write-Log "Detalhes da conexão: $($connection | ConvertTo-Json -Depth 3 -Compress)" "DEBUG"
Deploy-Packages -PackageIds $script:config.PackageIds -PackageFolder $script:config.PackageFolder
} catch {
Write-Log "Ocorreu um erro crítico: $($_.Exception.Message)" "ERROR"
Write-Log "Stack trace: $($_.ScriptStackTrace)" "DEBUG"
} finally {
# Desconectar ou realizar limpeza, se necessário
# Se existir um comando de desconexão, use-o aqui
# Disconnect-WtWinTuner -ErrorAction SilentlyContinue
Write-Log "Script concluído."
}Confira o Antes e o Depois — foi muito prático realizar o deploy de 11 aplicativos. Basta deixar o script rodando e aproveitar para tomar um café! :)


O WinTuner é uma ferramenta poderosa que facilita e automatiza o gerenciamento de aplicativos via Intune. Com sua integração ao PowerShell e Winget, oferece uma automação robusta, otimizando o tempo e recursos dedicados a tarefas como instalação, atualização e deploy de aplicativos.
Seguindo este guia, você adquiriu o conhecimento essencial para instalar, configurar e utilizar o WinTuner de forma eficiente, além de adotar melhores práticas que garantem uma gestão segura e otimizada dos aplicativos no ambiente Windows. Com exemplos práticos você vai explorar todo o potencial do WinTuner em suas operações diárias.
Você já utilizou o Wintuner e realizou deploy de apps no intune? Compartilhe sua experiência e participe e faça também parte desta jornada.
1 comentário
Excelente artigo, testei e simplifica muito o deploy.. porem tive problemas com o pacote adobe reader 64bits..
Ao realizar via Wintuner para deploy e configurar o app como required, o autopilot dava erro.. apos remover o adobe via Wintuner e configura-lo de forma manual, o erro parou. Ainda nao sei o que pode ter causado esse problema,mas novamente parabéns pelo artigo!!!