2012-09-27 25 views
5

Estoy tratando de utilizar Burn y WIX 3.6 para hacer un instalador para mi aplicación. El instalador debe ser capaz de instalar .NET 3.5 SP1 desde el sitio web de Microsoft. Estoy trabajando desde un proyecto WIX en funcionamiento creado con WIX 3.5. Funciona, si .NET 3.5 SP1 se ha instalado previamente en la máquina de destino. El primer paso parece ser crear un paquete, así que agregué un elemento a mi archivo Product.wxs. Cuando lo hago, recibo un error que dice que no es válido en el esquema, debo tener un en su lugar. ¿Eso significa que tengo que transferir todas las definiciones de productos en un fragmento? No está claro cómo lo hago. Entonces, la cosa se vuelve más complicada, ya que WixNetfxExtension solo proporciona PackageRef para .NET 4.0 y 4.5. No estoy listo para cambiar mi aplicación a esa versión del marco. Entonces, ¿cómo obtengo .NET 3.5 SP1 de una fuente web en mi paquete?usando WIX3.6 para instalar .NET Framework 3.5 SP1 con Burn

¿Hay un ejemplo de trabajo de hacer esto en cualquier lugar?

Respuesta

11

No está claro en su pregunta en la que está tratando de hacer cosas así que voy a empezar desde el principio.

Crear un nuevo proyecto Wix quemar programa previo. Aquí es donde se instalarán sus dependencias y luego se generará su instalador Wix 3.5 existente.

descargar .NET 3.5 SP1 paquete completo y tomar nota de la URL directa utilizada para descargarlo.

Usando heat.exe (en la papelera dir Wix 3.6) ejecute el siguiente comando que generará un archivo WXS con los detalles de la instalación de .NET.

heat.exe payload [path_to_net_installer] -o [path_to_wxs] 

this.will DOY siguiente en un wxs:

<RemotePayload CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8" 
       CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1" 
       Description=".NET Framework 3.5 Setup" 
       Hash="3DCE66BAE0DD71284AC7A971BAED07030A186918" 
       ProductName=".NET Framework 3.5" 
       Size="242743296" 
       Version="3.5.30729.1" /> 

Añadir esto en su proyecto en programa previo como un hijo de un elemento ExePackage y actualizar el elemento con la descarga url guardado anteriormente. Esto descargará automáticamente el instalador .net o lo puede ubicar al lado del ejecutable bootstrapper y lo detectará.

Crea un chain en el Bundle que contiene .NET ExePackage y un MsiPackage para tu instalador. A continuación, terminar con algo como (muchos de los atributos requeridos Te dejaré para rellenar!):

<Bundle Name="$(var.SkuName)" 
     Copyright="$(var.Copyright)" 
     Manufacturer="$(var.Manufacturer)" 
     Version="$(var.ProductVersion)" 
     UpgradeCode="$(var.UpgradeCode)"> 
    <Chain> 
     <ExePackage Id="dotNetFX3.5"> 
      <RemotePayload /> 
     </ExePackage> 
     <MsiPackage Id="MyMsi" /> 
    </Chain> 
    </Bundle> 

Construir y después, deberá tener un gran exe con su MSI incluido o si decide para no comprimirlo es un exe que ejecuta su msi (necesitará estar en la misma carpeta).

+2

¡Muchas gracias! No estaba claro si necesitaba más de un proyecto WIX, en absoluto. La documentación no es muy clara acerca de llevarlo de lo básico a un proyecto en funcionamiento (y no estoy tratando de hacer algo excepcionalmente complejo, pensé: ¿qué tiene de complicado .NET con 3.5 SP1 y quiero instalar .NET desde la descarga de Microsoft? ?). De todos modos, ese fue el consejo que necesitaba! –

Cuestiones relacionadas