Виртуальный каталог в проекте веб-настройки
У меня есть проект веб-установки, который по умолчанию показывает виртуальный каталог на экране установщика текстового поля. Я хочу, чтобы имя виртуального каталога не редактировалось пользователем и всегда по умолчанию совпадает с тем, которое у меня установлено в моем msi. Как это можно достичь?
Ответы
Ответ 1
Если вы не хотите, чтобы пользователь менял виртуальный каталог, вы можете просто удалить диалоговое окно "Адрес установки" из пользовательского интерфейса.
- Проект установщика правой кнопкой мыши и
выберите "Пользовательский интерфейс".
- Разверните "Пуск" node.
- Щелкните правой кнопкой мыши "Адрес установки".
- Выберите "Удалить"
Если вам нужны разные параметры для веб-сайта, виртуального каталога, пула приложений, который обычно выбирается в диалоговом окне адреса установки, вы можете переопределить его с помощью специального действия, описанного другими.
Однако по моему опыту пользовательские действия не помогают с установкой значений по умолчанию, которые пользователь может изменить, поскольку они выполняют После диалоговые окна, запрашивающие ввод пользователя.
Самый простой способ установить некоторые значения по умолчанию, которые пользователь может переопределить, если необходимо в диалоговом окне, - это сделать следующее.
- Удалите страницу приветствия.
- Добавить диалоговое окно "Текстовые поля" (например, "Текстовые поля (A)" )
- Изменить видимые свойства для всех текстовых полей на false, чтобы не отображались текстовые поля.
- Измените свойство BannerBitmap и BodyText, чтобы оно выглядело как приветствие
стр.
- Задайте необходимые свойства, которые вы хотите переопределить в "Правка *** <n> Свойство"
и установите значение по умолчанию в "Правка <n> *** Значение".
Наиболее полезными свойствами являются (IMHO).
TARGETDIR - где файлы должны быть скопированы.
TARGETVDIR - виртуальный каталог, который будет создан на указанном сайте.
TARGETAPPPOOL - пул приложений для использования (ПРИМЕЧАНИЕ: это должно существовать, оно не будет создано)
TARGETSITE - веб-сайт, на котором должен быть создан виртуальный каталог (ПРИМЕЧАНИЕ. Это значение метабазы для веб-сайта... Например: "/LM/W3svc/2". Также обратите внимание, что сайт должен существовать).
Существует полный список свойств для установщика, который можно найти здесь.
Если вам действительно нужен лучший контроль над установкой IIS, я бы предложил изменить проект на стандартный проект установщика Windows и создать собственные действия для установки, чтобы вы могли программно создавать AppPools. Хорошее место, чтобы начать понимать программное создание этих вещей, здесь.
Самая большая причина для этого заключается в том, что пользовательские действия запускаются после, но должен быть создан пул приложений и веб-сайты до, который может установить установщик. p >
Ответ 2
Звучит неплохо в теории, но, насколько я могу судить, не работает, по крайней мере, не для настройки AppPool. У меня есть пользовательское действие для установки приложения (которое, кстати, отлично работает, когда установщик построен с VS2005) в моем проекте веб-настройки vs2008.
DirectoryEntry IISVdir = new DirectoryEntry(String.Format("IIS://{0}{1}/{2}", strServer, strRootSubPath, Vdir));
IISVdir.Properties["AppPoolId"].Value = appPool;
IISVdir.CommitChanges();
Установщик работает без диалога (удаленный адрес установки UI node), но AppPool, установленный в виртуальном каталоге, становится DefaultAppPool.
Другие пользовательские действия в моем вспомогательном классе выполняются и работают.
Таким образом, необходимы другие магические заклинания.
Спасибо.
Ответ 3
Чтобы получить виртуальный каталог с помощью Context.Parameters
- Добавить пользовательское действие для установки node (используйте url, если вы хотите узнать, как добавить пользовательские действия)
- Щелкните правой кнопкой мыши пользовательское действие и выберите окно свойств.
- Для свойства CustomActionsData set/targetvdir = "[TARGETVDIR]".
- Теперь в вашем классе установщика вы можете получить имя виртуального dir с помощью Context.Parameters [ "targetvdir" ].
Надеюсь, это помогло вам:)
Ответ 4
Переключитесь на Wix и используйте их Расширения веб-сайтов
Ответ 5
Выберите проект установки, "Вид" > "Редакторы" > "Пользовательский интерфейс", выберите диалоги "Адрес установочного адреса" и удалите их.
EDIT:
Как указывает Шей, пользователи могут переопределить местоположение установки по умолчанию из командной строки. Чтобы переопределить это, вы должны установить свойство TARGETDIR в свойстве InstallExecuteSequence. К сожалению, вы не можете изменить эту последовательность из Visual Studio, вы должны использовать Orca:
- Создайте проект установки.
- Откройте файл MSI от Orca.
- Создайте новое настраиваемое действие типа 51 (свойство set) с источником "TARGETDIR" (без кавычек), "Цель вашей папки назначения" и уникальным именем для Action (соглашение заключается в использовании GUID с начальным подчеркиванием).
- Создайте новую строку в InstallExecuteSequence с вашим уникальным именем для Action, "NOT Installed" для Condition и порядковым номером перед использованием TARGETDIR (750 было первым использованием в образце, который я сделал, поэтому я использовал последовательность из 555).
Ответ 6
Org не разрешает использование открытого источника или открытого источника GPL.
Решения:
* отредактировать настраиваемое действие (щелкните правой кнопкой мыши > представление > настраиваемое действие), чтобы исправить виртуальный каталог и путь
Измените параметры customactiondata:
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="[TARGETVDIR]" /targetsite="[TARGETSITE]"
To:
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="FIXED_NAME" /targetsite="[TARGETSITE]"
Вы можете просто удалить адрес установки из пользовательского интерфейса и настроить компонент, который передает информацию в пользовательскую установку
- Напишите оболочку поверх msbuild с помощью msbuildtasks
Ответ 7
Lo-tech решение: отредактируйте файл vdproj в блокноте ++, чтобы установить виртуальный каталог и удалить диалоговое окно "Адрес установки" в редакторе пользовательского интерфейса.