Измените поля и имена полей в проекте установки Visual Studio

#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

  1. В обозревателе решений выберите <My_Project>_Setup проект
  2. В правом верхнем углу обозревателя решений нажмите значок «Редактор пользовательских действий«.

    Редактор пользовательских действий

  3. В пользовательских действиях (<My_Project>_Setup)<My_Project> непосредственно под «Фиксацией» выберите «Основной вывод из <My_Project> (Активный)<My_Project>»

    введите описание изображения здесь

  4. В свойствах измените значение «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"] in ProjectInstaller.cs .