В этих вопросах я не очень но вот мой вариант ответа:
При каждом открытии выполняется скрипт Install в котором каждый раз он будет добавлять меню ("Nährstoffkarten") и все остальное...
Предложение:
В меню GUI Вида руками организуешь все то, что ты делаешь в твоем инсталле, а далее смотри мои скрипты организации Ext, его инсталл и анинсталл:
' MyExtension.Make
viewDocGUI = av.FindGUI("View")
viewMenuBar = viewDocGUI.GetMenuBar
efn = "$AVHOME\EXT32\Nahrstoffkarten.avx".AsFileName
Ext = Extension.Make(efn, "Nahrstoffkarten",av.FindScript("Install"),av.FindScript("UnInstall"),{})
Ext.SetAbout("И теперь все работает нормально!!!")
Ext.SetExtVersion(1)
Ext.Add(viewMenuBar.FindByLabel("Nahrstoffkarten"))
' Добовляем пользвовательские скрипты
for each aDoc in av.GetProject.GetDocs
if (aDoc.Is(SEd)) then
if ((aDoc.GetName <> "Install") and
(aDoc.GetName <> "MyExtension.Make") and
(aDoc.GetName <> "Uninstall")) then
if (aDoc.IsCompiled.Not) then
aDoc.Compile
end
Ext.Add(av.FindScript(aDoc.GetName))
end
end
' Добовляем пользвовательские Диалоги
if (aDoc.Is(dEd)) then
adoc.getwin.open
aDoc.Compile
adoc.getwin.close
adialog=adoc.getdialog
if (adialog.getname<>"") then
Ext.Add(adialog)
else
msgbox.info("Не найдено "+adoc.getname,"")
end
end
end
Ext.Commit
'******************************************
'Install
' выпиcываем версии номер расширения в словарь предпочтения
if (self.GetPreferences.Get("Version") = NIL) then
self.GetPreferences.Add("Version",self.GetExtVersion)
end
viewDocGUI = av.GetProject.FindGUI("View")
NF = viewDocGUI.GetMenuBar.FindByLabel("Nahrstoffkarten")
if (NF=Nil) then
aGOMenu = self.Get(0)
viewDocGUI.GetMenuBar.Add(aGOMenu,viewDocGUI.GetMenuBar.GetControls.Count - 2)
end
'***********************************************
'UnInstall
b = av.GetProject.FindGUI("View").GetMenuBar
NF = b.FindByLabel("Nahrstoffkarten")
while (NF<>nil)
b.Remove(NF)
NF = b.FindByLabel("Nahrstoffkarten")
end
Скрипты проверил, всё работает... Удачи