Todos,
Tenho um problema interessante que procurei em todos os lugares por uma resposta e não consegui. Espero que alguém possa esclarecer por que isso está acontecendo.
Eu tenho um CD que contém vários aplicativos C++ e um arquivo em lote que é executado para copiar os arquivos nos locais corretos usando XCOPY. Sim, a operação xcopy acontece com sucesso e os novos aplicativos são colocados nos locais corretos.
O problema que estou tendo é que logo após o arquivo em lote terminar de copiar o arquivo, fecho a janela do arquivo em lote, ejeto o CD e executo qualquer um dos aplicativos recém-copiados de seu novo local no computador. Recebo o erro do Windows "Não há disco na unidade. Insira um disco na unidade D:". (Esse é o nome da minha unidade de CD)
Meus programas NÃO possuem nenhuma referência a nenhum caminho relativo/codificado. Na verdade, depois de reconhecer esse erro 4 ou 5 vezes e reabrir o programa, NUNCA mais vejo o erro. Para ver o erro aparecer novamente, preciso executar o arquivo em lote novamente a partir do CD e retirá-lo antes de executar o aplicativo.
Apenas para mais esclarecimentos, copiar/colar manualmente (Ctrl+c, Ctrl+v) de um aplicativo do disco funciona perfeitamente. Se eu copiar/colar e ejetar manualmente o CD, o programa funcionará perfeitamente. Este erro ocorre apenas na primeira vez que o programa é executado depois de copiá-lo com um arquivo em lote e remover o CD antes de executar o programa. Além disso, reiniciar o computador após a execução do arquivo em lote evita que esse problema também aconteça.
Eu sei o que você está dizendo, se reiniciar o computador depois de copiar o arquivo resolve o problema, então por que ele está fazendo essa pergunta aqui? Bem, eu tenho que copiar este arquivo em mais de 30 computadores fora da rede por vez e leva MUITO tempo para reiniciar cada um deles.
Existe alguma marcação estranha do Windows nos aplicativos quando eles são copiados com o XCOPY para onde o programa ainda pensa que está no CD após ser copiado? Alguém tem alguma sugestão, comentário ou link que possa me indicar a direção certa? Qualquer ajuda seria fenomenal.
Muito obrigado!
EDIT: esqueci de mencionar que isso está no sistema operacional Windows XP.
EDIT2: Aqui está o código do meu arquivo em lote.
@ECHO OFF
SET INSTALLSERVER=%~dp0
SET AppProgramFiles=%ProgramFiles%\ApplicationName\
XCOPY "%INSTALLSERVER%Scenario\*.*" "%AppProgramFiles%Scenario\" /C /Y /q
XCOPY "%INSTALLSERVER%Plan\*.*" "%AppProgramFiles%Plan\" /C /Y /q
XCOPY "%INSTALLSERVER%Data" "%AppProgramFiles%Data\" /C /Y /q /e
XCOPY "%INSTALLSERVER%Misc\*.*" "%AppProgramFiles%Misc\" /C /Y /q
Como mencionei acima, posso copiar/colar o aplicativo sozinho e o programa funciona perfeitamente. NÃO há erro se eu fizer dessa maneira. O erro "Nenhum disco na unidade" aparece SOMENTE se eu copiar o aplicativo usando um arquivo em lote. Na verdade, já vi o mesmo problema se copiar um aplicativo usando um arquivo vbscript também. Estou me perguntando se o Windows XP tem alguma maneira estranha de marcar aplicativos que são copiados de um CD usando um processo como batch/vbscript. Alguma ideia?