Kreator Posted July 2, 2020 Report Share Posted July 2, 2020 Всех приветствую! Знаю, что нельзя из сети загружать библиотеки DLL, посему у меня это сделано так: В автозагрузку включён LSP следующего содержания: (vl-load-com) (setq fnlocal "C:/Users/XXXX/AppData/Roaming/Nanosoft/nanoCAD x64 Plus 20.1/PlaneObjects.dll") (setq fnserver "Z:/XXXX/NC20.1/AMD64/PlaneObjects.dll") (if (/= (findfile fnserver) nil) (vl-file-delete fnlocal) (alert "file was NOT found") ) (vl-file-copy fnserver fnlocal) Из текста следует, что проверив наличие на сервере библиотеки удаляем её локальную копию и создаём новую копию (актуализируем). Сама библиотека грузится в NC через C:\ProgramData\Nanosoft\nanoCAD x64 Plus 20.1\DataRW\load.config. <root> <list> <module path="C:\Users\XXXX\AppData\Roaming\Nanosoft\nanoCAD x64 Plus 20.1\PlaneObjects.dll"/> </list> </root> Если локальную копию DLL удалить, то всё прекрасно отрабатывает. Если локальная копия уже существует, то файл не заменяется. Видимо, поменялся порядок загрузки или что-то ещё - файл уже занят оказывается. В 10.1 всё работало так. Какие есть предложения? Нужно при каждом запуске обновлять локальную копию, если файл на сервере доступен. 1 Quote Link to comment Share on other sites More sharing options...
ISL Posted July 2, 2020 Report Share Posted July 2, 2020 Попробуйте грузить модуль из того же лиспа функцией (appload "C:\Users\XXXX\AppData\Roaming\Nanosoft\nanoCAD x64 Plus 20.1\PlaneObjects.dll"), на мой взгляд, так надёжнее и компактнее, чем разделять замену и загрузку. Quote Link to comment Share on other sites More sharing options...
Kreator Posted July 2, 2020 Author Report Share Posted July 2, 2020 Воистину! Благодарю! Quote Link to comment Share on other sites More sharing options...
tatarnikov@rusapr.ru Posted July 6, 2020 Report Share Posted July 6, 2020 (edited) Добрый день. Не подскажите где взять файл load.config (размещенный в C:\ProgramData\Nanosoft\nanoCAD x64 Plus 20.1\DataRW\load.config)? Или его нужно создать? Edited July 6, 2020 by tatarnikov@rusapr.ru Quote Link to comment Share on other sites More sharing options...
Kreator Posted July 6, 2020 Author Report Share Posted July 6, 2020 (edited) Добрый день. Конечно, создать - обычный текстовый. Кодировка UTF-8, если не ошибаюсь. Edited July 6, 2020 by Kreator 1 Quote Link to comment Share on other sites More sharing options...
tatarnikov@rusapr.ru Posted July 7, 2020 Report Share Posted July 7, 2020 Спасибо! Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted July 8, 2020 Report Share Posted July 8, 2020 В 02.07.2020 в 15:02, Kreator сказал: Из текста следует, что проверив наличие на сервере библиотеки удаляем её локальную копию и создаём новую копию (актуализируем). Вообще-то, немного не так. Если есть файл на сервере, то делается попытка удалить локальный файл, а на его место копируется файл с сервера. Если файла на сервере нет, то выводится предупреждение и... снова делается попытка копировать несуществующий файл с сервера. Кстати, все эти файловые операции делаются без проверки. И рулит ими операционная система. Я обычно с опаской отношусь к таким действиям (или свистка не достанется, или акула глухая попадется). В дополнение к совету грузить библиотеку из лиспа (выше) рекомендовал бы блок актуализации версии файла переформатировать более аккуратно, проследив цепочки если-то-иначе и добавив проверку фактического выполнения файловых операций. 1 1 Quote Link to comment Share on other sites More sharing options...
Kreator Posted July 9, 2020 Author Report Share Posted July 9, 2020 @EdwardSt, ваша правда Но такое слежение мне ни к чему - главное, чтобы не удалить локальную копию при неимении копии на сервере. По уму, конечно, нужно сначала скопировать с сервера файл с другим именем, при успехе переименовать старый в .old, переименовать новый в старый. Но "и так сойдёт", отдаюсь на произвол судьбы винды добавлено через 1 минуту На самом деле, лисп не люблю, поэтому ленюсь его трогать Quote Link to comment Share on other sites More sharing options...
tatarnikov@rusapr.ru Posted July 9, 2020 Report Share Posted July 9, 2020 Добрый день. Не подскажите. В локальный файл cfg.ini (по пути C:\Users\Пользователь\AppData\Roaming\Nanosoft\nanoCAD x64 Plus 20.0\Config\) добавляем строки: [\Configuration\<<Default>>\Appload\Startup\app0] Loader=s\\10.120.11.34\Software\SAPR_SOFT\ПО для nanoCAD\СНОС\SNOS\dllcopy.lsp Type=sLISP Enabled=i1 [\Configuration\<<Default>>\Appload\Startup\app1] Loader=s\\10.120.11.34\Software\SAPR_SOFT\ПО для nanoCAD\СНОС\SNOS\SNOS.nsf Type=sNSF Enabled=i1 Необходимо, чтобы у пользователей эти строки после установки в файле cfg.ini появлялись автоматически. Если мы в сетевую развертку в папку NanoCAD20_Plus_X64\LocalEx\Program\UserDataCache\Config добавим измененный файл cfg.ini, в локальной папке пользователя после установки будет измененный файл из сетевой развертки или добавлять строки (подменять файл) нужно будет вручную каждому пользователю? Quote Link to comment Share on other sites More sharing options...
ISL Posted July 9, 2020 Report Share Posted July 9, 2020 Содержимое UserDataCache копируется каждому пользователю в AppData при первом старте, так что модифицированный cfg.ini попадёт куда нужно. Quote Link to comment Share on other sites More sharing options...
tatarnikov@rusapr.ru Posted July 10, 2020 Report Share Posted July 10, 2020 Спасибо. Quote Link to comment Share on other sites More sharing options...
Kreator Posted August 19, 2020 Author Report Share Posted August 19, 2020 Вот теперь я вспомнил, зачем сунул загрузку DLL в load.config. Если NC не запущен, то при открытии файла DWG с пользовательскими объектами DLL загружается после чертежа, и все объекты отображаются как прокси. Нужно сначала запускать NC с пустым чертежом, а потом открывать файл, тогда всё работает. Мелочь, но немного достаёт, с учётом того, что прокси не правильно отрабатывает цвета отдельных примитивов внутри объекта, если библиотеки нет. 1 Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted August 24, 2020 Report Share Posted August 24, 2020 В 19.08.2020 в 12:07, Kreator сказал: Нужно сначала запускать NC с пустым чертежом, а потом открывать файл, тогда всё работает. Кстати, я для себя это взял за правило. Чтобы исключить двойственность в поведении программы при разных сценариях запуска. Вроде привык) 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.