Windows Installer API (SDK)

Comment créer une base de données MSI?

Il existe plusieurs façons de procéder. Le plus pratique est certainement d'acheter un programme spécialement optimisé à cet effet. Il existe des fabricants/auteurs qui fournissent des éditeurs pour les fichiers MSI, comme Orca, SuperOrca, InstEd. D'autres produits sont Flexera Software avec le produit AdminStudio, Advanced Installer de Caphyon, Wise Installer de Symantec [RIP], AKInstallerMSI de AKApplications et InstallAware de InstallAware Software Corporation. À partir de Visual Studio .NET, Microsoft offre, par exemple, pour tous les programmes créés dans Visual Studio, la possibilité de créer des bases MSI avec un outil intégré à Visual Studio.

Si elles peuvent simplifier le déploiement de paquets de logiciels, elles prennent néanmoins du temps et le maniement elle-même doit être apprise. Certains de ces produits sont des freewares, d'autres sont payants et le reste coûte une demi-fortune. Certains promettent le bonheur, d'autres ne veulent même pas y toucher avec une paire de pinces.
Si vous voulez vous pencher sérieusement sur le sujet, vous devriez absolument télécharger le Windows Installer SDK de Microsoft, qui documente la technologie Windows Installer et propose également des outils pour vous aider dans votre travail. Le plus important est certainement Orca, un programme permettant de modifier les bases de données MSI. Tout cela est également gratuit. Avec l'aide du SDK Windows Installer, il est même possible de créer de nouvelles bases de données MSI "à la main" à partir de zéro, mais cela peut représenter un effort considérable.

automate the Windows Installer API.

Complexité

désigne généralement la propriété d'un système ou d'un modèle dont le comportement global ne peut être décrit sans ambiguïté même si l'on dispose d'informations complètes sur ses composants individuels et leurs interactions. La complexité est une forme possible d'un contraire de la simplicité, de la déterminabilité et de la gérabilité.

Efficacité

Travailler efficacement signifie travailler de manière à obtenir le résultat souhaité. Travailler efficacement signifie travailler de manière à ce que le résultat obtenu et les moyens utilisés soient dans un rapport coût-bénéfice optimal et que le bénéfice soit supérieur aux coûts (principe économique). Dans ce cas, les coûts ne se réfèrent pas exclusivement aux moyens financiers, mais à toutes les conséquences négatives de l'action.

Automatismes

sont définis comme des processus qui échappent largement au contrôle conscient. On dit que les automatismes sont proches de l'économie. Leur "valeur ajoutée" est basée sur l'économie d'efforts, leur bénéfice est immédiatement évident : ils réduisent la complexité des processus et augmentent le "chiffre d'affaires" des processus qui fonctionnent bien. Les automatismes produisent de nouvelles structures - presque dans le dos des personnes concernées.

Paradigme

Un paradigme de programmation est un style de programmation fondamental et diffère dans ses concepts d'éléments de programme statiques (tels que les objets, les méthodes, les variables, les constantes) et dynamiques (tels que les affectations, le flux de contrôle, le flux de données). Il existe un certain nombre d'autres critères permettant de développer des logiciels aussi exempts de bogues et faciles à maintenir que possible, tels que la lisibilité du code du programme, l'absence de redondance, la modularité et l'absence d'effets secondaires.

Avez-vous six minutes?

Alors, jetez un coup d'œil à cette vidéo. Même avec VB-Script, vous pouvez accéder à l'API de l'installateur et si vous êtes intéressé, vous pouvez voir le code source de chaque classe VBS dans la barre de menu de gauche.

Vous vous demandez probablement pourquoi Visual Basic Script ? Réponse courte : parce qu'il n'existe actuellement aucune cmdlet PowerShell capable d'exécuter les fonctions présentées dans ma vidéo. Curieusement, le seul module Powershell disponible pour l'instant est un module de "lecture", qui vous permet d'interroger les produits Windows Installer et les correctifs installés sur votre système (et même cela relève de la chance, article 974524 de la KB).

SimplyCleverMSI

an overview about SimplyCleverMSI La version présentée date déjà de plusieurs années et il existe également une version améliorée. Ce VBScript (que j'appelle SimplyCleverMSI) est un projet que j'ai initié et qui m'aide dans mes projets liés aux clients.

Le mappage des tables MSI et de leur fonctionnalité (base de données relationnelle et SQL) sous la forme d'un langage de programmation ou d'un interpréteur n'est en fait pas aussi complexe qu'on le suppose. Aussi évident que cela puisse paraître, c'est fondamentalement la compréhension de la technologie qui permet de créer des automatismes. La créativité permet de trouver des solutions 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

Les transformations incorporées sont stockées dans le fichier MSI du paquet. Cela garantit aux utilisateurs que la transformation est toujours disponible lorsque le paquet d'installation est également disponible. Principalement, les transformations intégrées sont utilisées dans des environnements multi-tenant (différentes configurations) et/ou pour des considérations de sécurité.

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

Les transformations incorporées peuvent contenir des valeurs de propriété et également des informations de registre, mais pas des fichiers. Si les fichiers doivent être transportés, un patch (.MSP) est le meilleur choix.