2010-04-08 3 views
2

У меня есть упражнение для вас! :)Передайте параметры MSI в .NET installer class

Мне нужно получить свойство [INSTALLDIR] MSI в моем классе Installer, реализованном на C#. Используя InstallShield 2010, я создал компонент с сборкой .NET, определенный как ключевой файл компонента. Указывает, что компонент является .NET Installer Class, реализовал необходимый интерфейс и удостоверился, что он был вызван во время потока выполнения. Теперь мне нужно получить установочный каталог MSI. У вас есть идеи?

Я знаю, что существует предопределенное пользовательское действие для передачи свойств для отложенных пользовательских действий, но на самом деле у меня нет специального действия для запуска класса Installer, это компонент установки. Есть несколько примеров для инсталляторов Visual Studio, но установка экрана кажется немного отличающейся.

Спасибо большое!

ответ

2

In InstallShield | Свойства компонента, прямо ниже, где вы сказали .NET Installer Class = Да, вы ввели аргументы класса .NET Installer. Вы в основном сделать что-то вроде

/INSTALLDIR = "[INSTALLDIR] \"/FOO = 42

Внутри вашего контекста, то вы можете получить доступ к INSTALLDIR и Foo.

Но я хотел бы быть честным с вами: вы не хотите этого делать. Возьмите это у меня, WiX C# DTF - это гораздо лучший шаблон, который устраняет многие проблемы с InstallUtil, с которыми вы, в конце концов, столкнетесь и пожалеете.

У меня есть примеры DTF в моем блоге. Просто найдите DTF.

+0

Крис, спасибо большое! Этот подход работает до сих пор, но я обязательно прочитаю о WiX C# DTF. Какие проблемы, по вашему мнению, могут возникать при передаче параметров в класс установщика .NET? –

+1

http://robmensching.com/blog/posts/2007/4/19/Managed-Code-CustomActions-no-support-on-the-way-and-heres В принципе, что-то плохое в отношении InstallUtil, что лучше в DTF 1) Когда это не удается, вы получаете таинственные 1001 всплывающие окна; даже в бесшумном режиме. 2) У него нет доступа к дескриптору MSI, поэтому он не может устанавливать свойства MSI или записывать в журнал MSI. 3) Первая версия CLR, сшитая, является stickey. Если запускается 1.1 CA, то срабатывает 2.0 CA, вы получаете исключение. –

 Смежные вопросы

  • Нет связанных вопросов^_^