Eu tenho um sistema com o Windows 7 OS. Eu tenho um projeto de automação que faz o trabalho de construir a configuração usando o wrapper NSIS. Existem muitas operações de arquivo, como copiar e excluir os arquivos, etc. Quando o arquivo específico está sendo excluído na codificação visual básica, recebo o erro como "Falha no método 'DeleteFile' do objeto 'IFileSystem3'". O arquivo para este erro que vem é MDAC_TYP.EXE com tamanho de 5 MB.
Cenário:
A unidade do servidor (servidor do Windows 2012) é mapeada para o sistema local do Windows 7 e toda a operação é executada nesta unidade mapeada na máquina do cliente. O cliente e o servidor estão conectados à LAN de 1 Gbps. Agora, quando executo meu projeto para construir a configuração, ele copia todos os arquivos do aplicativo para uma pasta chamada Temp e, em seguida, cria o setup exe usando o NSIS (makeNSIS). Após a criação da configuração do NSIS, ele excluirá todos os arquivos de origem da pasta temp e novamente copiará alguns outros arquivos para a mesma pasta temporária para a próxima configuração.
Às vezes, ao excluir o arquivo MDAC_TYP.exe, recebo o erro, conforme mencionado acima. Existem duas pastas com a mesma estrutura, chamadas "Build1" e "Build2". O Build1 é usado para o ambiente de teste e o Build2 é para o ambiente de produção. A pasta Temp será criada em ambas as pastas durante a execução de testes e configuração de produção.
O erro acima mencionado vem para o Build1 & Construir pastas e o erro vem ocasionalmente (não toda vez) para o mesmo exe. O arquivo MDAC_TYP.EXE tem permissão somente leitura no local de onde copio o arquivo para o diretório TEMP dentro de build1 & build2 para script NSIS. No código básico visual, eu uso o método FileSystemObject.DeleteFile com a opção force definida como true.
Uma vez que o erro vem, não consigo renomear / deletar / mover o arquivo em nenhum PC através do UNC ou mesmo no servidor ele não pode ser deletado. Se eu tentar renomear / excluir o arquivo ou sua pasta pai, o sistema de onde eu tento excluir / renomear fica travado. Mesmo se nós reinicializarmos a máquina cliente onde o erro foi enviado para a operação, isso não resolverá o problema. Só a solução que encontrei é reiniciar o servidor. Após a reinicialização do servidor, o arquivo pode ser renomeado ou excluído. Outros métodos que tentei são os seguintes.
Inicialmente, o erro estava chegando no meu PC com Windows XP. Agora eu atualizei para o windows 7 (instalação Fresh) e o erro ainda está chegando na nova máquina windows 7.
Atualização:
Recentemente, notei que o mesmo erro também ocorre ao excluir o arquivo msstdfmt.dll
Atualização 2:
Eu também tenho erro para o arquivo de palavras ms, o erro é o mesmo. Em todos os 3 casos eu achei que há apenas uma coisa comum que é todos os 3 arquivos tem atributo somente leitura.