Тема: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

В Acad 2005 есть, грубо говоря, две папки support - одна в самой директории Акада и другая - в Documents and Settings/AppData/..., которая при смене пользователя становится недоступной.
Так вот. Пытаюсь довести до ума процедуру инсталляции, чтобы однажды установленная надстройка становилась, как Express Tools, доступна всем пользователям. Хочу положить свой .MNS - файл в %ACADDir%/Support, чтобы он был доступен под любым профилем пользователя, но сомневаюсь, что это корректное решение (все системные файлы .MNS содержатся в Documents and Settings/...). Прошу подтвердить или опровергнуть мои сомнения.
p.s. Может, у кого есть линк на "идеальный" алгоритм инсталляции под AutoCAD? Скажу спасибо.
p.p.s. Интересно, как они это делают с Express Tools.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

> Александр Бауск
Попробуйте разобраться с acad.msi.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

Размещать свои файлы в  %ACADDir%/Support самое последнее дело. Тем более, если делаете свой инсталлятор. Это не помойка, куда пихают все кому не лень все ненужное. Express Tools - продукт Autodesk и они, естественно, кладут его в свои каталоги.
Надо для своего приложения создавать собственный каталог. Если есть исполняемые файлы (exe, dll), то предлагать при инсталляции в %ProgramFiles%\Имя приложения.
Все файлы, которые должны или могут изменяться пользователями - в %Documents and Settings%\All Users\Имя приложения. Там может быть и папка, которую может быть надо включать в AcadPath (лучше автоматически). Хотя часто это и не обязательно, так как любая программа расположение своих файлов должна знать и, при необходимости, передавать их полные имена, а не искать.
Надо ли делать это в каталоги пользователей - подумать. На мой взгляд - не стоит.
Делать соответствующие настройки в реестре.
"Иделального" алгоритма инсталляции не существует. Но существуют "правильные". Правильность заключается в том, что приложение должно соответствовать требованиям, выдвигаемым Microsoft (нравятся они и сама Microsoft или нет), работать под любыми пользователями.
Пример сценария инсталляции (не "идеального", а нормального) для InnoSetup см. в книге "САПР на базе AutoCAD - как это делается".
Для того, чтобы "что-то делалось" при смене или добавлении пользователей, требуемую информацию заносят в HKEY_USERS\.DEFAULT\Software\Имя приложения. Эта информация автоматически переносится в HKCU нового пользователя. А уж как с ней поступать - дело программы. Некоторые, например, запускают дополнительный инсталлятор для настроек под пользователя.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

Спасибо всем за ответы.

> Владимир Громов
Попробую :) . Это для версии 2006+, как я понимаю?

> ShaggyDoc
>Для того, чтобы "что-то делалось" при смене или добавлении пользователей, требуемую информацию заносят в HKEY_USERS\.DEFAULT\Software\Имя приложения.
Речь именно вот об этом моменте. Насколько я понимаю, в профили существующих пользователей информация из .DEFAULT не добавится.
>Надо для своего приложения создавать собственный каталог. Если есть исполняемые файлы (exe, dll), то предлагать при инсталляции в %ProgramFiles%\Имя приложения.
Сделано.
>программа расположение своих файлов должна знать и, при необходимости, передавать их полные имена, а не искать.
Сделано, для текущего пользователя :).
Так вот. Более-менее решил таким образом:
Инсталлятор у меня был с самого начала. (при прочтении книги было приятно отметить факт использования того же InnoSetup). Инсталлировал под текущего пользователя в текущий профиль (прописывая пути в AcadPath через регистр и дописывая подгрузку файла к (S::STARTUP)). Я написал в IS очень короткий "доинсталятор", который при необходимости (в случае отсутствия ключей в HKCU, т.е. при смене пользователя) запускает команда AALOAD.
P.S. А как вы относитесь к дописыванию своих строчек в acad.lsp? С корректным удалением при деинсталляции?
P.P.S. Пока писал, подумал, что по большому счету можно обойтись и без "доинсталятора". Сейчас буду пробовать.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

> Александр Бауск
>А как вы относитесь к дописыванию своих строчек в acad.lsp
Незачем туда лезть. Если каждый будет писать свое, хорошего не будет.
Положите в свой каталог файл acaddoc.lsp. Вот для его загрузки и может понадобиться свой каталог в SupportPath.
Многое зависит от того, как в целом организована работа ваших программ. Самый простой, но негибкий путь - ярлык acad с указанным вашим профилем. В этом профиле Автокад наткнется на ваш файл автозагрузки и выполнит. А уж что там прописать - надо соображать. Но это будет статическая настройка, которую, впрочем, можно корректировать и вручную.
В ruCAD сделан специальный стартер, из которого запускается любой выбираемый AutoCAD. Acaddoc.lsp генерируется каждый раз и в него записываются нужные настройки. В том числе, если запущен новым пользователем, то для него создается все, что надо, в том числе и профиль, если его не было.
Инсталлятор пишет основную информацию в HKLM. Это доступно всем пользователям. А то, что относится к настройкам конкретного пользователя - пишется в HKCU. Приоритет чтения из HKCU, если уж там нет, то из HKLM. Запись - только в HKCU. Вот и не нужен никакой доинсталлятор.
Но инсталляция должна выполняться пользователем с правами администратора.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

> Положите
в свой каталог файл acaddoc.lsp. Вот для его загрузки и может понадобиться свой каталог в SupportPath.
Супер. Спасибо. Правда, тогда проблема инсталляции для не-текущих существующих пользователей не решается.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

> Александр Бауск
Чтобы для всех пользователей - "свой" каталог должен быть в All Users. Чтобы у всех был доступ - ярлыки тоже в All Users.
Теперь любой пользователь видит ярлык, видит acaddoc.lsp. А уж позаботиться о создании профиля и его настройке можно разными способами. Дело техники.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

Спасибо.
Еще один комментарий по этому поводу.
acaddoc.lsp, будучи найден, исполняется и дальнейший его поиск прекращается. Таким образом, два довеска, использующие эту методику -- хранения acaddoc.lsp в прописанном пути -- одновременно в одном профиле работать не будут.
Отсюда вывод -- достигнуть универсальности как у ETools возможно вряд ли.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

> Александр Бауск
>Отсюда вывод — достигнуть универсальности как у ETools возможно вряд ли
Поспешный вывод. Смотря что за "довески". Если это неправильно написанные "довески", каждый из которых сваливает файлы в общий Support и т.п., то может быть что угодно.
Если Ваша программа написана с умом, то она может даже упорядочить эту неразбериху. Все ведь зависит от того, что именно Вы напишете в свой файл автозагрузки - там может быть и загрузка любых "довесков". В идеале они должны быть отловлены, а пользователю должен быть предоставлен выбор, какие подгружать в этом профиле.
А вот делать из автозагружаемого файла сборник библиотечных функций - неправильно. Там должен быть минимум.
Кроме того, автозагрузку своего приложения можно сделать в MNL, как и указывал Владимир Громов. MNL загружается при подгрузке одноименного меню. Там же можно сделать загрузку "разрешенных" довесков.
Express Tools в разных версиях инсталлировала себя по разному. В 2007 при установке Express Tools записывается в acad.cui в виде строки

<PartialMenuFile>acetmain.cui</PartialMenuFile>

А в acetmain.mnl прописано определение и вызов функции добавления pop-меню

(acet-init-placemenu)

Можно сделать так же.
В ранних версиях ET дописывались в конец автозагрузки.
Но ET - продукт Autodesk, очень хорошо написанный. Они могут позволить себе все. Нам лучше в стандартные файлы и каталоги не лезть.
Конкретный вариант загрузки надо тщательно продумывать и реализовывать. Хуже всего, когда в программах заложены фиксированные пути, а ставятся они непременно в корневой каталог диска C: да еще с фиксированным "оригинальным" именем, наподобие C:\Work.
PS. Под "довесками" здесь понимаем любые сторонние приложения, а не "Довески(ТМ)" Геннадия Поспелова.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

Опять спасибо. По многим моментам все так и реализовано.
Книгу читал. Стартер - это хорошо, но в моем случае слишком радикально. И люди привыкли к загрузке "как у ETools".
>В 2007 при установке Express Tools записывается в acad.cui в в
Пока делаю все для 2005. Потом этим воспользуюсь.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

Если на компе стоит несколько версий ACAD, н-р:
AutoCAD2002 En
AutoDesk LandDesktop 3
AutoCAD2005 Ru
AutoCAD2006 Ru
Civil Design 2007
Как из инсталятора определить всю эту "кухню"?
Т.е. мне нужно получить список строк-путей к файлу acad.exe для каждой установленной версии.
Пример не надуам, а взят из жизни.

Re: Инсталляция: Хорошо ли класть свои файлы в %ACADDir%/Support?

> Roman
Смотря какой именно инсталлятор используется. В общем случае - просмотр реестра и отбор нужных версий.
Как именно - см. в упоминавшейся книге. Там для определения возможных версий используется специальная DLL, в которой содержится функция выбора AutoCAD. Обращение к этой функции - из скрипта инсталлятора. Инсталлятор - Inno Setup.