Главная СПДС СПДС. Установка программ. Файл ACAD.LSP.

;* 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)
	
	

  при полном или частичном использовании материалов сайта ссылка на источник обязательна ©2002-2012