Condividi tramite


Uso dell'API per unire un modulo di merge in un database

I moduli di unione forniscono agli sviluppatori un metodo standard per distribuire componenti condivisi di Windows Installer e la logica di configurazione nelle loro applicazioni. I moduli di merge devono essere uniti in un pacchetto di installazione usando uno strumento di unione. L'alternativa migliore consiste nel ottenere uno strumento di merge distribuito liberamente o acquistare uno degli strumenti di unione disponibili dai fornitori di software indipendenti. Ad esempio, è possibile usare la funzionalità fornita da Mergemod.dll.

Usare i passaggi seguenti, in sequenza, per unire un modulo di unione in un database di installazione di Windows Installer dall'API di Mergemod.dll.

Per unire un modulo di merge in un database di installazione di Windows Installer

  1. Aprire un file di log usando OpenLog. Questo passaggio è obbligatorio solo se è necessario creare un file di log o accodare un file di log esistente per il processo di unione.

  2. Aprire il database di installazione, un file .msi, che riceverà il modulo di merge usando OpenDatabase. Questo passaggio è obbligatorio.

  3. Aprire il modulo di merge, un file con estensione msm , che viene unito al database usando OpenModule. Prima di poter essere unito a un database di installazione, è necessario aprire un modulo. Questo passaggio è obbligatorio.

  4. Unire il modulo nel database di installazione usando Merge o MergeEx. Si noti che Merge o MergeEx può essere chiamato una sola volta per unire una particolare combinazione di file .msi e .msm. MergeEx è disponibile solo quando si usa Mergemod.dll versione 2.0 o successiva e solo quando si usa l'interfaccia IMsmMerge2. Questo passaggio è obbligatorio.

  5. Chiamare get_Errors ed esaminare la raccolta recuperata di errori per i conflitti di merge o altri errori. Il recupero non è distruttivo. È possibile recuperare più istanze della raccolta errori leggendo ripetutamente get_Errors. Sarà necessario risolvere eventuali errori in base alle esigenze del caso.

  6. Associare i componenti del modulo di merge a tutte le funzionalità aggiuntive che sono state o verranno unite nel database di installazione usando Connect. La funzionalità deve esistere già prima di chiamare questo metodo. Questo passaggio è obbligatorio solo se sono disponibili funzionalità aggiuntive. Per altre informazioni, vedere Connessione di un modulo di merge a più funzionalità

  7. Se necessario, estrarre i file di origine dal modulo eseguendo una o più delle operazioni seguenti.

    Per estrarre file da un file .cab incorporato e quindi copiarli in una directory specificata, usare ExtractFiles o ExtractFilesEx. Nota che ExtractFilesEx richiede Mergemod.dll versione 2.0 o successiva.

    Per estrarre file da un file .cab incorporato e quindi salvare in un file specificato, usare ExtractCAB.

    Per estrarre file da un modulo e quindi copiare in un'immagine di origine su disco dopo l'unione, usare CreateSourceImage. Si noti che CreateSourceImage è disponibile solo con Mergemod.dll versione 2.0 o successiva.

  8. Chiudere il modulo di unione aperto corrente usando CloseModule. Questo passaggio è obbligatorio.

  9. Chiudere il database di installazione aperto corrente usando CloseDatabase. Questo passaggio è obbligatorio. La chiusura di un database cancella tutte le informazioni sulle dipendenze, ma non influisce sugli errori che non sono stati recuperati.

  10. Chiudere il file di log corrente usando CloseLog. Questo passaggio è obbligatorio se è stato aperto un file di log.

Dopo che il modulo è stato unito al database usando Mergemod.dll, la tabella multimediale deve essere aggiornata per descrivere il layout dell'immagine di origine desiderato. Il processo di unione fornito da Mergemod.dll non aggiorna la tabella multimediale perché il consumer del modulo di unione può selezionare diversi modi per creare il layout dell'immagine di origine.