2009-04-03 14 views
16

Tengo un proyecto de instalación web que muestra de manera predeterminada el directorio virtual en la pantalla del instalador de cuadros de texto. Deseo que el nombre del directorio virtual no pueda ser editado por el usuario y que siempre esté predeterminado al que tengo configurado en mi msi. ¿Cómo se puede lograr esto?Directorio virtual en Web Setup Project

+0

Además, si esto no se puede lograr entonces, ¿cómo puedo obtener el valor del directorio virtual cambió por medio de los Context.Parameters []? – chugh97

Respuesta

1

Cambiar a Wix y utilizar su Web Extensions

+0

Estoy viendo el proyecto de conjunto de aplicaciones web ya que no estoy interesado en el código abierto ya que org no lo permite. – chugh97

+1

Wix fue escrito y mantenido por Microsoft, se suponía que era parte de Visual Studio 10. Muchos originaciones (incluida la instalación de Office 2007) están usando Wix sin ningún problema. –

1

Seleccione su proyecto de instalación, Ver> Editores> Interfaz de usuario, seleccione los cuadros de diálogo de la instalación de direcciones, y eliminarlos.

EDIT:

Como señala Shay, los usuarios pueden anular la ubicación de instalación predeterminada desde la línea de comandos. Para anular esto, debe establecer la propiedad TARGETDIR en su InstallExecuteSequence. Desafortunadamente, no puede cambiar esta secuencia desde Visual Studio, debe usar Orca:

  1. Cree su proyecto de instalación.
  2. Abra el archivo MSI de Orca.
  3. Crear una nueva acción personalizada de tipo 51 (conjunto de propiedades) con "TARGETDIR" Fuente (sin comillas), Objetivo de la carpeta de destino y un nombre único para la acción (la convención es usar un GUID con el guión bajo inicial).
  4. crear una nueva fila en el InstallExecuteSequence con su nombre único para la Acción, "no se instala" para el Estado, y un número de secuencia antes de que el uso de TARGETDIR (750 fue el primer uso en la muestra que hice, por lo que utiliza una secuencia de 555).
+0

borrar de la interfaz de usuario aún permitiría al usuario cambiar el dir de configuración a través de la línea de comandos. –

1

Org no permite de código abierto, o de código abierto GPL.

Soluciones: * editar la acción personalizada (clic derecho> ver> acción personalizada) para fijar el directorio virtual y la ruta Cambiar el CustomActionData:

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

Para:

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

Usted podría simplemente eliminar la Dirección de instalación de la interfaz de usuario y configurar un componente que transfiera información a la instalación personalizada

  • Escribir un envoltorio sobre msbuild con msbuildtasks
2

Con el fin de obtener el directorio virtual mediante Context.Parameters

  1. Agregar una acción personalizada para instalar nodo (utilizar este url si usted quiere saber cómo para agregar acciones personalizadas)
  2. Haga clic con el botón derecho en la acción personalizada y seleccione la ventana de propiedades.
  3. Para la propiedad CustomActionsData set/targetvdir = "[TARGETVDIR]".
  4. Ahora en su clase de instalador puede obtener el nombre del directorio virtual por Context.Parameters ["targetvdir"]. Espero que esto ayudó ti :)
33

Si no desea que el usuario cambie el directorio virtual que puede simplemente eliminar el cuadro de diálogo "Instalación Dirección" de la interfaz de usuario.

  1. derecho haga clic en Proyecto de instalación y seleccionar "interfaz de usuario".
  2. Expande el nodo "Inicio".
  3. Haga clic derecho en "Dirección de instalación".
  4. seleccionar "Borrar"

Si desea diferentes parámetros para el sitio Web, directorio virtual del grupo de aplicaciones que normalmente es seleccionado por el diálogo dirección de la instalación se puede reemplazar con una acción personalizada como han descrito otros.

Sin embargo, en mis acciones personalizadas experiencia no ayudan con la configuración de ajustes que el usuario puede cambiar, ya que ejecutan Después los cuadros de diálogo que solicitan la entrada del usuario.

La manera más fácil de establecer algunos valores predeterminados que el usuario puede anular si es necesario en un cuadro de diálogo es hacer lo siguiente.

  1. Elimina la página de bienvenida.
  2. Agregue un cuadro de diálogo Textboxes (por ejemplo "Textboxes (A)")
  3. Cambie las propiedades Visibles para todos los cuadros de texto en falso para que no se muestren cuadros de texto.
  4. Cambiar el BannerBitmap y propiedad Cuerpo por lo que parece algo así como una bienvenida página.
  5. establecer las propiedades necesarias que desea anular en el "Editar *** <n> propiedad" y establecer el valor por defecto en la "Edición <n> *** Valor".

Las propiedades más útiles (en mi humilde opinión) son.

TARGETDIR - ¿Dónde están los archivos que desea copiar.
TARGETVDIR - El directorio virtual que se creará en el sitio especificado.
TARGETAPPPOOL - El grupo de aplicaciones para utilizar (NOTA: Este debe existir, no se creará)
TargetSite - El sitio web donde el directorio virtual se va a crear (NOTA: Este es el valor de la metabase de el sitio web ... Por ejemplo: "/ LM/W3svc/2". También tenga en cuenta que el sitio debe existir).

Hay una lista completa de propiedades para el instalador en here.

Si realmente desea tener un mejor control sobre la configuración de IIS, le sugiero que cambie su proyecto a un proyecto estándar de Windows Installer y cree acciones de instalación personalizadas para que pueda crear aplicaciones de programa de manera programática. Un buen lugar para comenzar a entender la creación programática de estas cosas es here.

La principal razón para hacerlo de esta manera es que se ejecutan acciones personalizadas después que provocó, pero el grupo de aplicaciones y sitios web deben crearse antes de el instalador puede provocar.

+1

Esa nota sobre que TARGETSITE era un valor de metabase era un salvavidas, ¡gracias! – ladenedge

+0

¡Sí, he estado buscando horas para TARGETSITE! ¡Aclamaciones! – Markive

+0

Que yo sepa usted es la única persona en Internet que documenta los mapas de TARGETAPPPOOL en el grupo de aplicaciones .. TY –

3

suena bien en teoría, pero lo que puedo decir, no funciona, al menos no para establecer AppPool. Tengo una acción personalizada para configurar el apppool (que, por cierto, funciona bien cuando el instalador está construido con VS2005) en mi proyecto de configuración web vs2008.

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

el instalador se ejecuta sin diálogo (eliminado el nodo de interfaz de usuario de dirección de la instalación) pero el AppPool establecer en el directorio virtual termina siendo DefaultAppPool.

Otras acciones personalizadas en mi clase de ayuda hacen correr y trabajar.

Así que debe haber algunos otros hechizos mágicos necesarios.

Gracias.

+0

esto parece funcionar desde la línea de comandos: XYZZX.msi/qr/TARGETAPPPOOL = "MyAppPoolName" ¿Es posible establecer el parámetro TARGETAPPPOOL en una acción personalizada? –

+0

bien, ya que la opción de línea de comandos funcionó, tal vez esto sería: si (this.Context.Parameters.ContainsKey ("TARGETAPPPOOL")) \t this.Context.Parameters [ "TARGETAPPPOOL"] = apppool; else { \t this.Context.Parameters.Add ("TARGETAPPPOOL", appPool); } Nop - todavía se establece en DefaultAppPool –

+1

acabo de tener un problema similar. Solo pude resolverlo haciendo una acción personalizada para ejecutar en la etapa de compromiso, en lugar de la etapa de instalación. –

1

solución Mín tecnología: editar el archivo vdproj en Notepad ++ para establecer el directorio virtual y retire el diálogo Instalación de direcciones en el Editor de la interfaz de usuario.

+0

Me pregunto por qué nadie más respondió esto. Simple y fácil.Gracias una tonelada. –

Cuestiones relacionadas