背景
我在 Visual Studio 2010 中有一个 Web 设置项目。
在该User Interface
部分中,我有一个自定义Textboxes
对话框。这些文本字段的属性名称类似于 EDITA1、EDITA2。
我有一个Custom Action
利用这些属性的:
CustomActionData = /foo="[EDITA1]" /bar="[EDITA2]" /zip="[BLARB]"
在处理此自定义操作的代码中,这些参数在Context.Parameters
字典中可用
public override void Install(System.Collections.IDictionary stateSaver) {
string foo = Context.Parameters["foo"]; // originates in edit box EDITA1
string bar = Context.Parameters["bar"]; // originates in edit box EDITA2
string zip = Context.Parameters["zip"];
问题
我希望能够在没有 UI 的情况下从脚本运行安装程序,因此我需要通过命令行传递foo
值bar
。您应该这样做的方式是附加PROPERTY=VALUE
到您的 MSI 命令行,如下所示:
msiexec /qn /i MyInstaller.msi EDITA1=John EDITA2=Smith BLARB=Donut
但这不起作用。不与自定义文本字段关联的自定义参数会显示。例如,BLARB
通过就好了 (Parameters["zip"]=="Donut")。但是与文本字段关联的属性不会显示出来,就好像它们在调用我的自定义安装函数之前被空的(但隐藏的)对话框破坏了一样。