Все,

У меня есть интересная проблема, которую я везде искал для ответа и не додумался. Надеюсь, кто-то может пролить свет на то, почему это происходит.

У меня есть компакт-диск, который содержит несколько приложений C++ и командный файл, который запускается для копирования файлов в нужные места с помощью XCOPY. Да, операция xcopy происходит успешно, и новые приложения помещаются в правильные места.

Проблема, с которой я столкнулся, заключается в том, что сразу после того, как пакетный файл завершил копирование файла, я закрываю окно пакетного файла, извлекаю компакт-диск и запускаю любое из вновь скопированных приложений из его нового расположения на компьютере. Я получаю сообщение об ошибке Windows «Нет диска в приводе. Пожалуйста, вставьте диск в дисковод D:". (Это имя моего CD-привода)

Мои программы НЕ имеют никаких ссылок на какие-либо жестко / относительные пути вообще. Фактически, как только я подтверждаю эту ошибку 4 или 5 раз и снова открываю программу, я НИКОГДА не вижу ошибку снова. Чтобы снова увидеть ошибку, мне нужно снова запустить командный файл с компакт-диска и вынуть его перед запуском приложения.

Просто для большей ясности, ручное копирование / вставка (Ctrl+c, Ctrl+v) приложения с диска работает просто отлично. Если я вручную копирую / вставляю и извлекаю компакт-диск, программа работает просто отлично. Эта ошибка возникает только при первом запуске программы после того, как я скопировал ее с помощью командного файла и извлек компакт-диск перед тем, как запустить программу. Кроме того, перезагрузка компьютера после запуска командного файла также предотвращает возникновение этой проблемы.

Я знаю, что вы говорите, если перезагрузка компьютера после копирования файла устраняет проблему, то почему он задает этот вопрос здесь? Что ж, мне нужно скопировать этот файл на более чем 30 компьютерах, не подключенных к сети, и для перезапуска каждого из них требуется ДЛИННОЕ время.

Есть ли какие-то странные теги Windows приложений, когда они копируются в XCOPY туда, где программа все еще думает, что она живет на компакт-диске после копирования? У кого-нибудь есть предложения, комментарии или ссылки, которые могут указать мне правильное направление? Любая помощь будет феноменальной.

Большое спасибо!

РЕДАКТИРОВАТЬ: я забыл упомянуть, что это на операционной системе Windows XP.

EDIT2: вот код для моего командного файла.


@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


Как я уже упоминал выше, я могу сам скопировать / вставить приложение, и программа работает очень хорошо. Нет ошибки, если я сделаю это таким образом. Ошибка "Нет диска в накопителе" появляется ТОЛЬКО, если я копирую приложение с помощью командного файла. Фактически, я видел ту же проблему, если копировал приложение поверх файла vbscript. Мне интересно, есть ли в Windows XP какой-то странный способ помечать приложения, которые копируются с компакт-диска, с помощью таких процессов, как batch / vbscript? Есть идеи?

0