windows - sirven - meta tags wix
Usando WiX para crear un directorio virtual de IIS (5)
Pediría esto en la lista de correo de WiX, pero parece estar abajo.
Tengo una aplicación que es tanto una aplicación de escritorio como una aplicación web que se ejecuta localmente. He creado un par de instaladores básicos de WiX, pero aún no he usado la extensión IIS para crear un directorio virtual bajo IIS. No he podido encontrar un ejemplo simple de cómo hacer esto. Todo lo que necesito hacer es crear el directorio virtual, configurar su puerto y apuntarlo a un directorio real que estoy creando con el resto del instalador.
Un bono sería habilitar IIS en la máquina si aún no está habilitado, pero supongo que eso no es posible, y de todos modos no es un factor decisivo para mí.
Si es importante, este instalador solo se ejecutará en máquinas Vista.
Buscando en el caché de Google (que creo que ahora ha sido purgado por Google) Creo que el siguiente es el código de la entrada del blog que falta David Pokluda incluido en su respuesta. Tuve que hacer un cambio de formato para poner esto en SO, perdón si es feo.
<?xml version="1.0" encoding="UTF-8"?>
<!--
IMPORTANT
1. need to add the schema iis.xsd to the property window
2. add the following iis namespace
3. add the Visual Studio reference WixIIsExtenion
-->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension">
<Product Id="7b523f47-YOUR-GUID-HERE-fea6be516471"
Name="Vince Wix 3 Web Service"
Language="1033"
Version="1.0.0.0"
Manufacturer="Vince LLC"
UpgradeCode="0a8c10df-YOUR-GUID-HERE-50b9ecdb0a41">
<Package InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="WebAppWixProject.cab" EmbedCab="yes" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="WebApplicationFolder" Name="MyWebApp">
<Component Id="ProductComponent" Guid="80b0ee2a-YOUR-GUID-HERE-33a23eb0588e">
<File Id="Default.aspx" Name="Default.aspx" Source="../MyWebApp/Default.aspx" DiskId="1" />
<File Id="Default.aspx.cs" Name="Default.aspx.cs" Source="../MyWebApp/Default.aspx.cs" DiskId="1"/>
<iis:WebVirtualDir Id="MyWebApp" Alias="MyWebApp" Directory="WebApplicationFolder" WebSite="DefaultWebSite">
<iis:WebApplication Id="TestWebApplication" Name="Test" />
</iis:WebVirtualDir>
</Component>
</Directory>
</Directory>
</Directory>
<!--
IMPORTANT
Add a virtual directory to an existing web site
If put it inside the Component, a new Web Site will be created and uninstall will remove it
-->
<iis:WebSite Id=''DefaultWebSite'' Description=''Default Web Site'' Directory=''WebApplicationFolder''>
<iis:WebAddress Id="AllUnassigned" Port="80" />
</iis:WebSite>
<Feature Id="ProductFeature" Title="Vince Wix 3 Web Service" Level="1">
<ComponentRef Id="ProductComponent" />
</Feature>
</Product>
</Wix>
<!--
IMPORTANT
To get rid of light.exe location error, do the following on the Linker Tab:
Set culture to: en-US
Supress Schema Validation in the Advanced Button
-->
Como el artículo mencionado por David parece perdido, aquí hay un ejemplo. Esto también crea una aplicación en el directorio virtual.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension">
<Product Id="6f2b2358-YOUR-GUID-HERE-aa394e0a73a2" Name="WixProject" Language="1033" Version="1.0.0.0" Manufacturer="WixProject" UpgradeCode="225aa7b2-YOUR-GUID-HERE-110ef084dd72">
<Package InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<!-- Reference existing site at port 8080 -->
<iis:WebSite Id="My.Site" Description="My Site">
<iis:WebAddress Id="My.Web.Address" Port="8080"/>
</iis:WebSite>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLLOCATION" Name="WixProject">
<Component Id="IIS.Component" Guid="{6FAD9EC7-YOUR-GUID-HERE-C8AF5F6F707F}" KeyPath="yes">
<iis:WebVirtualDir Id="My.VirtualDir" Alias="foo" Directory="INSTALLLOCATION" WebSite="My.Site">
<iis:WebApplication Id="My.Application1" Name="Web Application 1"/>
</iis:WebVirtualDir>
</Component>
</Directory>
</Directory>
</Directory>
<Feature Id="ProductFeature" Title="WixProject" Level="1">
<ComponentRef Id="IIS.Component" />
</Feature>
</Product>
</Wix>
Los fragmentos de código anteriores utilizan iis: WebAddress de forma incorrecta. Debe agregar IP = "*" si desea que esto funcione con todos los sitios web que coincidan con el nombre y el puerto. El ejemplo anterior falla durante la instalación si hay una dirección IP asignada al sitio web en IIS (wix CA no lo encontrará en general)
Rant: wix es terrible por muchas razones, en mi opinión y este es un buen ejemplo. Si falta el atributo, solo funcionará para los sitios web con la IP predeterminada; esto no es intuitivo. Wix debería al menos emitir un waring para un elemento IP faltante. Además, la IP predeterminada (localhost) se representa como * en la metabase de IIS, al mismo tiempo en el archivo wix * significa todos los sitios web (no solo *). Así que es realmente confuso y no intuitivo en absoluto.
No estoy familiarizado con WiX, pero tanto IIS 6 como 7 pueden administrarse usando objetos WMI (Instrumental de administración de Windows). He utilizado tanto PowerShell como C # para crear sitios web, directorios virtuales, permisos, etc. en IIS. Debería poder obtener estos objetos desde la mayoría de los entornos de scripting.
Utilice iis:WebVirtualDir
e iis:WebApplication
desde el espacio de nombres http://schemas.microsoft.com/wix/IIsExtension
.
Anteriormente tuve una pregunta similar y encontré el siguiente artículo bastante útil: Wix 3.0 Creación del directorio virtual de IIS