Windows Installer API (SDK)

Come creare un database MSI?

Ci sono diversi modi per farlo. Il più conveniente è certamente quello di acquistare un programma appositamente ottimizzato per questo scopo. Ci sono produttori / autori che forniscono editor per i file MSI, come Orca, SuperOrca, InstEd. Altri prodotti sono Flexera Software con il prodotto AdminStudio, Advanced Installer di Caphyon, Wise Installer di Symantec [RIP], AKInstallerMSI di AKApplications e InstallAware di InstallAware Software Corporation. A partire da Visual Studio .NET, Microsoft offre, per esempio, per tutti i programmi creati in Visual Studio, la possibilità di creare database MSI con uno strumento integrato in Visual Studio.

Anche se possono semplificare la distribuzione di pacchetti software, richiedono tempo e devono essere imparati ad usare. Alcuni di questi prodotti sono freeware, alcuni sono a pagamento, e il resto costa una mezza fortuna. Alcuni promettono la felicità, altri non la toccherebbero nemmeno con un paio di pinze.
Se volete prendere sul serio questo argomento, dovreste assolutamente scaricare il Windows Installer SDK di Microsoft, che documenta la tecnologia Windows Installer e offre anche strumenti per aiutarvi nel vostro lavoro. Il più importante è certamente Orca, un programma per modificare i database MSI. Tutto questo è anche gratuito. Con l'aiuto del Windows Installer SDK, è anche possibile creare nuovi database MSI "a mano" da zero, ma questo può essere uno sforzo enorme.

automate the Windows Installer API.

Complessità

generalmente si riferisce alla proprietà di un sistema o modello il cui comportamento complessivo non può essere descritto senza ambiguità anche se si hanno informazioni complete sui suoi singoli componenti e le loro interazioni. La complessità è una possibile forma di opposto della semplicità, determinabilità e gestibilità.

Efficacia

Lavorare efficacemente significa lavorare in modo tale da ottenere un risultato desiderato. Lavorare in modo efficiente significa lavorare in modo tale che il risultato raggiunto e i mezzi utilizzati siano in un rapporto costi-benefici ottimale e il beneficio sia maggiore dei costi (principio economico). Per cui i costi non si riferiscono esclusivamente ai mezzi monetari, ma a tutte le conseguenze negative dell'azione.

Automatismi

sono definiti come processi che in gran parte sfuggono al controllo cosciente. Si dice che gli automatismi siano vicini all'economia. Il loro "valore aggiunto" si basa sul risparmio dello sforzo, il loro profitto è immediatamente evidente: riducono la complessità dei processi e aumentano il "fatturato" dei processi che funzionano senza problemi. Gli automatismi producono nuove strutture - quasi alle spalle delle persone coinvolte.

Paradigma

Un paradigma di programmazione è uno stile di programmazione fondamentale e differiscono nei loro concetti di elementi di programma statici (come oggetti, metodi, variabili, costanti) e dinamici (come assegnazioni, flusso di controllo, flusso di dati). Ci sono un certo numero di altri criteri per sviluppare un software che sia il più possibile privo di bug e mantenibile - come la leggibilità del codice del programma, la libertà dalla ridondanza, la modularità e la libertà dagli effetti collaterali.

Avete sei minuti?

Allora date un'occhiata a questo video. Anche con VB-Script potete accedere all'API dell'installatore e se siete interessati potete vedere il codice sorgente di ogni classe VBS nella barra del menu a sinistra.

Probabilmente vi starete chiedendo: perché Visual Basic Script? Risposta breve: perché attualmente non esiste un cmdlet PowerShell che possa eseguire le funzionalità mostrate nel mio video. Curiosamente, l'unico modulo Powershell disponibile al momento è un modulo di "lettura", che permette di interrogare i prodotti Windows Installer e le patch installate sul sistema (e anche questo è una questione di fortuna articolo KB 974524).

SimplyCleverMSI

an overview about SimplyCleverMSI La versione mostrata ha già diversi anni ed esiste anche una versione migliorata. Questo VBScript (lo chiamo SimplyCleverMSI) è un progetto iniziato da me che mi supporta nei miei progetti relativi ai clienti.

La mappatura delle tabelle MSI e la loro funzionalità (database relazionale e SQL) sotto forma di un linguaggio di programmazione o interprete non è in realtà così complessa come si suppone. Per quanto sembri ovvio, è fondamentalmente la comprensione della tecnologia che permette di creare degli automatismi. Con la creatività, si possono realizzare soluzioni affascinanti.


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

Le trasformazioni incorporate sono memorizzate all'interno del file MSI del pacchetto. Questo garantisce agli utenti che il transform è sempre disponibile quando è disponibile anche il pacchetto di installazione. Principalmente, le trasformazioni incorporate sono usate in ambienti multi-tenant (diverse configurazioni) e/o per considerazioni di sicurezza.

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

Le trasformazioni incorporate possono contenere valori di proprietà e anche informazioni di registro, ma non i file. Se i file devono essere trasportati, una patch (.MSP) è la scelta migliore.