Instalações do Office LTSC Standard 2021 que antes funcionavam com o Office Deployment Tool passaram a falhar com o erro 0‑2048(0). Veja por que isso acontece e como resolver definitivamente com CMD elevado, caminho correto e scripts à prova de UAC.
Visão geral e sintomas
Em diversos ambientes (organizações sem fins lucrativos, escolas, pequenas empresas e integradores), instalações do Office LTSC Standard 2021 que por anos rodaram sem problemas via Office Deployment Tool (ODT) começaram a quebrar no momento do /configure
com a mensagem “não foi possível encontrar o caminho do arquivo” e o erro 0‑2048(0). Em alguns casos, ao tentar voltar para um build anterior do ODT surgiu o erro 2052(0). Os relatos têm pontos em comum:
- Máquinas novas, recém‑resetadas, sem Office antigo instalado.
- ODT e
configuration.xml
preparados como sempre, mas o comando falha. - Duplo clique em um
.BAT
(sem elevação) tende a falhar; o mesmo comando no Prompt de Comando executado como administrador tende a funcionar. - Há menções a diferenças entre builds do ODT baixados em lugares distintos; ainda assim, a correção que mais resolve é garantir elevação e diretório de trabalho correto.
Diagnóstico rápido
Antes de qualquer ajuste, responda a estas perguntas:
- Você está executando o comando em uma janela de CMD elevada (Executar como administrador)?
setup.exe
econfiguration.xml
estão na mesma pasta e o comando está sendo rodado de dentro dessa pasta?- O nome do XML está correto (por exemplo,
configuration.xml
, sem acentos, sem variações comoconfiguracion.xml
,configuração.xml
ouConfiguration.XML
)? - Se há espaços no caminho, você colocou o caminho entre aspas?
Se alguma resposta for “não”, é muito provável que a correção abaixo resolva.
Solução principal confirmada
Execute o ODT a partir de um Prompt de Comando com privilégios de administrador, já dentro da pasta onde estão setup.exe
e o configuration.xml
:
setup.exe /configure configuration.xml
Por que isso funciona? Quando você eleva via UAC, o processo pode iniciar em outro diretório de trabalho. Se o seu script foi aberto com duplo clique, o ODT perde a referência do XML e retorna exatamente “caminho não encontrado” com o código 0‑2048(0). Rodando dentro da pasta correta (ou usando caminhos absolutos) elimina a ambiguidade.
Variações que também funcionam
Usar caminhos absolutos (entre aspas):
"C:\Pacotes\ODT\setup.exe" /configure "C:\Pacotes\ODT\configuration.xml"
Tornar o .BAT imune a UAC/diretório com pushd
:
@echo off
rem Garante que o diretório de trabalho é o do próprio script
pushd "%~dp0"
start /wait "" "%~dp0setup.exe" /configure "%~dp0configuration.xml"
popd
PowerShell com elevação e diretório controlado:
Start-Process -FilePath ".\setup.exe" -ArgumentList "/configure configuration.xml" -Wait -Verb RunAs
Se quiser PowerShell com caminhos absolutos:
$odt = "C:\ODT\setup.exe"
$xml = "C:\ODT\configuration.xml"
Start-Process -FilePath $odt -ArgumentList "/configure `"$xml`"" -Wait -Verb RunAs
Passo a passo recomendado de ponta a ponta
- Limpeza: reinicie a máquina; desinstale qualquer Office antigo (Painel de Controle > Programas); encerre processos ClickToRun no Gerenciador de Tarefas.
- Crie uma pasta única, por exemplo
C:\ODT\
. - Coloque nessa pasta: o
setup.exe
do ODT e o seuconfiguration.xml
gerado no Office Customization Tool. - Opcional, mas recomendado: faça o pré-download do conteúdo para reduzir variáveis de rede:
setup.exe /download configuration.xml
- Instale a partir de um CMD elevado, já dentro de
C:\ODT\
:setup.exe /configure configuration.xml
- Se for usar script, prefira o padrão com
pushd "%~dp0"
(visto acima) ou caminhos absolutos entre aspas. - Confirme o nome do XML (sem localizações/acentos) e use aspas se houver espaços no caminho.
Exemplos de configuration.xml
para LTSC Standard 2021
Use o Product ID coerente com a sua licença (para LTSC Standard 2021 volume, o mais comum é Standard2021Volume
). Ajuste o idioma conforme necessário.
Exemplo básico online
<Configuration>
<Add OfficeClientEdition="64" Channel="PerpetualVL2021">
<Product ID="Standard2021Volume">
<Language ID="pt-BR" />
</Product>
</Add>
<Display Level="None" AcceptEULA="TRUE" />
<Property Name="AUTOACTIVATE" Value="1" />
<RemoveMSI />
</Configuration>
Exemplo com cache offline
<Configuration>
<Add OfficeClientEdition="64" Channel="PerpetualVL2021" SourcePath="C:\ODT\Source" >
<Product ID="Standard2021Volume">
<Language ID="pt-PT" />
<Language ID="pt-BR" />
</Product>
</Add>
<Display Level="None" AcceptEULA="TRUE" />
<Property Name="AUTOACTIVATE" Value="1" />
<RemoveMSI />
</Configuration>
Depois, faça:
setup.exe /download configuration.xml
setup.exe /configure configuration.xml
Principais causas por trás do 0‑2048(0)
- Diretório de trabalho incorreto: quando o processo é elevado pelo UAC, o script pode abrir em outra pasta, e o ODT não encontra o XML.
- Permissões insuficientes: a instalação precisa de CMD/PowerShell elevados.
- Build do ODT com regressão pontual: trocar de build pode ajudar se houver um bug, mas na maioria dos êxitos relatados o que resolveu foi elevação + diretório correto.
- Nome do XML inconsistente: variações localizadas como
configuracion.xml
(ES) em vez deconfiguration.xml
quebram o comando.
Tabela de “sintoma x causa provável x correção”
Sintoma | Causa provável | Correção prática |
---|---|---|
Erro 0‑2048(0): “não foi possível encontrar o caminho do arquivo” | ODT não achou o configuration.xml por estar em outro diretório | Abrir CMD elevado dentro da pasta do ODT e rodar setup.exe /configure configuration.xml ; ou usar caminhos absolutos entre aspas |
Erro 2052(0) ao tentar build antigo | Regressão pontual ou build desatualizado | Testar outro setup.exe do ODT, mantendo elevação e diretório correto |
Duplo clique no .BAT falha; CMD elevado funciona | UAC muda o diretório de trabalho | Modificar o script para usar pushd "%~dp0" + start /wait e caminhos explícitos |
Instalação falha apenas em contas padrão | Permissão insuficiente para escrever em diretórios de sistema | Executar como Administrador; considerar política de implantação com credenciais elevadas |
Script bulletproof para .BAT
corporativo
Este modelo é “pegar e usar” em pacotes, pendrives ou compartilhamentos. Ele cobre UAC, diretório e espaços no caminho:
@echo off
setlocal enableextensions enabledelayedexpansion
rem --- elevação: se não estiver admin, relança ---
\>nul 2>&1 net session
if not %errorlevel%==0 (
echo Solicitando elevacao de privilegios...
powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
exit /b
)
rem --- trava o diretório no local do script ---
pushd "%~dp0"
rem --- valida arquivos ---
if not exist "%~dp0setup.exe" (
echo ERRO: setup.exe nao encontrado em "%~dp0"
popd & exit /b 1
)
if not exist "%~dp0configuration.xml" (
echo ERRO: configuration.xml nao encontrado em "%~dp0"
popd & exit /b 1
)
rem --- opcional: pre-download do conteudo ---
echo Baixando pacotes (se necessario)...
start /wait "" "%~dp0setup.exe" /download "%~dp0configuration.xml"
if not %errorlevel%==0 (
echo ATENCAO: /download retornou codigo %errorlevel%. Prosseguindo com /configure...
)
rem --- instalacao ---
echo Iniciando instalacao...
start /wait "" "%~dp0setup.exe" /configure "%~dp0configuration.xml"
set RC=%errorlevel%
popd
exit /b %RC%
PowerShell para pipelines e RMM
Se a sua ferramenta de gerenciamento remoto aceita apenas PowerShell, use:
param(
[string]$Base = "C:\ODT",
[string]$Xml = "configuration.xml"
)
\$exe = Join-Path \$Base "setup.exe"
\$cfg = Join-Path \$Base \$Xml
if (-not (Test-Path \$exe)) { throw "setup.exe nao encontrado em \$Base" }
if (-not (Test-Path \$cfg)) { throw "XML nao encontrado: \$cfg" }
Start-Process -FilePath \$exe -ArgumentList "/download `"$cfg`"" -Wait -Verb RunAs
Start-Process -FilePath \$exe -ArgumentList "/configure `"$cfg`"" -Wait -Verb RunAs
Leitura de logs para confirmação
Se ainda falhar, colete evidências nos seguintes locais:
%ProgramData%\Microsoft\ClickToRun\Log\
%temp%\Office\
(arquivos*.log
)
Nos logs, procure termos como path not found, cannot find file, configuration xml. Essas mensagens reforçam que a causa é diretório/caminho e não conteúdo do pacote.
Ajustes finos do configuration.xml
- Product ID correto: para LTSC Standard, o padrão de volume é
Standard2021Volume
. - Canal:
PerpetualVL2021
. - Idiomas:
pt-BR
e/oupt-PT
conforme a base instalada. - SourcePath: uso recomendado quando fizer
/download
para cache local ou em rede. - RemoveMSI: evita conflito com versões MSI antigas.
- AUTOACTIVATE: útil em cenários KMS/MAK, conforme a sua política de licenciamento.
Boas práticas de implantação
- Padronize a pasta (ex.:
C:\ODT\
) e mantenha nelasetup.exe
+configuration.xml
. - Sempre cite caminhos entre aspas quando houver espaços.
- Prefira CMD/PowerShell elevados e valide a elevação no início do script.
- Faça
/download
antecipado em redes com proxy/latência, para reduzir variáveis. - Logue o resultado redirecionando a saída para arquivo em cada execução.
- Automatize com robustez: em RMM/Intune/MECM, aponte o Working Directory para a pasta do pacote ou utilize caminhos absolutos.
Alternativas ao ODT e expectativas realistas
Para o Office LTSC 2021, o método oficial continua sendo o Click‑to‑Run via ODT (mesmo quando usado por Intune ou MECM nos bastidores). Quando alguém pede “um método alternativo ao ODT”, o que de fato resolve é ajustar a forma de invocá‑lo (elevação, diretório, caminhos absolutos e cache offline). Trocar de build do ODT é uma tentativa válida se houver suspeita de regressão, mas não substitui a correção de working directory.
Fluxo de decisão extremamente prático
- Abra CMD como administrador.
- Vá à pasta do ODT:
cd /d C:\ODT
. - Rode:
setup.exe /configure configuration.xml
. - Falhou? Rode com caminhos absolutos entre aspas.
- Falhou? Ajuste o nome do XML para
configuration.xml
. - Falhou? Faça
/download
para cache local e repita. - Falhou? Teste outro
setup.exe
do ODT mantendo os passos anteriores. - Ainda falhou? Abra os logs do ClickToRun e procure por “path not found”.
Exemplos de mensagens e como reagir
Mensagem típica | Interpretação | Ação imediata |
---|---|---|
“Não foi possível encontrar o caminho do arquivo” | ODT não localizou o XML ou a mídia | Rodar no diretório correto; usar caminhos absolutos |
“Another instance of setup is running” | Conflito com processo ClickToRun anterior | Fechar processo, reiniciar e tentar novamente |
“Package files not found” | Cache offline inválido ou ausente | Refazer /download ; checar SourcePath |
Casos de campo e lições aprendidas
- CMD elevado x duplo clique: diversos casos funcionaram no primeiro quando falhavam no segundo.
- Builds diferentes do ODT: pode haver inconsistências entre compilações; porém a maior parte dos êxitos veio de corrigir elevação e diretório.
- Localização do nome do XML: um único caractere diferente (
configuracion.xml
vs.configuration.xml
) foi suficiente para reproduzir o erro.
Checklist final antes de abrir um chamado
- Confirme CMD/PowerShell com Run as administrator.
- Garanta que
setup.exe
econfiguration.xml
estão na mesma pasta e que você está dentro dessa pasta. - Use aspas em caminhos com espaços.
- Valide o Product ID e o canal (
Standard2021Volume
,PerpetualVL2021
para LTSC). - Se possível, rode
setup.exe /download configuration.xml
antes de/configure
. - Revise logs em
%ProgramData%\Microsoft\ClickToRun\Log\
e%temp%\Office\
.
Perguntas frequentes
Posso instalar sem CMD elevado?
Não é recomendado. A instalação escreve em áreas protegidas do sistema. Sem elevação, você terá falhas intermitentes e códigos de erro semelhantes.
Vou precisar do ODT para sempre?
Para LTSC 2021, sim — o mecanismo é Click‑to‑Run via ODT. Mesmo soluções de gerenciamento (Intune/MECM) usam o ODT por baixo dos panos.
Qual a diferença entre /download
e /configure
?
/download
obtém a mídia e prepara o cache; /configure
instala conforme o XML. Em redes com proxy ou links instáveis, /download
prévio é uma excelente prática.
Meu XML está certo, mas ainda falha com 0‑2048(0). E agora?
Quase sempre é diretório/permissão. Garanta CMD elevado e caminhos absolutos (ou o padrão pushd "%~dp0"
). Se persistir, troque o executável do ODT e repita o procedimento.
Resumo executivo
Em uma linha: execute o /configure
em um Prompt de Comando “Executar como administrador”, já dentro da pasta que contém setup.exe
e configuration.xml
(ou use caminhos absolutos/um .BAT com pushd "%~dp0"
). Isso resolve o erro 0‑2048(0) na esmagadora maioria dos casos.
Modelo de pacote “pronto para copiar”
Estruture a pasta C:\ODT\
assim:
C:\ODT\
├─ setup.exe
├─ configuration.xml
└─ install.bat
Conteúdo sugerido do install.bat
(com logging):
@echo off
set LOG=C:\ODT\install-%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.log
set LOG=%LOG: =0%
call "%~f0" :main ^> "%LOG%" 2^>&1
exit /b %errorlevel%
\:main
rem --- veja a versao bulletproof descrita no artigo ---
\>nul 2>&1 net session || (
powershell -NoProfile -Command "Start-Process -FilePath '%~f0' -Verb RunAs"
exit /b
)
pushd "%~dp0"
start /wait "" "%CD%\setup.exe" /download "%CD%\configuration.xml"
start /wait "" "%CD%\setup.exe" /configure "%CD%\configuration.xml"
popd
Concluindo
O erro 0‑2048(0) geralmente não é um problema de conteúdo do Office, mas de como o ODT é chamado. Ao padronizar a execução em janela elevada, controlar o diretório de trabalho e preferir caminhos absolutos (ou scripts com pushd "%~dp0"
), você elimina a causa raiz e devolve previsibilidade à sua implantação LTSC.