PRE-Requisitos en instalaciones con ClickOnce

Para distribuir un desarrollo con dependencias comunes, tipo .NET Framework, Crystal Reports, SQL SERVER Express, etc…, no necesitamos crearnos una instalación compleja con InstallShield. Podemos hacer uso de ClickOnce, que nos permite publicar y mantener las actualizaciones de forma muy sencilla.

ClickOnce001

En mi caso tenía una pequeña solución escrita en C# que utilizaba Crystal Report y SQL Server LocalBD. En las propiedades del propio proyecto C# disponemos de la opción de publicación con ClickOnce. Hasta ahí todo perfecto, pero a la hora de configurar los PRE-Requesititos de mi solución no encontraba en el menú la opción de Crystal. Yo tenía un windows 7 y actualice a windows 8 y después a windows 8.1. ClickOnce utiliza una carpeta de sistema para los re-requisitos, entiendo que será todos los componentes instalados para el desarrollo y algunos que trae por defecto windows. El caso es que todos esos datos están en “C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper\Packages” menos el de Crystal que estaba en “C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages”. Solución evidente, copiamos la carpeta “Crystal Reports for .NET Framework 4.0” de …\v7.0A\.. a …\v8.1A\… y ya podremos seleccionar Crystal como pre-requisito.

ClickOnce002

Pero se nos plantea otro problema. Hay pre-requisitos que dependen de otros y sin embargo se lanzabn antes que los que necesitan. Así que descubrí que se pueden editar unos ficheros incluidos dentro de cada carpeta de pre-requisito llamado Product.xml. En ese fichero podemos decirle el requisito previo a instalar. Por ejemplo, Crystal Report le tuve que decir que instalase previamente .NET 4.

<RelatedProducts>
<DependsOnProduct Code=”.NETFramework,Version=v4.0″ />
<DependsOnProduct Code=”Microsoft.Net.Framework.2.0″ />
<DependsOnProduct Code=”Microsoft.Data.Access.Components.2.8″ />
</RelatedProducts>