Condividi tramite


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

I moduli di merge offrono agli sviluppatori un metodo standard per distribuire componenti di Windows Installer condivisi e configurare la logica alle applicazioni. I moduli di merge devono essere uniti in un pacchetto di installazione usando uno strumento di merge. L'alternativa migliore consiste nel ottenere uno strumento di unione distribuito liberamente o acquistare uno degli strumenti di unione disponibili da 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 merge in un database di installazione di Windows Installer tramite l'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 merge.

  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 .msi e file con estensione 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 di errori leggendo ripetutamente get_Errors chiamate. Sarà necessario risolvere eventuali errori in base alle esigenze del caso.

  6. Associare i componenti del modulo di merge a eventuali funzionalità aggiuntive che sono state o verranno unite nel database di installazione tramite 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 di .cab incorporato e quindi copiarli in una directory specificata, usare ExtractFiles o ExtractFilesEx. Si noti 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 merge 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, è necessario aggiornare la tabella multimediale 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 merge può selezionare vari modi per layoutre l'immagine di origine.