Кажется, это должно быть довольно просто. У меня есть проект установщика Windows. Внутри пользовательского интерфейса я добавил диалог с двумя переключателями. Установщик имеет настраиваемое действие в «Install», которое использует класс установки из основного вывода одного из моих проектов. Возможно ли получить значение выбранного переключателя из метода Install
в классе установщика?Могу ли я каким-либо образом получить значения, введенные в пользовательском интерфейсе, в мой код класса пользовательских действий?
ответ
Чтобы получить/установить свойство, вам нужен дескриптор MSI, который из того, что я знаю, вы не можете получить из специального действия класса .NET Installer.
Что вы можете сделать, это настроить настраиваемое действие для принятия новых параметров и присвоить значение вашего свойства этим параметрам при настройке настраиваемого действия.
Если вы используете 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).
Если это проект установки 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:
http://blog.billsdon.com/2011/05/passing-parameters-collected-dialog-custom-action-msi-c/