;* DO NOT CHANGE THIS FILE IF YOU DON'T KNOW AUTOLISP
;* НЕ ИЗМЕНЯЙТЕ ЭТОТ ФАЙЛ, ЕСЛИ ВЫ НЕ ЗНАКОМЫ С ЯЗЫКОМ AUTOLISP.
;*
;* Файл ACAD.LSP загружается и запускается автоматически, если Acad запускается
;* двойным щелчком по DWG файлу, располагаемого в этом же директории (дистрибутиве).
;* Здесь выполняется инициализация переменных и загрузка необходимых программ для:
;* - проверки полноты дистрибутива;
;* - проверка наличия места для инсталяционных файлов на диске;
;* - установки (копирования) программных и других файлов в инсталляционный директорий;
;* - копирование темплетов (если есть) в директорий Acad для этих файлов;
;* - формирование путей поиска Acad и задание последовательности поиска;
;* - загрузки файлов меню (до 9) и формирование строки главного меню Acad;
;* - записи в журнал процедуры установки.
;* Все перечисленные выше действия выполняются через ($_SETUP1) в файле SETUP1.LSP
;*
;* Примечание: При наличии нескольких Acad на компьютере, следует вначале открыть тот, куда планируется
;* загружать меню и пр., установить нужный профиль и затем закрыть Acad.
;*
;* Сообщения программы приводятся на русском и английском (в зависимости от текущей кодовой таблицы).
;* Параметры задаются в диалоговом окне, описание установки приведено в html help.
;*
;* ИСПОЛЬЗУЮЕТСЯ:
;* библиотека DOSLib 6.1. 1992-2004 Robert McNeel & Associates. All rights reserved. (www.mcneel.com)
;* и функция из Acad Express
;*
;* Для Acad 15, 16
;* (C)KAI, Kosov Alexander, 2004, Magadan, Russia
;* Сайт : http://geol-dh.narod.ru/ (Русский)
;* Site : http://geol-dh.narod.ru/en_index.html (English)
;*
;* Состав программы для установки программ:
;* acad.lsp - автоматически исполняемый файл (инициализация, загрузка программ, передача управления)
;* setup1.lsp - основная программа установки
;* setup1.dcl - описание диалоговых окон
;* setup1_mes.lsp - файл сообщений программ (2 языка)
;* doslib15.arx (или doslib16.arx) - библиотека для Acad 15 (или 16)
;* *.dwg - любой файл
;* и необязательные файлы:
;* setup1.sld - рекламный слайд
;* setup1_read_me.html - файл справки (рекомендации по установке)
;* *.gif - картинки для файла справки
;* geo.css - стили текста для файла справки
;*
;* Ограничения:
;* - установка файлов, содержащихся только в одном поддиректории дистрибутива;
;* - загрузка не более 9 меню и только с расширенем MNU;
;* - замещение файлов (с одинаковыми именами) выполняется без каких-либо сообщений;
;*
(defun-q SETUP1-STARTUP ( / appname_folder loglst sld_name check_num_lst check_name_lst dwg_dir
curdate time acadver arxname flag1 flag2 flag3
; Глобальные переменные
mes_language- log_filename-)
; ************* Н А С Т Р О Й К А У С Т А Н О В К И ******************
; Файлы, подлежащие установке размещаются в поддиректории дистрибутива (только в одном)
; Имя папки, в которой находятся программные и др. файлы - не изменяется (копируется).
; Загружаются темплеты меню (только с расширением MNU), находящиеся в дистрибутиве (одно меню или несколько,
; но не более 9, по выбору пользователя).
; Копирование файлов DWT (если присутствуют в дистрибутиве) выполняется в текущий директорий этих файлов.
;
; По умолчанию предлагается установить программы в поддиректорий текущего Acad.
;
; Глобальные установочные переменные:
;
; Имя директория (по умолчанию в директории текущего Acad), в который будет копироваться
; поддиректорий с программами и всеми другими файлами
(setq appname_folder "FA programs")
; Имя слайда (SLD файла), который загружается в диалоговое окно в качестве рекламы
(setq sld_name "SETUP1")
; Проверки на количество файлов и наличие определенных файлов будут выполняться, если только они определены:
; Проверки на количество всех файлов в дистрибутиве и/или файлов с определенными расширениями (при необходимости)
; Следует откорректировать, добавить или заглушить часть строк
(setq check_num_lst (list '("*.*" 66) ; общее количество файлов в директории должно быть 66 или более
'("*.FAS" 14) ; файлов FAS в директории должно быть 14 или более
;;; '("*.LSP" 100) ; и так далее
))
;;; (setq check_num_lst nil) ; или обнNILить всю переменную (проверок на количество файлов не будет)
; Проверки на наличие конкретных файлов в дистрибутиве (при необходимости контроля важных файлов)
; Откорректировать, добавить или заглушить часть строк
(setq check_name_lst '("SEEL.FAS"
"SEEL.DCL"
"SEEL.SET"
"KAI-2001-FW.hlp"
"KAI-2001-FW.cnt"
;;; "OPER.BMP"; и так далее
))
;;; (setq check_name_lst nil) ; или обнNILить всю переменную (проверок не будет)
; Имя текстового файла-журнала, куда выполняется запись о процессе инсталляции, файл будет размещаться в
; каталоге дистрибутиве или инсталляционном директории (если установка идет с CD).
(setq log_filename- "Setup1_LOG.txt")
; Имя файла html, выводимого при нажатии на кнопку Help.
(setq help_filename- "SETUP1_READ_ME.html")
; ************* К О Н Е Ц Н А С Т Р О Й К И ******************
(setq loglst '()) ; Инициализация списока сообщений для LOG файла.
; Определяем текущий директорий, где размещены программы SETUP1 и запускаемый DWG файл
(setq dwg_dir (getvar "DWGPREFIX"))
(setq curdate (rtos (fix (getvar "CDATE")) 2 0)
curdate (strcat (substr curdate 7 2) "." (substr curdate 5 2) "." (substr curdate 1 4)); Системная дата
time (rtos (- (getvar "CDATE") (fix (getvar "CDATE"))) 2 4)
time (strcat (substr time 3 2) ":" (substr time 5 2)) ; Системное время
);setq
; Первая строка LOG файла
(setq loglst (cons (strcat appname_folder " " "SETUP1 log file." " [" curdate " " time "]") loglst))
(setq loglst (cons "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" loglst))
(if (= (getvar "SYSCODEPAGE") "ANSI_1251") ; РУССКАЯ кодовая страница
(progn
(setq mes_language- 2)
(princ (strcat "\n\n" "Set RUSSIAN language of setup interface."))
(setq loglst (cons (strcat "Set RUSSIAN language of setup interface.") loglst))
)
(progn ; NOT RUSSIAN code page
(setq mes_language- 1)
(princ (strcat "\n" "Set ENGLISH language of setup interface."))
(setq loglst (cons (strcat "Set ENGLISH language of setup interface.") loglst))
)
)
; [1-ENG, 2-RUS] принудительно установить язык (set language forcedly)
;;; (setq mes_language- 1)
(setq acadver (substr (getvar "ACADVER") 1 2))
; Загрузка нужной библиотеки (DOSLib 6.1, www.mcneel.com) в зависимости от версии Acad
(if (= acadver "15")
(setq arxname "doslib15.arx")
(setq arxname "doslib16.arx")
)
; Проверка, все ли есть файлы, нужные для программы установки
(if (and (or (findfile (strcat dwg_dir "SETUP1.fas"))
(findfile (strcat dwg_dir "SETUP1.lsp")))
(findfile (strcat dwg_dir "SETUP1.dcl"))
(or (findfile (strcat dwg_dir "SETUP1_MES.fas"))
(findfile (strcat dwg_dir "SETUP1_MES.lsp")))
(findfile (strcat dwg_dir arxname))
)
(progn
; Далее выполняется загрузка необходимых файлов
(setq loglst (cons (strcat "Initializing messages...") loglst))
(princ (strcat "\n" "Initializing messages..."))
(setq flag1 (load "SETUP1_MES" nil)); Загружаем список сообщений программы на 2-х языках
(if flag1
(princ (strcat "OK\n"))
(progn
(princ (strcat "Not loaded!\n"))
(setq loglst (cons (strcat "Messages file not loaded!") loglst))
)
)
(princ (strcat "\n" "Loading setup file..."))
(setq loglst (cons (strcat "Loading setup file...") loglst))
(setq flag2 (load "SETUP1" nil)); Загружаем программу установки
(if flag2
(princ (strcat "OK\n"))
(progn
(princ (strcat "Setup file not loaded!" "\n"))
(setq loglst (cons (strcat "Setup file not loaded!") loglst))
)
)
; Далее, когда загружен список сообщений и функция их вывода
; можно выводить сообщения на одном из языков
(setq loglst (cons (strcat (MESS 0)) loglst)) ; 0="Loading DOSLib arx file..."
(princ (strcat "\n" (MESS 0))) ; 0="Loading DOSLib arx file..."
(setq flag3 (arxload arxname nil)) ; Загружаем библиотеку DOSLib!
(if flag3
(princ (strcat "OK\n"))
(progn
(princ (strcat "Not loaded!\n"))
(setq loglst (cons (strcat (MESS 1)) loglst)) ;1="DOSLib arx file not loaded!"
)
)
(if (and flag1 flag2 flag3)
; Если нужные файлы загружены, Запускаем установочную программу с параметрами:
($_SETUP1 arxname ; Для выгрузки библиотеки после окончания работы программы
appname_folder ; Имя директория для установки программ по умолчанию
check_num_lst ; Список для проверки количества файлов в дистрибутиве
check_name_lst ; Список конкретных файлов для проверки содержания их в дистрибутиве
loglst ; Список сообщений для формирования LOG файла
sld_name) ; Имя слайда для диалогового окна (реклама программы)
(progn
; Какие-то из программ не загрузились
(alert (strcat (MESS 2) ;2="Some of needed setup programs not loaded."
"\n\n" (MESS 3) ;3="Can NOT setup applications."
))
)
)
)
(progn
; Какие-то из программ вообще не найдены (не только в текущем директории, но и по всему списку путей поиска Acad)
(alert (strcat (MESS 4) ;4="Setup program files not found. SETUP1.FAS(LSP) or SETUP1.DCL or SETUP1_MES.FAS(LSP) or"
" " arxname "\n\n" (MESS 3) ;3="Can NOT setup applications."
))
)
)
(prin1)
);end of *** SETUP1-STARTUP ****
;добавление функции SETUP1-STARTUP в текущую функцию автоматической загрузки
(setq S::STARTUP (append S::STARTUP SETUP1-STARTUP))
(prin1)
|
|