2

这看起来应该很简单。我有一个 Windows 安装程序项目。在 UI 中,我添加了一个带有 2 个单选按钮的对话框。安装程序对“安装”有一个自定义操作,它使用我的一个项目的主要输出中的安装类。是否可以从安装程序类的方法中获取所选单选按钮的值Install

4

3 回答 3

2

要获取/设置属性,您需要一个 MSI 句柄,据我所知,您无法从 .NET Installer 类自定义操作中获取该句柄。

您可以做的是配置自定义操作以接受新参数,并在配置自定义操作时将您的属性值分配给这些参数。

于 2012-05-04T08:20:37.180 回答
1

如果这是一个 Visual Studio 安装程序项目,并且看起来是,添加的 RadioButtons 对话框的属性窗口会告诉您属性名称是 BUTTON2,所以这就是您使用标准 /mybutton=[BUTTON2 传递给自定义操作安装程序类的内容] 类型的语法,因此您可以使用安装程序类中 Context.Parameters 集合中的键 mybutton 获取值。

此处描述了对话框行为:

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

and you'd end up with a value of 1 or 2 in your code, depending on which was selected. With installer classes Visual Studio provides that infrastructure around the call, including CustomActionData handling

Like this:

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/

于 2015-06-03T21:32:36.077 回答
0

如果您使用WiX 部署工具基础 (DTF)来开发您的自定义操作,您可以访问以下属性:

  • 通过立即执行session[property name](诚然,我对这种方法不太熟悉,因此您可能需要进行一些实验)有关更多详细信息,请参阅此 stackoverflow 问题
  • 通过延迟执行CustomActionData
    • 您可以在安装程序的其他位置填充CustomActionData属性值,并将其读取为session.CustomActionData[property name]

CustomActionData 的一个技巧是您的属性名称必须与您的自定义操作的名称匹配,并且您将值作为分号分隔的名称=值对列表提供,例如Name1=value1;Name2=value2等。

您还需要运行程序集MakeSfxCA.exe以使安装程序可以使用您的操作。您可以在 Visual Studio 中将其作为构建后事件执行。

基于 DTF 的 .Net 自定义操作可用于 WiX 或 InstallShield 安装程序(可能是任何生成 MSI 安装程序的工具)。

于 2015-06-03T20:27:27.450 回答