GT>Но как быть с COM+ компонентами ? Средствами UI InstallShield эта задача решается, но автоматизировать этот процесс средствами UI невозможно.
GT>С очередями вообще ничего не понятно.
GT>Или может есть другие средства, которые могут включать COM+ компоненты в инсталляционный пакет, создавать очереди и получать mci ?
У нас сделано через Custom Action на vbs:
CaDebug 1, "Find COM+ app"
Dim cat : set cat = CreateObject("COMAdmin.COMAdminCatalog")
Dim i
Dim apps
Dim appObj, comps, comp
Set apps = cat.GetCollection("Applications")
apps.Populate
i = 0
For Each appObj in apps
If appObj.Name = "xxxxxx" Then
apps.Remove i
apps.SaveChanges
CaDebug 1, "Old vercion of COM+ app has been removed"
Exit For
End If
i = i + 1
Next
CaDebug 1, "Create COM+ app"
Set appObj = apps.Add
CaDebug 1, "COM+ app has been created"
appObj.Value("Name") = "xxxxxx"
CaDebug 1, "COM+ app has been named"
appObj.Value("Description") = "xxxxxxxxxxx"
CaDebug 1, "COM+ app has been described"
appObj.Value("Authentication") = 1
appObj.Value("ImpersonationLevel") = 3
appObj.Value("AccessChecksLevel") = 0
appObj.Value("ApplicationAccessChecksEnabled") = 0
apps.SaveChanges
CaDebug 1, "COM+ app has been saved"
cat.InstallEventClass "xxxxxx", VbsCaCadGet("dir") & "sys\EventClass.dll", "", ""
CaDebug 1, "Event class has been created"
cat.InstallComponent "xxxxxx", VbsCaCadGet("dir") & "sys\EventSubscriber.dll", "", ""
CaDebug 1, "Subscriber has been created"
cat.RefreshComponents
set cat = Nothing
CaDebug 1, "COM+ app instalation completed"
ну и про удаление не забудь
Я бы поступил радикально по-другому.
1) InstallShield поддерживает сохранение файлов проектов в двух видах: бинарном и XML.
2) InstallShield имеет компилятор коммандной строки (вроде бы в самом дистрибутиве его нет, но если нажать на кнопку Update, то там его можно доустановить к InstallShied'у).
3) Формат проекта в XML достаточно прост для понимания и изучения. (во первых, на сколько помню — он документирован в хелпе, во вторых открываешь в блокноте файл — смотришь, изменяешь в UI что-либо, сохраняешь, открываешь в блокноте еще раз файл проекта — смотришь что и в какой закономерности изменилось).
Че делаешь — пишешь прогу, которая налету генерит XML-файл проекта (или натравливается на существующий и редактирует его). В .NET работа с XML-файлами — как пописать на два пальца. Затем на сгенереный XML-файл натравливаешь консольный компилятор коммандной строки.
Все. Думаю это проще примененя COM.