come scoprire quali prodotti sono installati – i prodotti più recenti sono già installati MSI windows

Posso creare MSI tramite WIX -> lo abbiamo installato su IIS. Cosa sta succedendo – avevamo già installato alcune versioni dell’applicazione, diciamo 1.8, quindi abbiamo installato la versione diciamo 99.0 solo a scopo di test, quindi abbiamo disinstallato questa versione 99. Poi ho provato ad installare un’altra versione e ottenuto: una versione più recente del prodotto è già installata.

Poi ho provato a seguire la modifica del codice di aggiornamento del prodotto – e rendere di nuovo la versione alta, quindi disinstallare e installare la versione precedente – e ha funzionato bene.

Quindi sento che mi manca qualcosa – informazioni aggiuntive sono che nei programmi e nell’elenco delle funzionalità non riesco a trovare quella applicazione più alta dopo la disinstallazione – allora la mia domanda è come l’installatore valuta che c’è una versione più recente? dove sono esattamente le informazioni su cosa viene installato (e utilizzato per il confronto) memorizzato e su come accedervi in ​​modo efficace e facile? quindi posso guardarlo dritto?

ProductCode identifica un particolare prodotto. Cambia ogni volta che spedisci un nuovo prodotto sostitutivo. UpgradeCode definisce una serie di prodotti utilizzando lo stesso UpgradeCode in prodotti aggiornati le cui versioni sono previste in costante aumento. Per impostazione predefinita, le nuove versioni del prodotto sostituiscono le versioni precedenti del prodotto con un aggiornamento importante. Poiché upgradeecode definisce una serie di prodotti, Windows cercherà i prodotti con lo stesso UpgradeCode perché identici UpgradeCodes significa prodotti mutualmente esclusivi, che li utilizzano per sostituire un prodotto precedente con uno nuovo. In WiX, l’aggiornamento principale viene eseguito con l’elemento majorupgrade che potrebbe essere utilizzato perché si ottiene che venga visualizzato il messaggio “una versione più recente è installata”. C’è un’opzione AllowDowngrade lì se si desidera “aggiornare” a una versione precedente.

Le versioni del prodotto (come le versioni dei file) non sono solo informazioni utili: vengono utilizzate dal sistema con la consapevolezza che la nuova sostituisce la vecchia e generalmente è una brutta cosa tornare alle versioni inferiori, ecco perché il comportamento predefinito non consente il downgrade.

Questo script potrebbe aiutare. Utilizza l’API di scripting di Windows Installer per enumerare tutti i prodotti installati, mostrando la versione, l’utente sid, ProductCode, ecc.

Option Explicit Public installer, fullmsg, comp, prod, a, fso, pname, ploc, pid,contxt, sid, psorce, pcache, pvers Set fso = CreateObject("Scripting.FileSystemObject") Set a = fso.CreateTextFile("prodex.txt", True) ' Connect to Windows Installer object Set installer = CreateObject("WindowsInstaller.Installer") a.writeline ("Products") 'on error resume next For Each prod In installer.ProductsEx("", "", 7) pid = prod.ProductCode contxt = prod.Context sid=prod.usersid pname = prod.InstallProperty("ProductName") psorce = prod.InstallProperty("InstallSource") ploc =prod.InstallProperty("InstallLocation") pcache = prod.InstallProperty("LocalPackage") pvers=prod.InstallProperty("VersionString") a.writeline (pid & " " & pname & " " & pvers & " installed at <" & ploc & "> from " & psorce & " Context " & contxt & " Local " & pcache) Next