Вопросы по InstallShield 11.5 и не только.
От: GrTox  
Дата: 07.04.06 10:04
Оценка:
Получил тут боевую задачу, на которой видимо сломаю голову:

1. Есть несколько Net-овских dll, которые надо скопировать на целевую машину и положить в GAC.
2. Есть несколько других Net-овских dll, которые надо скопировать на целевую машину и зарегистрировать как COM+.
3. Cоздать несколько очередей (MSMQ).

На выходе необходимо получить инсталляционный пакет mci.

Главная трудность состоит в том, чтобы автоматизировать создание инсталляционного пакета — такова задача.

т.е. например есть директории с dll-ками и xml файл с инфой про очереди.
Далее берется некое средство — которое мне и надо создать — оно берет файлы из директории, инфу про очереди и создает mci.


Начал смотреть на InstallShield (11.5). У него даже есть automation интерфейс, которым можно рулить.
Именно таким способом мне удалось решить 1-ю часть задачи:
я создал Net-овское приложение, которое подбирает список файлов для GAC и включает их в инсталляционный пакет.

Но как быть с COM+ компонентами ? Средствами UI InstallShield эта задача решается, но автоматизировать этот процесс средствами UI невозможно.
С очередями вообще ничего не понятно.


Или может есть другие средства, которые могут включать COM+ компоненты в инсталляционный пакет, создавать очереди и получать mci ?

Помогите пож. кто сталкивался.

Спасибо ...
Re: Вопросы по InstallShield 11.5 и не только.
От: IBoB  
Дата: 10.04.06 10:58
Оценка:
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"


ну и про удаление не забудь
Будут деньги, дом в Чикаго, много женщин и машин...
Re: Вопросы по InstallShield 11.5 и не только.
От: Whistler Россия Блог на GotDotNet.ru
Дата: 23.04.06 20:24
Оценка:
Я бы поступил радикально по-другому.

1) InstallShield поддерживает сохранение файлов проектов в двух видах: бинарном и XML.

2) InstallShield имеет компилятор коммандной строки (вроде бы в самом дистрибутиве его нет, но если нажать на кнопку Update, то там его можно доустановить к InstallShied'у).

3) Формат проекта в XML достаточно прост для понимания и изучения. (во первых, на сколько помню — он документирован в хелпе, во вторых открываешь в блокноте файл — смотришь, изменяешь в UI что-либо, сохраняешь, открываешь в блокноте еще раз файл проекта — смотришь что и в какой закономерности изменилось).

Че делаешь — пишешь прогу, которая налету генерит XML-файл проекта (или натравливается на существующий и редактирует его). В .NET работа с XML-файлами — как пописать на два пальца. Затем на сгенереный XML-файл натравливаешь консольный компилятор коммандной строки.


Все. Думаю это проще примененя COM.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.