Виртуальный каталог в проекте веб-настройки - PullRequest
16 голосов
/ 03 апреля 2009

У меня есть проект веб-установки, который по умолчанию показывает виртуальный каталог на экране установщика текстового поля. Я хотел бы, чтобы имя виртуального каталога не могло быть отредактировано пользователем и всегда по умолчанию совпадает с тем, которое я настроил в моем msi Как этого достичь?

Ответы [ 7 ]

33 голосов
/ 16 апреля 2009

Если вы не хотите, чтобы пользователь изменял виртуальный каталог, вы можете просто удалить диалоговое окно «Адрес установки» из интерфейса пользователя.

  1. Щелкните правой кнопкой мыши по проекту установки и выберите «Пользовательский интерфейс».
  2. Разверните узел «Старт».
  3. Щелкните правой кнопкой мыши «Адрес установки».
  4. Выберите «Удалить»

Если вам нужны другие параметры для веб-сайта, виртуального каталога, пула приложений, которые обычно выбираются в диалоговом окне адреса установки, вы можете переопределить их с помощью настраиваемого действия, как описано другими.

Однако, по моему опыту, пользовательские действия не помогают с настройками по умолчанию, которые пользователь может изменить, потому что они выполняют После диалогов, которые запрашивают ввод данных пользователем.

Самый простой способ установить некоторые значения по умолчанию, которые пользователь может переопределить при необходимости в диалоговом окне, - это сделать следующее.

  1. Удалить страницу приветствия.
  2. Добавление диалогового окна «Текстовые поля» (например, «Текстовые поля (А)»)
  3. Измените видимые свойства для всех текстовых полей на false, чтобы текстовые поля не отображались.
  4. Измените свойства BannerBitmap и BodyText, чтобы они выглядели как приветствие стр.
  5. Установите необходимые свойства, которые вы хотите переопределить, в «Редактировать *** Свойство» и установите значение по умолчанию в «Редактировать *** Значение».

Наиболее полезными свойствами (ИМХО) являются.

TARGETDIR - Куда файлы должны быть скопированы.
TARGETVDIR - Виртуальный каталог, который будет создан на указанном сайте.
TARGETAPPPOOL - используемый пул приложений (ПРИМЕЧАНИЕ. Он должен существовать, он не будет создан)
TARGETSITE - веб-сайт, на котором создается виртуальный каталог (ПРИМЕЧАНИЕ. Это значение метабазы ​​ для веб-сайта ... Например: "/ LM / W3svc / 2" Также обратите внимание, что сайт должен существовать).

Полный список свойств для установщика можно найти здесь .

Если вы действительно хотите лучше контролировать настройку IIS, я бы предложил изменить ваш проект на стандартный проект установщика Windows и создать пользовательские действия по установке, чтобы вы могли программно создавать AppPools. Хорошее место, чтобы начать понимать программирование создания этих вещей - здесь .

Самая большая причина для этого заключается в том, что пользовательские действия запускаются после запроса , но пул приложений и веб-сайты должны быть созданы до установщик может подсказать.

3 голосов
/ 07 мая 2009

Звучит хорошо в теории, но, насколько я могу судить, не работает, по крайней мере, не для настройки AppPool. У меня есть настраиваемое действие для установки apppool (который, кстати, прекрасно работает, когда инсталлятор собран с VS2005) в моем проекте веб-установки vs2008.

DirectoryEntry IISVdir = new DirectoryEntry(String.Format("IIS://{0}{1}/{2}", strServer, strRootSubPath, Vdir));
IISVdir.Properties["AppPoolId"].Value = appPool;
IISVdir.CommitChanges();

Программа установки запускается без диалога (удален узел пользовательского интерфейса с адресом установки), но AppPool, установленный в виртуальном каталоге, в конечном итоге становится DefaultAppPool.

Другие пользовательские действия в моем классе помощника работают и работают.

Значит, нужны другие магические заклинания.

Спасибо.

2 голосов
/ 15 апреля 2009

Чтобы получить виртуальный каталог, используя Context.Parameters

  1. Добавление узла настраиваемых действий для установки (используйте url , если вы хотите знать, как добавлять настраиваемые действия)
  2. Щелкните правой кнопкой мыши на пользовательском действии и выберите окно свойств.
  3. Для свойства CustomActionsData установите /targetvdir="[TARGETVDIR]".
  4. Теперь в вашем классе установщика вы можете получить имя виртуального каталога с помощью Context.Parameters ["targetvdir"]. Надеюсь, это помогло вам:)
1 голос
/ 14 июня 2012

Lo-tech решение: отредактируйте файл vdproj в notepad ++, чтобы установить виртуальный каталог, и удалите диалоговое окно «Адрес установки» из редактора интерфейса пользователя.

1 голос
/ 10 апреля 2009

Org не разрешает использовать открытый исходный код или GPL с открытым исходным кодом.

Решения: * отредактируйте настраиваемое действие (щелкните правой кнопкой мыши> вид> настраиваемое действие), чтобы исправить виртуальный каталог и путь Измените привычные данные:

/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="[TARGETVDIR]" /targetsite="[TARGETSITE]" 

Кому:

  /targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="FIXED_NAME" /targetsite="[TARGETSITE]" 

Вы можете просто удалить установочный адрес из пользовательского интерфейса и настроить компонент, который передает информацию в пользовательскую установку

  • Написать оболочку над msbuild с помощью msbuildtasks
1 голос
/ 10 апреля 2009

Выберите проект установки, «Просмотр»> «Редакторы»> «Интерфейс пользователя», выберите диалоговые окна «Адрес установки» и удалите их.

EDIT:

Как указывает Шей, пользователи могут переопределить расположение установки по умолчанию из командной строки. Чтобы переопределить это, вы должны установить свойство TARGETDIR в вашей InstallExecuteSequence. К сожалению, вы не можете изменить эту последовательность из Visual Studio, вы должны использовать Orca:

  1. Создайте свой проект установки.
  2. Откройте файл MSI из Orca.
  3. Создайте новое настраиваемое действие типа 51 (установить свойство) с источником «TARGETDIR» (без кавычек), целью вашей целевой папки и уникальным именем для действия (соглашение заключается в использовании GUID с начальным подчеркиванием).
  4. Создайте новую строку в InstallExecuteSequence с вашим уникальным именем для Action, «NOT Installed» для Condition и порядковым номером перед использованием TARGETDIR (750 был первым использованием в образце, который я сделал, поэтому я использовал последовательность из 555).
1 голос
/ 03 апреля 2009

Переключитесь на Wix и используйте веб-расширения

...