Como exatamente você está extraindo os arquivos? Você está usando a linha de comando ou a GUI? Você está arrastando os arquivos ou selecionando-os e usando a função extrair? Você está usando o menu de contexto da extensão do shell?
Se você inserir uma pasta de destino e selecionar a função de extração ou usar a extensão de shell, elas não serão extraídas para uma pasta temporária primeiro, elas serão extraídas diretamente para o destino.
Se você selecionar os arquivos na interface do usuário e arrastá- los para a pasta de destino, ele será extraído para uma pasta temporária.
O motivo está em como o destino é selecionado. Se você inserir a pasta de destino ou usar o item do menu de contexto, o programa saberá exatamente para onde precisa extrair. No entanto, se você simplesmente arrastar os arquivos, devido ao funcionamento da função de arrastar e soltar do OLE , o programa não saberá onde está a pasta de destino. Em outras palavras, é Explorerque recebe a pasta de destino, não o programa de arquivamento. Como resultado, o programa não pode saber onde extraí-los e, portanto, simplesmente extrai-os para a pasta temp, e o Explorer os move assim que terminar. Você pode ver isso claramente extraindo um arquivo grande usando os dois métodos. Quando você o arrasta para uma pasta, ele é extraído e você vê a caixa de diálogo de operação de arquivo padrão do Explorer movendo-o para a pasta. Se você especificar a pasta e clicar em Extrair, ela será extraída e nenhum processamento adicional será feito.
Fique à vontade para ler o código-fonte do 7-Zip para ver como o local de extração é tratado.
Aprendi isso da maneira mais difícil, há vários anos, quando queria implementar o recurso de arrastar e soltar em um programa que estava escrevendo.