2010-06-10 23 views
7

Continuando con una pregunta anterior I asked here, ahora necesito pasar a vs2010.¿Cómo puedo hacer un instalador de WiX 3.5 con un instalador de .NET 4.0 completamente autónomo?

Obtuve la versión semanal más reciente de WiX 3.5, la versión del 5 de junio de 2010.

He aquí las líneas relevantes de mi instalador:

 <ItemGroup> 
     <BootstrapperFile Include="Microsoft.Net.Framework.4.0"> 
      <ProductName>.NET Framework 4.0</ProductName> 
     </BootstrapperFile> 
     <BootstrapperFile Include="Microsoft.Windows.Installer.4.5"> 
     <ProductName>Windows Installer 4.5</ProductName> 
     </BootstrapperFile> 
     </ItemGroup> 

y

<GenerateBootstrapper ApplicationFile="MySetup.msi" ApplicationName="MyProgram" BootstrapperItems="@(BootstrapperFile)" Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" ComponentsLocation="Relative" OutputPath="$(OutputPath)" Culture="en" /> 

Sin embargo, es sólo que no trabaja. En vs2010, hay signos de admiración junto a los archivos .NET Framework 4.0 y Windows Installer 4.5, y la página de propiedades los enumera como 'Desconocido BuildAction BootstrapperFile', y la compilación simplemente no parece instalar .NET 4.0 en absoluto. La advertencia relevante es:

C:\source\depot\project\vs2010\WiXSetup\WiXSetup.wixproj(68,5): warning MSB3155: Item 'Microsoft.Net.Framework.4.0' could not be located in 'C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\'. 

Respuesta

12

La respuesta corta es cambiar

<ItemGroup> 
    <BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1" > 
     <ProductName>.NET Framework 3.5 SP1</ProductName> 
    </BootstrapperFile> 
    <BootstrapperFile Include="Microsoft.Windows.Installer.3.1" > 
     <ProductName>Windows Installer 3.1</ProductName> 
    </BootstrapperFile> 
</ItemGroup> 

<Target Name="setup"> 
    <GenerateBootstrapper 
     ApplicationFile="myproduct.msi" 
     ApplicationName="myproduct" 
     BootstrapperItems="@(BootstrapperFile)" 
     Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" 
     ComponentsLocation="Relative" 
     OutputPath="$(cddir)" 
     Culture="en"/> 
</Target> 

a

<ItemGroup> 
    <BootstrapperFile Include=".NETFramework,Version=v4.0" > 
     <ProductName>.NET Framework 4.0</ProductName> 
    </BootstrapperFile> 
    <BootstrapperFile Include="Microsoft.Windows.Installer.3.1" > 
     <ProductName>Windows Installer 3.1</ProductName> 
    </BootstrapperFile> 
</ItemGroup> 

<Target Name="setup"> 
    <GenerateBootstrapper 
     ApplicationFile="myproduct.msi" 
     ApplicationName="myproduct" 
     BootstrapperItems="@(BootstrapperFile)" 
     Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" 
     ComponentsLocation="Relative" 
     OutputPath="$(cddir)" 
     Culture="en"/> 
</Target> 

Lo descubrí yendo al directorio de arranque de SDK (C: \ Archivos de programa \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper) en mi máquina, para Visual Studios 2010. Debajo hay una lista de proyectos que puede leerse con Wix e incluirse para el arranque. En cada carpeta hay un archivo llamado Product.xml. Después de ver la ayuda here para crear un instalador .NET 3.5 encontré que el atributo ProductCode en la etiqueta Product aparece para identificar el nombre del elemento boostrap, por lo que cuando cambié el valor al que se hace referencia en C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages \ DotNetFX40 \ Product.xml funcionó.

+0

Esto lo tengo, gracias. Me alegro de que hayan decidido cambiar la estructura de sus comandos, fue muy útil y necesario. – mmr

+0

También estaba teniendo este problema en VS2010, y esta solución funcionó perfectamente (¡gracias!), Excepto por el problema cosmético de que el signo de exclamación aún persiste junto a los paquetes bootstrapped. Sin embargo, el instalador se construye completamente con paquetes bootstrapped, y se instala como se esperaba. Si alguien sabe qué causa el signo de exclamación y cómo deshacerse de él, por favor agréguelo aquí. ¡Gracias! –

Cuestiones relacionadas