Ну, на самом деле, я вижу, что вы просто изменили линеаризацию конструктора, что я считаю довольно простым, поэтому сначала давайте разобраться в линеаризации конструктора
object Linearization3 {
def main(args: Array[String]) {
var x = new X
println()
println(x.foo)
}
}
class A {
print("A")
def foo() = "A"
}
trait B extends A {
print("B")
override def foo() = super.foo() + "B" // Hence I flipped yours to give exact output as constructor
}
trait C extends B {
print("C")
override def foo() = super.foo() + "C"
}
trait D extends A {
print("D")
override def foo() = super.foo() + "D"
}
class X extends A with D with C with B
Какие выходы:
ADBC
ADBC
Итак, чтобы вычислить вывод, я просто беру классы / черты один за другим слева направо, а затем рекурсивно записываю выходы (без дубликатов), вот как:
class X extends A with D with C with B
object Linearization3 {
def main(args: Array[String]) {
var x = new X
println()
println(x.foo)
}
}
class A {
print("A")
def foo() = "A"
}
trait B extends A {
print("B")
override def foo() = "B" + super.foo()
}
trait C extends B {
print("C")
override def foo() = "C" + super.foo()
}
trait D extends A {
print("D")
override def foo() = "D" + super.foo()
}
class X extends A with D with C with B
Выход:
ADBC
CBDA
Надеюсь, это было достаточно просто для новичка Мне нравится
Если вы не хотите, чтобы пользователь изменял виртуальный каталог, вы можете просто удалить диалоговое окно «Адрес установки» из Пользовательский интерфейс.
Если вам нужны другие параметры для веб-сайта, виртуального каталога, пула приложений, которые обычно выбираются в диалоговом окне адреса установки, вы можете переопределить его с помощью Пользовательское действие, как описали другие.
Однако, по моему опыту, пользовательские действия не помогают с настройками по умолчанию, которые пользователь может изменить, потому что они выполняют После диалоговых окон, которые запрашивают пользовательский ввод.
Самый простой способ установить некоторые значения по умолчанию, которые пользователь может переопределить при необходимости в диалоговом окне, - это сделать следующее.
Наиболее полезными свойствами (IMHO) являются.
TARGETDIR - Место для копирования файлов.
TARGETVDIR - Виртуальный каталог, который будет создан на указанном сайте.
TARGETAPPPOOL - Пул приложений для использования (ПРИМЕЧАНИЕ. Он должен существовать, он не будет создан)
TARGETSITE - веб-сайт, на котором создается виртуальный каталог (ПРИМЕЧАНИЕ. Это значение метабазы для веб-сайта ... Например: «/ LM / W3svc / 2». Также обратите внимание, что сайт должен существовать).
Полный список свойств установщика можно найти здесь здесь .
Если вы действительно хотите лучше контролировать настройку IIS, я бы предложил изменить ваш проект на стандартный. Проект установщика Windows и создание пользовательских действий установки, чтобы вы могли программно создавать AppPools. Хорошее место, чтобы начать понимать программирование создания этих вещей - это здесь .
Самая большая причина для того, чтобы сделать это таким образом, состоит в том, что пользовательские действия запускаются после запроса , но пул приложений и веб сайты должны быть созданы , прежде чем установщик может запросить.
Чтобы получить виртуальный каталог с помощью Context.Parameters
Org не допускает использование открытого источника или GPL с открытым исходным кодом.
Решение: * отредактируйте пользовательское действие (щелкните правой кнопкой мыши> просмотр> пользовательское действие), чтобы исправить виртуальный каталог и путь Измените data_mactiondata:
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="[TARGETVDIR]" /targetsite="[TARGETSITE]"
На:
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="FIXED_NAME" /targetsite="[TARGETSITE]"
Вы можете просто удалить адрес установки из пользовательского интерфейса и настроить компонент, который передает информацию в пользовательскую установку
Выберите проект установки, «Просмотр»> «Редакторы»> «Интерфейс пользователя», выберите диалоговые окна «Адрес установки» и удалите их.
«РЕДАКТИРОВАТЬ»:
Как указывает Шей, пользователи могут переопределить настройки по умолчанию. установить местоположение из командной строки. Чтобы переопределить это, вы должны установить свойство TARGETDIR в вашей InstallExecuteSequence. К сожалению, вы не можете изменить эту последовательность в Visual Studio, вам нужно использовать Orca:
Переключитесь на Wix и используйте их веб-Расширения
Для меня в Щелчке правой кнопкой VS
по проекту
установки Представление-> Файловая система
веб-приложение Папка (в левой панели)
в окне свойств (направо, нижняя часть)
Виртуальный каталог (последний)
Здесь можно измениться/установить путь по умолчанию на IIS т.е. нацелены на каталог, который может быть установлен.
В теории звучит неплохо, но, насколько я могу судить, не работает, по крайней мере, для настройки 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.
Другие настраиваемые действия в моем вспомогательном классе выполняются и работают.
Так что, должно быть, нужны другие магические заклинания.
Спасибо.