Тема: Импорт панели инструментов, и вообще инсталлятор

Здравствуйте, когда-то делал программку на ВБА, которая позволяет для энергетиков размещать технологические символы и кодировку, чтобы потом её превращать в перечни сигналов и оборудования. Со своими задачами программа справляется, но для установки на другой компьютер приходится заново устанавливать все панели инструментов, файл проекта ВБА, рисунки и т.д. Хочу сделать инсталятор, чтобы запустил программку(чтобы одним файлом программка) и всё установилось. Вот и спрашиваю Вашего мнения как лучше сделать так, чтобы можно было устанавливать панели инструментов автоматически. Интересует версия AutoCad 2006.

Re: Импорт панели инструментов, и вообще инсталлятор

Ладно, сделал на OLE. Так что можно тему закрывать.

Re: Импорт панели инструментов, и вообще инсталлятор

И как сделали-то?
Такой же вопрос интересует, думал дополнительно .mnu файл создать

Re: Импорт панели инструментов, и вообще инсталлятор

Может быть эта ссылка вам поможет:
https://www.caduser.ru/forum/topic33155.html

Re: Импорт панели инструментов, и вообще инсталлятор

peshkoff пишет:

И как сделали-то?
Такой же вопрос интересует, думал дополнительно .mnu файл создать

Да вот оказывается, что не правильно сделал.
Всё копируется как надо и в зависимости от выбора юзера корректируются макросы и код. Но панели после закрытия приложения не сохраняются. Роюсь в хелпе там про это ни слова, гугл тоже молчит.
Панели создаю так:

...
var
autocad : variant;
begin
autocad:=CreateOleObject('Autocad.Application');
autocad.visible:=true;
autocad.MenuGroups.Item(1).Toolbars.Add('КИП и А');
...

Без проверок пока.
Вот только это осталось сделать. Вообще автокад интересная вещь. 90% функций написать делать нечего, зато какую-нибудь фигнюшечку целый день мучаешься.

> LeonidSN
Да нет я по другому хотел сделать.

Re: Импорт панели инструментов, и вообще инсталлятор

> Устинов Юрий
Тулбары, созданые программно, не сохраняются! Так что создавать их придется каждый раз по новой.

Re: Импорт панели инструментов, и вообще инсталлятор

> Устинов Юрий
Да нет я по другому хотел сделать.

И как именно? Поделитесь, это же самое интересное...

Re: Импорт панели инструментов, и вообще инсталлятор

Кстати, вот этот мой программно созданный toolbar в AutoCAD'е сохраняется:

Public Sub AddButton()
  Dim colMenu As AcadMenuGroups
  Dim ParentMenuGroup As AcadMenuGroup
  Set colMenu = Application.MenuGroups
  Set ParentMenuGroup = colMenu("ACAD")
  Dim newToolBar As AcadToolbar
  Set newToolBar = ParentMenuGroup.Toolbars.Add("MyToolbar")
  Dim newButton As AcadToolbarItem
  Dim MyMacro As String
   MyMacro = Chr(3) + Chr(3) + Chr(95) + "MyCommand" + Chr(32)
  Set newButton = newToolBar.AddToolbarButton("", "My Program", "MyButton", MyMacro)
  Dim SmallButtonName As String, LargeButtonName As String
  SmallButtonName = "MyButton_Icon.bmp"
  LargeButtonName = "MyButton_Icon.bmp"
  newButton.SetBitmaps SmallButtonName, LargeButtonName
End Sub

Re: Импорт панели инструментов, и вообще инсталлятор

> LeonidSN
Может быть потому, что написан на языке VBA встроенном в AutoCAD; т.е. без использования OLE-технологий и создания ActiveX?

Re: Импорт панели инструментов, и вообще инсталлятор

> [url]LeonidSN

И как именно? Поделитесь, это же самое интересное...

Просто файлик exe-шник. Пользователь по нему щёлкает, вылетает диалог куда надо установить. Все макросы и панели переписываются под это путь.
Но после выхода панели должны оставаться конечно. Потом люди будут работать с этими установками и им должно быть максимально комфортно. Пока что им вполне удобно, но мне приходиться устанавливать всё это вручную.
В принципе на моём предприятии я куда надо поставил, но есть поблизости ещё парочка, которая бы купила, да и диплом на этом сдаю, надо хоть поприличнее выглядеть.

Кстати, вот этот мой программно созданный toolbar в AutoCAD'е сохраняется:

А у меня с Вашим кодом нет :) А Вы каким автокадом пользуетесь?

Может быть потому, что написан на языке VBA встроенном в AutoCAD; т.е. без использования OLE-технологий и создания ActiveX

Это тут не причём, оно и не зависит от этого и я  пытался обоими способами.
>Александр Ривилис (2008-04-11 15:31:54)[/url]

Тулбары, созданые программно, не сохраняются! Так что создавать их придется каждый раз по новой.

Не подскажете как можно тогда их сохранить?

Re: Импорт панели инструментов, и вообще инсталлятор

Не подскажете как можно тогда их сохранить?

Только через mnu/mns/cui-файл. Или каждый раз программно создавать по новой.

Re: Импорт панели инструментов, и вообще инсталлятор

> LeonidSN
Сохранялись в AutoCAD до 2004 включительно (если мне не изменяет память). В более свежих версиях сохранение невозможно.

Re: Импорт панели инструментов, и вообще инсталлятор

> Александр Ривилис
Ага, я еще не тестировал на последних версиях...
Спасибо за подсказку.

Re: Импорт панели инструментов, и вообще инсталлятор

В хелпе прямо и написано, что Save для менюгрупс не поддерживается в 2006м.
А структура этого CUI, открыта?
Можете полезные ссылки кинуть, а то я посмотрел... Там чёрт ногу сломит. В Юникоде не нашёл не рисования ни других панелей.

Re: Импорт панели инструментов, и вообще инсталлятор

Посмотри здесь: XML Notepad 2007

Re: Импорт панели инструментов, и вообще инсталлятор

Проблема решена как и хотел. Один exe-шник, все ресурсы внутри. Нажимаешь и он автоматически ищет установлен ли автокад или открыт уже, если автокада нет или он открыт, то ругается, если всё нормально переписывает acad.cui, находящийся в
C:\Documents and Settings\'+название организации+'\Application Data\Autodesk\AutoCAD 2006\R16.2\rus\Support\
Название организации берётся из реестра по адресуHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion называется RegisteredOwner. Если панели уже установлены, то тогда спрашивает на удаление и действует в зависимости от выбора.
Теперь о структуре acad.cui.
Перед </WSToolbarRoot> надо установить свой WSToolbar, убрать / в <MacroGroup с именем USER и добавить свои <MenuMacro, в конце не забыть закрыть макрогруп. Ну и после <ToolbarRoot поставить свой <Toolbar. Всё просто. Всё выше сказанное для тех у кого возникнут подобные проблемы.
P.S. Не забудьте сохранить рабочую версию acad.cui, я не забыл и мне это помогло.

Re: Импорт панели инструментов, и вообще инсталлятор

а не проще создать свой .cui файл, потом инсталятором закинуть его куда надо, а потом просто подгрузить?
может случиться так, что в файл acad.cui юзер уже вносил свои изменения... не пересекутся действия?

Re: Импорт панели инструментов, и вообще инсталлятор

> Устинов Юрий
Ничего не понятно, скинь если можешь, исходники
на www.webfile.ru или на мой адрес
~'J'~

Re: Импорт панели инструментов, и вообще инсталлятор

Извиняюсь, что не отвечал.

> ssn
Согласен, но там где я буду ставить никаких юзерских фич не будет.

> Fatty
В результате следующего фрагмента в CUIPATH лежит адрес директории acad.cui

isCreate:=true;
try
autocadOle:=GetActiveOleObject('Autocad.Application');
except
isCreate:=false;
end;
if isCreate then
    MessageBox(0,'&#199;&#224;&#234;&#240;&#238;&#233;&#242;&#229; &#226;&#241;&#229; &#239;&#240;&#232;&#235;&#238;&#230;&#229;&#237;&#232;&#255; AutoDesc AutoCad!','&#206;&#242;&#240;&#251;&#242;&#238; &#239;&#240;&#232;&#235;&#238;&#230;&#229;&#237;&#232;&#229; AutoCad',64)
  else
  begin
    with TRegistry.Create do
      begin
      RootKey:=HKEY_CURRENT_USER;
      OpenKey('\SOFTWARE\AUTODESK\Autocad\R16.2\ACAD-4001:419',false);
      CUIPath:=ReadString('RoamableRootFolder')+'Support\';
      end;

Re: Импорт панели инструментов, и вообще инсталлятор

> Устинов Юрий
Мои извинения за задержку...
Я примерно также прописываю на Лиспе для себя,
но я думал у тебя проект типа полной установки
как делают с помощью InstaShield
Спасибо, тем не менее :)
~'J'~

Re: Импорт панели инструментов, и вообще инсталлятор

> Fatty
Хм, а как InstaShield стыкуется с AutoCAD?

Re: Импорт панели инструментов, и вообще инсталлятор

> LeonidSN
Аписка вышла я имел в виду Inno Setup
~'J'~