Domanda

Ho un installatore che non sembra seguire le regole del componente MSI in tempo di installazione. Ecco lo scenario:

OS: Windows 7 x64

Prodotto A Installa un set di file collegati a un componente con GUID "123ABC" in C: \ Programmi \ File Common Files \ Foo. Il componente ha i seguenti file:
foo.dll, versione 1.0.0.0, (Keypath)
foo.sys, versione 1.0.0.0
foo.inf, no versione
foo.cat, nessuna versione

Prodotto B Installa lo stesso set di file collegati allo stesso GUID del componente "123ABC" nello stesso percorso C: \ Programmi \ File Common \ Foo. Il componente ha i seguenti file:
foo.dll, versione 1.0.0.1, (Keypath)
foo.sys, versione 1.0.0.0
foo.inf, no versione
foo.cat, nessuna versione

Prodotto A è installato per primo, e il prodotto B non esegue un aggiornamento del prodotto A, condividono semplicemente un MSM comune che contiene il componente "123ABC". La mia aspettativa è che quando il prodotto B è installato, MSI confronterà le versioni Keypath di foo.dll e determinerà quel prodotto B's Foo.dll è più recente. Quindi tutti e quattro i file associati al componente "123ABC" sovrascriveranno i file esistenti su disco installati dal prodotto A. Questo non sta accadendo :( Invece, questo è il file del file risultante:
C: \ Programmi Files \ File Common \ Foo
foo.dll, versione 1.0.0.1 (dal prodotto B)
foo.sys, versione 1.0.0.0 (dal prodotto A)
foo.inf, no versione (dal prodotto A)
foo.cat, no versione (dal prodotto B)

Solo la DLL e il file Cat vengono sovrascritti. Dal file di registro MSI posso vedere quanto segue:

MSI (s) (4C:F0) [17:29:24:227]: File: C:\Program Files\Common Files\Foo\foo.dll;    Overwrite;  Won't patch;    Existing file is a lower version
MSI (s) (4C:F0) [17:29:24:305]: File: C:\Program Files\Common Files\Foo\foo.sys;    Won't Overwrite;    Won't patch;    Existing file is of an equal version
MSI (s) (4C:F0) [17:29:24:305]: File: C:\Program Files\Common Files\Foo\foo.inf;    Won't Overwrite;    Won't patch;    Existing file is unversioned and unmodified - hash matches source file
MSI (s) (4C:F0) [17:29:24:335]: File: C:\Program Files\Common Files\Foo\foo.cat;    Overwrite;  Won't patch;    Existing file is unversioned and unmodified - hash doesn't match source file
.

Pensavo che i componenti MSI hanno installato tutti i file associati in base al fatto che la tastiera sia installata o meno. Cosa potrebbe far funzionare individualmente ogni file associato allo stesso componente?

È stato utile?

Soluzione

Stato Keypath Determina se un componente verrà attivato.Risorse all'interno del componente Seguire le loro regole: ad esempio, i file seguono il Regole di versioning dei file .

Altri suggerimenti

Assumendo che ciascun prodotto sta utilizzando le regole di costo predefinito (OMUS) i moduli di unione contenenti componenti condivisi dovrebbero funzionare.FWIW, potresti voler considerare di creare un MSI che consuma questo modulo unione e quindi aggiungerlo a un bootstrapper per entrambi i prodotti.La mantografica può essere più pulita in questo modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top