ObjectARX, AutoCAD. Среда программирования библиотеки C++

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;


Содержание раздела