Фон
У меня есть проект веб-настройки в Visual Studio 2010.
В разделе 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"];
Проблема
Я хочу иметь возможность запустить программу установки из сценария без интерфейса, поэтому мне нужно передать значения для foo
и bar
через командную строку.Вы должны сделать это, добавив PROPERTY=VALUE
к командной строке MSI, например:
msiexec /qn /i MyInstaller.msi EDITA1=John EDITA2=Smith BLARB=Donut
Но это не работает.Пользовательские параметры, которые не связаны с пользовательскими текстовыми полями do , отображаются.Например, BLARB
проходит через очень хорошо (Параметры ["zip"] == "Пончик").Но свойства, связанные с текстовыми полями, не отображаются, как будто они обнуляются в пустом (но скрытом) диалоговом окне перед вызовом моей пользовательской функции установки.