Windows Installer API (SDK)

¿Cómo crear una base de datos MSI?

Hay varias formas de hacer esto. Sin duda, lo más conveniente es comprar un programa especialmente optimizado. Hay fabricantes / autores que tienen editores para archivos MSI listos, como B. Orca, SuperOrca, InstEd. Otros productos son Flexera Software con el producto AdminStudio, Advanced Installer de Caphyon, Wise Installer de Symantec [RIP], AKInstallerMSI de AKApplications e InstallAware de InstallAware Software Corporation. A partir de Visual Studio .NET, Microsoft ofrece, por ejemplo, la opción de crear bases de datos MSI con una herramienta integrada en Visual Studio para todos los programas creados en Visual Studio.

Aunque pueden simplificar el despliegue de los paquetes de SW, siguen requiriendo mucho tiempo y hay que aprender a manejarlos. Algunos de estos productos son gratuitos, otros cuestan dinero y el resto cuesta media fortuna. Algunas prometen la felicidad, otras no querrás tocarlas ni con un alicate.
Si quiere tomarse en serio este tema, debería descargar el SDK de Windows Installer de Microsoft, que documenta la tecnología de Windows Installer y también ofrece herramientas para ayudarle en su trabajo. El más importante es seguramente Orca, un programa para editar bases de datos MSI. Todo ello, además, de forma gratuita. Con la ayuda del SDK de Windows Installer, es posible incluso crear nuevas bases de datos MSI "a mano" desde cero, pero esto puede suponer un gran esfuerzo.

automate the Windows Installer API.

Complejidad

se refiere generalmente a la propiedad de un sistema o modelo cuyo comportamiento global no puede describirse de forma inequívoca aunque se tenga información completa sobre sus componentes individuales y sus interacciones. La complejidad es una forma posible de lo opuesto a la simplicidad, la determinabilidad y la manejabilidad.

Eficacia

Trabajar con eficacia significa trabajar de manera que se consiga el resultado deseado. Trabajar con eficacia significa hacerlo de forma que el resultado obtenido y los medios utilizados tengan una relación óptima entre costes y beneficios y que el beneficio sea mayor que los costes (principio económico). Los costes no se refieren exclusivamente a los medios monetarios, sino a todas las consecuencias negativas de la acción.

Automatismos

se definen como procesos que eluden en gran medida el control consciente. Se dice que los automatismos son cercanos a la economía. Su "valor añadido" se basa en el ahorro de esfuerzo, su beneficio es inmediatamente evidente: reducen la complejidad de los procesos y aumentan el "volumen de negocio" de los procesos que funcionan sin problemas. Los automatismos producen nuevas estructuras, casi a espaldas de los implicados.

Paradigma

Un paradigma de programación es un estilo de programación fundamental y difiere en sus conceptos de elementos de programa estáticos (como objetos, métodos, variables, constantes) y dinámicos (como asignaciones, flujo de control, flujo de datos). Existen otros criterios para desarrollar un software lo más libre de errores y mantenible posible, como la legibilidad del código del programa, la ausencia de redundancia, la modularidad y la ausencia de efectos secundarios.

¿Tienes seis minutos?

Entonces echa un vistazo a este vídeo. Incluso con VB-Script puedes acceder a la API del instalador y si te interesa puedes ver el código fuente de cada clase VBS en la barra de menú de la izquierda.

Probablemente se pregunte por qué Visual Basic Script. Respuesta corta: porque actualmente no hay ningún cmdlet de PowerShell que pueda realizar las funciones mostradas en mi vídeo. Curiosamente, el único módulo de Powershell disponible por el momento es el de "lectura", que permite consultar los productos y parches de Windows Installer instalados en el sistema (e incluso eso es cuestión de suerte el artículo KB 974524).

SimplyCleverMSI

an overview about SimplyCleverMSI La versión mostrada ya tiene varios años y también existe una versión mejorada. Este VBScript (lo llamo SimplyCleverMSI) es un proyecto iniciado por mí que me apoya en mis proyectos relacionados con los clientes.

El mapeo de las tablas MSI y su funcionalidad (base de datos relacional y SQL) en forma de lenguaje de programación o intérprete no es en realidad tan complejo como se supone. Aunque suene obvio, depende fundamentalmente de la comprensión de la tecnología para poder crear automatismos. Con creatividad, se pueden lograr soluciones fascinantes.


How to build an Transform within an MSI (embedded Transforms)

Referenz » Embedded Transforms | Microsoft Docs

strSQL = "SELECT " & Chr(96) & "Name" & Chr(96) & "," & _
     Chr(96) & "Data" & Chr(96) & " FROM _Storages"
Set objView = objDatabase.OpenView(strSQL)

 'Create and Insert the row.
 Set objRecord = objInstaller.CreateRecord(2)
 objRecord.StringData(1) = NameOfStorage
 objView.Execute objRecord

 'Insert storage - copy data into stream
 objRecord.SetStream 2, PathAndNameOfMST
 objView.Modify msiViewModifyAssign, objRecord

objDatabase.Commit()
objView.Close
Set objView = Nothing

Las transformaciones incrustadas se almacenan en el archivo MSI del paquete. Esto garantiza a los usuarios que la transformación esté siempre disponible cuando el paquete de instalación también lo esté. Principalmente, las transformaciones incrustadas se utilizan en entornos con múltiples clientes (diferentes configuraciones) y/o por consideraciones relacionadas con la seguridad.

msiexec /i cryptovision.msi TRANSFORMS=:CFG_ENV_A
msiexec /i cryptovision.msi TRANSFORMS=:CFG_ENV_B
msiexec /i cryptovision.msi TRANSFORMS=:CFG_ENV_C

Las transformaciones incrustadas pueden contener valores de propiedades y también información de registro, pero no archivos. Si los archivos tienen que ser transportados, un parche (.MSP) es la mejor opción.