Estoy tratando de crear un archivo autoextraíble para una aplicación de Windows que he escrito. Mi aplicación usa la última versión de .Net 4.0, y quiero incluir la configuración de .Net en el instalador de SFX. Sin embargo, si la computadora necesita instalar .Net framework y reiniciar, no continuará correctamente la instalación de mi aplicación. Miré a través de las otras publicaciones sfx en los sitios de Stack, pero ninguno de ellos son problemas que impliquen un instalador .Net como un requisito previo para la aplicación.7zip Self Extracting Archive (SFX) and .Net Installer
Mi proyecto produce 4 archivos: "App Installer.msi" "setup.exe" "WindowsInstaller-KB893803-v2-x86.exe" (en la carpeta "WindowsInstaller3_1") y "dotNetFx40_Client_x86_x64.exe" (en la carpeta "DotNetFX40Client"), todos los cuales creo que son estándar.
Yo uso 7zip para crear el SFX de la siguiente manera:
primer lugar, utilizar 7zip para comprimir todos los archivos en un solo archivo:
7z.exe a -r AppInstallFiles.7z *
A continuación, hago una copia binaria con los 7zS archivo .sfx (utilizado para crear un instalador autoextraíble), mi archivo de configuración y el archivo. El archivo de configuración es la siguiente:
;[email protected]@!UTF-8!
Title="MyApp Installer"
ExecuteFile="setup.exe"
;[email protected]@!
Y copiarlos con la línea:
copy /b 7zS.sfx + config.txt + AppInstallFiles.7z MyAppInstaller.exe
el instalador funciona perfectamente en ordenadores que ya tienen .Net 4.0 Mi problema surge en los ordenadores que no lo hacen tener .Net Framework - Ejecuto el SFX, extrae todo en un directorio temporal. Luego, cuando setup.exe reconoce que la computadora no tiene .Net 4.0, llama al .Net Installer. Esto se extrae a su propio directorio temporal y comienza la instalación. Al finalizar, solicita un reinicio. Al presionar "No" sale de la instalación completa. Al presionar "Sí" se reinicia la máquina, y al iniciar sesión aparece un error: "Se produjo un error al intentar instalar MyApp" con detalles de "No se puede localizar el archivo de la aplicación '. Installer.msi'
Parece que la El problema es que cuando el instalador pasa al instalador .Net y el instalador .Net se reinicia, se elimina el directorio temporal que contiene los archivos de instalación de Mi Aplicación. He intentado cambiar de setup.exe a usar "App Installer.msi". sin embargo, esto simplemente lleva al msi a informar que la computadora no tiene .Net y sugiere una descarga en la web. Como puedo instalar la aplicación en situaciones fuera de línea, esto no funcionará para mí.
¿Alguien más ha intentado? para incluir el instalador .Net antes en un 7zip SFX, y si es así, ¿cómo lo resolvieron? Preferiría sigue usando 7zip si es posible, pero buscará otras herramientas si es necesario.
Entonces, como solución temporal, he creado un secuencia de comandos por lotes que llama a las dos actualizaciones (WindowsInstaller y dotNetFx40_Client_x86_x64) con el indicador/norestart. Esto no es ideal, porque a) este método no omite automáticamente el paso del instalador de .Net si ya está instalado, yb) no puedo pasar un mensaje que informa al usuario que debe reiniciarse antes de usar la aplicación. También crea una ventana de cmd, que preferiblemente se evitaría. –