Domanda

ho un InstallShield InstallScript MSI progetto che contiene il FLEXnet Connect senza modulo di unione Software Manager.La versione di questo prodotto è 6.0.32.Ho creato un secondo programma di installazione per la versione 6.1 che contiene anche il file FLEXnet Connect senza modulo di unione Software Manager.Quando eseguo un aggiornamento importante su un sistema che contiene la versione 6.0.32, ricevo un messaggio nel registro MSI che indica:

Disallowing installation of component: {FF970098-B748-427B-B946-AA8E1A1F82AD} since the same component with higher versioned keyfile exists

Il componente fa riferimento a isusweb.dll file situato in Cartella FLEXnet Connect.

Sembra che questo controllo avvenga prima del 6.0.32 prodotto in fase di rimozione.L'installazione procede rimuovendo il file 6.0.32 prodotto, che rimuove isusweb.dll.Durante 6.1 installare il isusweb.dll non viene reimpostato a causa del controllo della versione del componente.

L'aggiornamento ha esito positivo.Quando provo a eseguire l'applicazione da un collegamento, verifica i componenti.Dal momento che isusweb.dll manca l'MSI tenta una riparazione, quindi non riesce a trovare l'MSI e non consente l'apertura dell'applicazione.

C'è un modo per far sì che il modulo di unione sovrascriva sempre?

Altri suggerimenti

I moduli di unione non vengono installati, vengono fusi.Il prodotto MSI è installato.Uno dei problemi con l'utilizzo di moduli di fusione di terze parti è se hanno un bug, non c'è molto che puoi fare al riguardo.

Prenderei conto di creare un MSI esclusivamente allo scopo di incapsulare questo MSM.Quindi creerei un programma di installazione di Prereq o Suite per installare questo MSI a parte il prodotto MSI.

Hai già due ottime risposte, ma per provare a sintetizzare:

Sembra davvero un modulo di unione difettoso. Fil suggerisce di correggere il posizionamento REP in InstallExecuteSequence per aggirare il bug. Chris suggerisce di inserire il modulo di unione difettoso nella propria configurazione.Sono d'accordo con entrambi e penso che dovresti seguire entrambi i suggerimenti:

  • Rimuovi il modulo di unione dalla configurazione principale.
  • Creare una nuova configurazione e aggiungere il modulo di unione difettoso e garantire il corretto sequenziamento REP.

Affinché la correzione REP funzioni, i riferimenti ai componenti devono essere corretti al 100%, ora e in futuro.Per eliminare questo problema come creazione di un file configurazione separata permette di contenere il modulo buggy all'interno del proprio MSI.Ciò ti aiuterà a evitare di riattivare il bug per errore o per modifiche al design in futuro - e quest'ultima cosa non è mai improbabile.

Come dice Chris:un modulo di unione non viene consegnato, viene unito.Per quanto ne so, potrebbe essere disponibile un modulo di fusione aggiornato, ma anche in questo caso è saggio contenerlo.Soprattutto quando hai a che fare con la GAC ​​(Global Assembly Cache).

Un'altra soluzione che ho applicato quando si è riscontrato questo bug era impostare per aggiornare la colonna "Versione" dalla tabella dei file, nel modulo Merge, utilizzando Orca.Impostare il massimo 65535.65535.65535.65535.65535.65535, ciò costringerà l'aggiornamento a installare sempre la DLL dal modulo Merge.

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