2012-05-03 1 views
2

Кажется, это должно быть довольно просто. У меня есть проект установщика Windows. Внутри пользовательского интерфейса я добавил диалог с двумя переключателями. Установщик имеет настраиваемое действие в «Install», которое использует класс установки из основного вывода одного из моих проектов. Возможно ли получить значение выбранного переключателя из метода Install в классе установщика?Могу ли я каким-либо образом получить значения, введенные в пользовательском интерфейсе, в мой код класса пользовательских действий?

ответ

2

Чтобы получить/установить свойство, вам нужен дескриптор MSI, который из того, что я знаю, вы не можете получить из специального действия класса .NET Installer.

Что вы можете сделать, это настроить настраиваемое действие для принятия новых параметров и присвоить значение вашего свойства этим параметрам при настройке настраиваемого действия.

0

Если вы используете WiX Deployment Tools Foundation (DTF) развивать свое настраиваемое действие, вы можете получить доступ к свойствам:

  • для немедленного исполнения через session[property name] (правда, я не слишком хорошо знаком с этим методом, так что вам, возможно, потребуется немного поэкспериментировать) См this stackoverflow question для более подробной информации
  • для отложенного исполнения через CustomActionData
    • вы можете заполнить CustomActionData со значениями ваших свойств в других местах в ваших ин выше и читать session.CustomActionData[property name]

Один трюк с CustomActionData Ваше имя свойства должно совпадать с именем вашего пользовательского действия, и вы предоставите значения как точку с запятой список пар имя = значение, например Name1=value1;Name2=value2 и т. Д.

Вам также необходимо выполнить сборку с помощью MakeSfxCA.exe, чтобы ваши действия были доступны для установщика. Вы можете сделать это как событие post-build в Visual Studio.

Пользовательские действия на основе DTF могут использоваться в установщиках WiX или InstallShield (вероятно, любой инструмент, который создает установщики MSI).

1

Если это проект установки Visual Studio, и, похоже, окно свойств добавленного диалогового окна RadioButtons сообщает вам, что имя свойства BUTTON2, так что это то, что вы передаете в свой настраиваемый класс установщика действий со стандартным/mybutton = [BUTTON2], чтобы вы получили значение с помощью ключа mybutton из коллекции Context.Parameters в классе установщика.

диалоговое поведение описано здесь:

https://msdn.microsoft.com/en-us/library/vstudio/9x23561f(v=vs.100).aspx

и вы в конечном итоге со значением 1 или 2 в коде, в зависимости от того, который был выбран. С классами установщика Visual Studio предоставляет эту инфраструктуру вокруг вызова, включая обработку

как этот CustomActionData:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/279e0aea-077c-4150-89ae-55d8494def1b/installer-class-passing-parameters

http://blog.billsdon.com/2011/05/passing-parameters-collected-dialog-custom-action-msi-c/