Pregunta

Analicemos el siguiente tema.Hay una aplicación que actualmente se está implementando con un método xcopy muy conocido. Este enfoque dificulta la gestión de dependencias, actualizaciones de archivos, etc.Existe una idea para iniciar la implementación de aplicaciones con la ayuda de algunos paquetes, ya sabes como lo haces en Linux con la ayuda de RPM, pero para Windows.

Entonces tengo una pregunta:¿Qué sistema de paquetes es mejor usar en el instalador clásico de Windows (msi) o pepita ¿o algo mas?

¿Fue útil?

Solución

Ad hoc: ¿Cómo evito fallas de diseño comunes en mi solución de implementación WiX/MSI?- un resumen ad-hoc muy desordenado y poco ideal de problemas comunes encontrados en archivos MSI.No es bueno.¿Mejor que nada?Las cosas que no están en los libros (demasiado desordenadas).

Tema importante: ¿Cómo evito distribuir información confidencial en mi MSI por accidente?


WiX y MSI:

MSI es el estándar de aplicación corporativa aceptado.Tiene algunos beneficios corporativos importantes (and the short, concise version) en comparación con las técnicas de implementación heredada. WiX es la nueva forma de código abierto para crear archivos MSI.

Otras herramientas:

Hola mundo y hola WiX:

Ejemplos de vídeos:

Más código de muestra:

Inicio rápido de WiX:Estos son algunos de los mejores enlaces de código de muestra que he encontrado:

Y finalmente:

Depuración:Siempre revisa todo registros de eventos, registros de aplicaciones y Registros MSI - si está disponible.Sólo por mencionarlo.Y Utilice cualquier herramienta de depuración disponible. y google el mensaje de error exacto antes de hacer cualquier otra cosa.

Y compruebe si faltan tiempos de ejecución evidentes.Por ejemplo: .Net, .Net Core, Java, Silverlight, Direct X, VC++ Runtime, MS-XML (legado), etc....

Depuración de acciones personalizadas:

registro MSI:

Visor de eventos:

  • Sujetar Tecla de Windows, grifo R, tipo eventvwr.msc y presione Ingresar.
  • Ir a Windows Logs => Applications.Buscar MsiInstaller events.
  • Consulte también los otros registros (Security, System, Configuration).

Depuración general:

Herramientas de depuración:

Código de error:Búsqueda de códigos de error y mensajes de excepción.


Un mnemotécnico de implementación:Un mnemotécnico general para pensar en problemas de implementación: What is locking (en uso, malware), what is blocking (permisos, antivirus, herramientas de seguridad), what is corrupt (disco, malware, configuraciones, cifrado) what are unexpected system states (espacio en disco, configuración de fecha y hora, idioma, licencia, estado del parche de Windows, ruta demasiado larga, PendingFileRenames, etc.), what are incompatible products (cosas que no pueden coexistir), what is unreachable or misconfigured (lo que apunta a ubicaciones y recursos erróneos:nombres de servidores de red, rutas de disco, URL, bases de datos, servicios, entornos UAT, entornos PROD, etc...) y por último pero no menos importante: what is missing (tiempo de ejecución, imagen de recursos, archivo de configuración, etc.)?


NOTA:Siempre primero (paso 8 a continuación): Google exact error message.

Error expreso al iniciar la depuración: 1) Reboot, 2) disable anti-virus, 3) launch as admin y comprobar, 4) Controlar dependencies and runtimes (Java, Tiempo de ejecución de VC++, .NETO, etc...).Luego, si es necesario: 5) verbose log, 6) event logs, 7) Try on a virtual if you still can't get it working? Or secondary computer? También 8) google exact error messages y comprobar los comentarios de los usuarios, 9) Run update for the application in question? (Un nuevo instalador podría eliminar la situación de error). 10) Ejecute una verificación completa para malware ¿también?Está por todos lados estos días. 11) Algunos programas (a menudo software de servidor) pueden necesitar que se solucionen los ajustes de configuración (misconfiguration).Las aplicaciones de escritorio pueden necesitar license para lanzar en absoluto.


¿Cerraduras?:Con permiso y bloqueos puedes intentar run the tool with elevated rights?Podría tener daños en el disco. disk errors? Faulty ACL permissions?(posible).Su anti-virus suite ha bloqueado algún archivo que MSI está intentando volver a colocar en su lugar.Puedes intentar desactivarlo temporalmente para verlo.Tenga en cuenta que el archivo puede haber sido quarantined también (se mudó a otro lugar).


¿Trucos genéricos?:Para configuraciones que no se instalan correctamente.Algunos trucos genéricos a continuación, además de comprobar event logs y installation- y application logs y googling any error messages (siempre haga eso también, tal vez primero, pero tal vez simplemente reinicie primero, antes de enfrentar toda la complejidad):

  1. Reiniciar:Reinicie primero después de una instalación fallida para ver si eso resuelve bloqueos y cambios de nombre pendientes.
  2. Otra computadora:¿Intenta instalar en otra máquina física?
    • ¡Importante prueba de humo de los medios de instalación!
  3. Virtual:¿Intenta instalar en una máquina virtual?
    • A menudo está desactualizado, verifique los tiempos de ejecución, verifique Windows Update.
  4. Tiempos de ejecución:Asegúrese de que los tiempos de ejecución requeridos de varios tipos estén disponibles en la versión requerida:
    • Común: VCRedist, .NET, .NET Core, etc...
    • Específico: Python, DBMS systems (PostgreSQL, MSSQL, etc...)
  5. Cuenta secundaria:Intente instalar en el cuadro principal usando una cuenta de administrador diferente.Esto puede solucionar problemas causados ​​por errores en el perfil de usuario (no es tan infrecuente).
  6. Archivos de instalación locales:Copie los archivos de instalación localmente si están en la red cuando se invoquen (para eliminar fuentes de error de red).
  7. Problemas de localización:No es raro que las configuraciones entregadas en otros idiomas contengan errores nuevos que no se ven en el instalador original (generalmente en inglés).
    • "Campo Murphy": "We have managed to add additional bugs to the internationalized setups beyond the English version".¡Oh, dice la humanidad!Gorrón.
    • ¿Intenta descargar una versión de instalación en inglés y probar la instalación?
    • ¿Pruebe la configuración localizada en una máquina en inglés o virtual?
    • Investigue también ejecutar con otra cuenta de usuario con configuraciones de idioma diferentes.

Y - nuevamente - los "bloqueadores" comunes:

  1. Archivo de instalación dañado:Archivo de instalación dañado.¿Volver a descargar para estar seguro?¿Hacer esto como uno de los primeros pasos antes de perder un día entero?¿Britness de plataforma correcto?¿Arquitectura de CPU correcta?
  2. malware:El malware puede causar casi "cualquier cosa" en términos de problemas.
  3. Software de seguridad: Anti-virus, firewalls, scanners, etc... puede interferir con la instalación.Deshabilítelo temporalmente si es posible cuando sea necesario.
  4. Espacio del disco:¡Asegúrese de tener suficiente espacio en disco!
  5. Apoderado:Si existe un requisito de red, ¿existe un servidor proxy que bloquee las cosas?
  6. Políticas:Puede haber políticas vigentes en las redes administradas para bloquear ciertas funciones que imposibiliten la instalación.¿Probar virtualmente?Generalmente menos restringido.
  7. Errores de disco:Escanee el disco para ver si está bien.Si no, arréglalo primero.Los discos NVMe modernos pueden perder una gran cantidad de datos debido a cortes de energía en computadoras de escritorio sin UPS.

Algunos enlaces:


Fácil acceso:

Reempaquetado, depuración de inicio de aplicaciones:

Actualizaciones:

Algunos otros enlaces de WiX:


Trámites:

  • Abrir carpeta temporal: Tecla de Windows => Toque R => Tipo: %TEMP% => Presione: Ingresar.
  • ARP:Ir comenzar correr appwiz.cpl INGRESAR para abrir el subprograma Agregar o quitar programas (o haga clic en Agregar o quitar programas en el panel de control).
  • Configuración GUI Win8/10: Tecla de Windows + Toque I => Apps & Features.Seleccione la entrada y desinstale.
  • Inicio rápido de Powershell:sostener clave de Windows, grifo R, escribe "powershell" y presiona Ingresar.
  • Reiniciar el controlador de gráficos: clave de Windows + Control + Cambio y toque B.

Algunos buenos enlaces de inicio para aprender Wix:

Extraer archivos de Setup.exe Paquete WiX o desde un archivo MSI:

Como escribí en mi sugerencia "Inicio rápido de Wix"publicación arriba: Wix es práctico. Simplemente concéntrese en muestras simples pero completas del mundo real como la de proyecto de código - leer la documentación por sí solo probablemente resulte simplemente confuso.

Concéntrese en dividir su aplicación en componentes y configurar una actualización importante. Utilice un archivo por componente como regla general, y lea esta respuesta para comprender mejor la creación de componentes: ¿Cambiar el GUID de mi componente en wix?

Una mejora importante es el mecanismo de actualización más utilizado para el software implementado (el otro tipo de actualización común es la actualización menor).Obviamente, es fundamental que pueda actualizar lo que ya ha implementado.Haga que los escenarios de actualización funcionen antes de implementar su primera versión de software para que tenga confianza en su solución de implementación.

Una vez que haya configurado sus componentes y su solución de actualización esté funcionando, el resto de las piezas encajarán a medida que avance en los requisitos de implementación de su aplicación y busque ejemplos en el Sitio de tutoriales de Wix: https://www.firegiant.com/wix/tutorial/.

Para aquellos que escriben código Wix directamente (sin un editor GUI), les sugiero que consulten esta respuesta para encontrar una forma de mantener sus archivos fuente concisos: ¿Sintaxis para guías en WIX?

Leer más:

Otros consejos

Ahora estoy bajando este camino, donde he heredado software utilizando MSI / WIX para el instalador, pero mirando convertir nuestro proceso a la entrega continua y enviar las actualizaciones que están instaladas sin la interacción con el cliente. Creo que es incorrecto a Pigeon Hole Nuget como una herramienta de SDK, en su esencia, es una herramienta para implementar conjuntos de archivos visitados. Además, si el software ya está implementando respuestas en gran medida en NUDET, y ya está envasando sus ensamblajes en paquetes de nuget para uso interno, entonces, ¿por qué agregar tecnología adicional a la mezcla por el bien? Paquete en un NUGET.EXE en su MSI, la actualización de llamadas en él periódicamente, realizada.

Sé que WIX soporta creando parches, pero parece que es una idea de último momento. Además, ¿qué sucede si su parche falla la instalación? ¿Instalar parches fuera de servicio? Su instalador principal requiere permisos de UAC, mientras que su parche no lo hace?

Creo que los tiempos están cambiando, y MSI representa una forma más antigua de pensar en las cosas. Chocolatey es un buen ejemplo, pero aún está en esta etapa híbrida, mezclando ambas tecnologías.

MSI es más como tirar, obtienes un paquete, luego instalalo. NUGET es más como un Empuje Stratergy: obtenga el nombre de un paquete, instálelo, luego, periódicamente, puede llamar a la actualización, y se descarga e instala una nueva versión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top