#visual-studio-2015 #visual-studio-setup-proje
Вопрос:
У меня есть старый рабочий проект, построенный в Visual Studio 2015, который я обновляю. В проекте настройки есть восемь текстовых полей. У всех них есть такие имена, как FOOBAR
и QWERTY
которые доступны в ProjectInstaller.cs
. Если я изменю значение по умолчанию FOOBAR
, например bazqux
(жестко заданное значение по умолчанию) или [FOOBAR]
(передача из аргументов), это будет отражено в ProjectInstaller.cs
.
Однако, если я добавлю новое поле, это не будет отражено ProjectInstaller.cs
. Кроме того, переименование поля не отражается.
Вот как настраивается проект установки:
Как мне зарегистрировать новое имя поля или изменить имя поля, чтобы я мог использовать новое имя в ProjectInstaller.cs
нем ?
Ответ №1:
Я нашел здесь статью, которая дала мне подсказки для поиска настроек в VS2015: https://www.codeproject.com/articles/12780/a-setup-and-deployment-project-that-passes-paramet
- В обозревателе решений выберите
<My_Project>_Setup
проект - В правом верхнем углу обозревателя решений нажмите значок «Редактор пользовательских действий«.
- В пользовательских действиях (<My_Project>_Setup)<My_Project> непосредственно под «Фиксацией» выберите «Основной вывод из <My_Project> (Активный)<My_Project>»
- В свойствах измените значение «CustomDataAction«, сопоставив имена полей с аргументами команды. Формат таков
/ARGUMENT="[FIELDNAME]"
, поэтому аргументы и поля не обязательно должны иметь одинаковые имена. Каждая пара имен аргументов и полей отделяется от следующей пары одним пробелом.
Кое-какие готы:
- Значения полей не экранируются перед вставкой, поэтому завершающая обратная косая
- Вставка аргументов становится возможной благодаря знанию формата аргументов. Например, ввод
foobar" /QWERTY="This is bad!
(без начальной или конечной двойной кавычки) в поле во время процесса установки вставит новый аргумент, вызываемыйQWERTY
со значениемThis is bad!
. - Аргументы для установщика также могут быть введены таким образом.
- Аргументы файла .msi передаются через поля установщика (и, возможно, редактируются пользователем) перед передачей установщику. Например
My_Project_Setup.msi FOO=42
, [Edit1Property:BAR
, Edit1Value:[FOO]
], [CustomDataAction:/BAZ="[BAR]"
] будут переданы42
(при условии, что пользователь не изменил его) в аргументеBAZ
, который затем будет использоваться вContext.Parameters["BAZ"]
inProjectInstaller.cs
.