Creazione di tabelle della directory del modulo di merge
Un modulo di merge può essere applicato a un file .msi per aggiungere directory all'installazione, ma non può sostituire o rimuovere alcuna directory esistente. La tabella Directory specifica il layout delle directory fornite dal modulo di merge all'installazione di destinazione. In ogni modulo di merge è necessaria una tabella directory.
Usare le linee guida seguenti quando si crea la tabella directory in un modulo di tipo merge. Per altre informazioni, vedere Tabella directory e uso della tabella directory.
La struttura di directory aggiunta dal modulo di merge deve avere una singola directory radice. La radice deve essere denominata TARGETDIR. L'utente può modificare il valore di TARGETDIR durante l'unione per specificare dove collegare la struttura della directory del modulo all'albero della directory di destinazione.
Le tabelle del modulo di tipo merge diverse dalla tabella Directory non devono fare riferimento direttamente alle posizioni della directory a TARGETDIR. La posizione di tale riferimento cambia se il valore di TARGETDIR viene modificato dall'utente.
Le tabelle nel modulo di merge devono fare riferimento alla posizione di una directory figlio di TARGETDIR o di un'altra directory nell'albero del modulo di merge. Eseguire le operazioni seguenti per specificare TARGETDIR come padre di una directory nel modulo di merge. Immettere la directory nella colonna Directory e immettere TARGETDIR nella colonna Directory_Parent. Usare la notazione "." nella colonna DefaultDir per indicare che questa directory si trova in TARGETDIR senza una sottodirectory. Per altre informazioni, vedere Uso della tabella directory.
I nomi delle directory aggiunte dal modulo di merge devono usare le convenzioni di denominazione descritte in Denominazione delle chiavi primarie nei database del modulo di merge. Sono incluse le directory predefinite in base alle proprietà, ad esempio la proprietà SystemFolder e La proprietà ProgramFilesFolder .
Aggiungere un GUID a ogni voce della tabella Directory (ad eccezione di TARGETDIR). Sono incluse le voci della tabella Directory che specificano le proprietà SystemFolder di Windows Installer, ad esempio SystemFolder.00000000_0000_0000_0000_000000000000. La libreria Mergemod.dll aggiunge azioni personalizzate per impostare la proprietà SystemFolder .
Quando una directory predefinita è inclusa in un modulo di merge, lo strumento di merge aggiunge automaticamente un tipo di azione personalizzato 51 al database di destinazione. L'autore del modulo di tipo merge deve assicurarsi che sia inclusa anche una tabella CustomAction . La tabella CustomAction può essere vuota, ma questa tabella deve esistere nel database di destinazione e garantisce che le directory predefinite modificate vengano scritte nelle posizioni corrette. Ad esempio, quando una directory di sistema è inclusa in un modulo di merge, l'autore del modulo di merge deve assicurarsi che esista una tabella Azione personalizzata.
Si noti che l'algoritmo corrispondente per la generazione di queste azioni personalizzate di tipo 51 controlla solo che il nome della directory inizia con una delle proprietà SystemFolder predefinite. Non verifica che il nome della directory corrisponda esattamente alla proprietà della directory. Qualsiasi directory che inizia con uno di questi nomi di cartelle standard ottiene un'azione personalizzata di tipo 51, anche se il resto del nome non è un GUID. Gli autori devono prestare attenzione a non generare corrispondenze false positive e alla generazione di azioni personalizzate non intenzionali, sulle chiavi primarie derivate che iniziano con una delle proprietà SystemFolder .
Di seguito è riportato un esempio di tabella directory in un modulo di tipo merge e delle directory risolte previste.
Directory | Directory_Parent | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
Dir00.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | TARGETDIR | .:MMM_Prog |
SystemFolder.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | TARGETDIR | MMM_Sys |
Dir02.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | Dir00.BC82E350_ C7FC_11d1_ A848_006097ABDE17 | MFC_OCX |
Si prevede che un modulo di merge con la tabella directory precedente venga restituito nella struttura di directory seguente.
Directory | Destinazione | Source (Sorgente) |
---|---|---|
Dir00.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [Punto di installazione del modulo di merge]\ | [Punto di origine del modulo di merge]\MMM_Prog |
SystemFolder.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [SystemFolder]\ | [Punto di origine del modulo di merge]\MMM_Sys |
Dir02.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [Punto di installazione del modulo di merge]\MFC_OCX | [Punto di origine del modulo di merge]\MMM_Prog\MFC_OCX |