Hace poco intenté generar un instalador usando ClickOnce para un proyecto de juego XNA para Windows y usando el .NET Framework 3.5 SP1 como pre-requisito y ademas seleccionando la opción de descargar los pre-requisitos desde la misma ubicación que mi aplicación con el fin de que el instalador verifique los pre-requisitos seleccionados y los instale si no se encuentran en la maquina, como se ve observa en la siguiente imagen.

Al realizar la publicación del proyecto para que me genere el instalador en una carpeta local del sistema, de modo que se pueda copiar a un CD o DVD me encontré con el siguiente error y otros similares producidos porque el paquete de bootstrapper del .NET Framework 3.5 SP1 no esta configurado correctamente:
La solución a este problema y otros que se pueden presentar con el Framework 3.5 se encuentran en este Readme Readme, sin embargo, a continuación la detallo para mayor facilidad.
I. Actualizar los datos del paquete
- Vaya al directorio “[Program Files]\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1″ o “%ProgramFiles(x86)%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1″ para sistemas operativos x64
- Edite el archivo product.xml usando notepad (Si esta en Windows Vista o Windows 7 debe primero ejecutar notepad como Administrador y luego abrir el archivo desde el programa)
- Pegue lo siguiente dentro del elemento <PackageFiles>:
<PackageFile Name=”TOOLS\clwireg.exe” />
<PackageFile Name=”TOOLS\clwireg_x64.exe” />
<PackageFile Name=”TOOLS\clwireg_ia64.exe” /> - Busque el elemento <PackageFile Name=”dotNetFX30\XPSEPSC-x86-en-US.exe” y cambie el valor de PublicKey a: 3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001
- Busque el elemento <PackageFile Name=”dotNetFX30\XPSEPSC-amd64-en-US.exe” y cambie el valor de PublicKey al mismo del paso anterior
- Guarde el archivo product.xml
II. Descargue y extraiga los archivos de instalación
- Descargue el archivo dotNetFx35.exe a su disco duro desde acá
- Abra una ventana de línea de comandos y vaya hasta el directorio en el cual descargó el archivo dotNetFx35.exe.
- En la ventana de comandos escriba:
dotNetFx35.exe /x:.
Esto extraerá los archivos del Framework a una carpeta llamada “WCU” en el directorio actual. - Copie los contenidos de la carpeta WCU\dotNetFramework y peguelos en el directorio %Program Files%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1 (%ProgramFiles(x86)%\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFx35SP1 para sistemas operativos x64)
NOTA: No copie el directorio WCU\dotNetFramework como tal sino las 5 carpetas y el archivo dotNetFx35setup.exe que contiene.Ahora puedes borrar los archivos y carpetas que descargó y extrajó en los pasos 1 y 3.
Y listo, eso es todo.

