BAT файл пользователя, чтобы включить
Вы должны модифицировать AUTOEXEC. BAT файл пользователя, чтобы включить “aliased” (или короткий) имя пути, потому что переменная ПУТИ не будет обрабатывать пробелы. В то время как пути к приложению должны удовлетворить, строго рекомендуется, чтобы Вы модифицировали пользователя AUTOEXEC.BAT из-за известных проблем с автоматизацией (отнесите к Microsoft KnowledgeBase статью Q148375).
Гарантируйте умные модификации путей
При модифицировании пользователя AUTOEXEC.BAT пожалуйста, быть прилежный относительно изменения входа пути, если вход пути - уже там. Что должно быть предотвращено, только изменяет ПУТЬ без отношения к любому из этих условий:
§
путь - уже там.
§ Вы воздействуют на другие назначения пути в пакетном файле.
При модифицировании значения ПУТИ, независимо от того, который операционная система Вы имеете дело, ваш инсталлятор должен запросить пользователя перезагружаться так, чтобы изменение пути было должным образом зарегистрировано после того, как инсталляция полна.
Autodesk обеспечивает сценарий InstallShield ниже как неполный пример сильного модифицирования пути:
function AdUpdateAUTOEXEC (szSharedPath)
STRING szRootPath, szBatchName, szBatchFile,
szBackupName,szTestLine,szCheckForPathLine;
NUMBER nReturn, nvHandle;
STRING szOutput;
begin
szOutput = "SET PATH=%PATH%;" + szSharedPath;
// Obtain the filename of the system batch file.
BatchGetFileName (szBatchFile);
ParsePath(szRootPath, szBatchFile, PATH);
// Make sure we’re pointing at the root of the system
VarSave(SRCTARGETDIR);
TARGETDIR = szRootPath;
SRCDIR = szRootPath;
// See if we have an AUTOEXEC.
if (Is(FILE_EXISTS,szBatchFile) = FALSE) then
// If we don’t, just write ’ours’ out and no more
OpenFileMode (FILE_MODE_NORMAL);
ParsePath(szBatchFile,szBatchFile,FILENAME);
CreateFile (nvHandle,SRCDIR,szBatchFile);
WriteLine (nvHandle, szOutput);
CloseFile (nvHandle);
bNeedReboot = TRUE;
else
ParsePath(szBatchName, szBatchFile, FILENAME_ONLY);
szBackupName = szBatchName + ".ADK";
ParsePath(szBatchFile, szBatchFile, FILENAME);
OpenFileMode(FILE_MODE_NORMAL);
nReturn = OpenFile (nvHandle, SRCDIR, szBatchFile);
if (nReturn = 0 ) then
// Spin down to find the non-blank last line in
// the file
while (nReturn = 0 )
nReturn = GetLine(nvHandle, szTestLine);
if (StrLength(szTestLine) > 0) then
szCheckForPathLine = szTestLine;
endif;
endwhile;
CloseFile(nvHandle);
// We now have the last text entry in the batch
// file.
if (StrFind(szCheckForPathLine,szSharedPath) < 0) then
Disable(LOGGING);
// Backup up the original
nReturn = CopyFile (szBatchFile, szBackupName);
Enable(LOGGING);
if (nReturn = 0 ) then
OpenFileMode (FILE_MODE_APPEND);
OpenFile(nvHandle,SRCDIR,szBatchFile);
WriteLine(nvHandle,"");
WriteLine(nvHandle,szOutput);
CloseFile(nvHandle);
bNeedReboot = TRUE;
endif;
endif;
endif;
endif;
VarRestore(SRCTARGETDIR);
end;