Перейти к содержанию

Рекомендуемые сообщения

Всех приветствую!

Знаю, что нельзя из сети загружать библиотеки DLL, посему у меня это сделано так:

  1. В автозагрузку включён 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)
    Из текста следует, что проверив наличие на сервере библиотеки удаляем её локальную копию и создаём новую копию (актуализируем).
    1380300782_.png.fce2680d87c63ab0c816871da4769362.png
  2. Сама библиотека грузится в 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>

     

  3. Если локальную копию DLL удалить, то всё прекрасно отрабатывает.
  4. Если локальная копия уже существует, то файл не заменяется. Видимо, поменялся порядок загрузки или что-то ещё - файл уже занят оказывается.

В 10.1 всё работало так. Какие есть предложения? Нужно при каждом запуске обновлять локальную копию, если файл на сервере доступен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте грузить модуль из того же лиспа функцией (appload "C:\Users\XXXX\AppData\Roaming\Nanosoft\nanoCAD x64 Plus 20.1\PlaneObjects.dll"), на мой взгляд, так надёжнее и компактнее, чем разделять замену и загрузку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Воистину! Благодарю!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день. Не подскажите где взять файл load.config (размещенный в C:\ProgramData\Nanosoft\nanoCAD x64 Plus 20.1\DataRW\load.config)? Или его нужно создать?

Изменено пользователем tatarnikov@rusapr.ru

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

Конечно, создать - обычный текстовый. Кодировка UTF-8, если не ошибаюсь.

Изменено пользователем Kreator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 02.07.2020 в 15:02, Kreator сказал:

Из текста следует, что проверив наличие на сервере библиотеки удаляем её локальную копию и создаём новую копию (актуализируем).

Вообще-то, немного не так.

Если есть файл на сервере, то делается попытка  удалить локальный файл, а на его место копируется файл с сервера.

Если файла на сервере нет, то выводится предупреждение и... снова делается попытка копировать несуществующий файл с сервера.

 

Кстати, все эти файловые операции делаются без проверки. И рулит ими операционная система.

Я обычно с опаской отношусь к таким действиям (или свистка не достанется, или акула глухая попадется:draznilka:).

В дополнение к совету грузить библиотеку из лиспа (выше) рекомендовал бы блок актуализации версии файла переформатировать более аккуратно, проследив цепочки если-то-иначе и добавив проверку фактического выполнения файловых операций.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@EdwardSt, ваша правда :) Но такое слежение мне ни к чему - главное, чтобы не удалить локальную копию при неимении копии на сервере. По уму, конечно, нужно сначала скопировать с сервера файл с другим именем, при успехе переименовать старый в .old, переименовать новый в старый. Но "и так сойдёт", отдаюсь на произвол судьбы винды :D

добавлено через 1 минуту

На самом деле, лисп не люблю, поэтому ленюсь его трогать :264655198_ura(1):

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день. Не подскажите.

В локальный файл 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, в локальной папке пользователя после установки будет измененный файл из сетевой развертки или добавлять  строки (подменять файл) нужно будет вручную каждому пользователю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Содержимое UserDataCache копируется каждому пользователю в AppData при первом старте, так что модифицированный cfg.ini попадёт куда нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...