Como criar tabelas de diretório do módulo de mesclagem
Um módulo de mesclagem pode ser aplicado a um arquivo .msi para adicionar diretórios à instalação, mas não pode substituir nem remover nenhum diretório existente. A tabela Directory especifica o layout dos diretórios que o módulo de mesclagem fornece à instalação de destino. Uma tabela Directory é necessária em cada módulo de mesclagem.
Use as diretrizes a seguir ao criar a tabela Directory em um módulo de mesclagem. Para obter mais informações, confira Tabela Directory e Como usar a tabela Directory.
A estrutura de diretório adicionada pelo módulo de mesclagem precisa ter um só diretório raiz. A raiz precisa ser chamada TARGETDIR. O usuário pode alterar o valor de TARGETDIR durante a mesclagem para especificar o local em que a estrutura de diretório do módulo será anexado à árvore de diretório do destino.
Tabelas do módulo de mesclagem que não sejam a tabela Directory não devem referenciar diretamente os locais de diretório para TARGETDIR. O local dessa referência será alterado se o valor de TARGETDIR for alterado pelo usuário.
As tabelas do módulo de mesclagem precisam referenciar o local de um diretório filho de TARGETDIR ou outro diretório na árvore do módulo de mesclagem. Realize o procedimento a seguir para especificar TARGETDIR como o pai de um diretório no módulo de mesclagem. Insira o diretório na coluna Directory e insira TARGETDIR na coluna Directory_Parent. Use a notação "." na coluna DefaultDir para indicar que esse diretório está localizado em TARGETDIR sem um subdiretório. Para obter mais informações, confira Como usar a tabela Directory.
Os nomes dos diretórios adicionados pelo módulo de mesclagem precisam usar as convenções de nomenclatura descritas em Nomenclatura de chaves primárias em bancos de dados do módulo de mesclagem. Isso inclui os diretórios predefinidos por propriedades como a propriedade SystemFolder e a propriedade ProgramFilesFolder.
Acrescente um GUID a cada entrada da tabela Directory (exceto TARGETDIR). Isso inclui as entradas da tabela Directory que especificam as propriedades SystemFolder do Windows Installer, por exemplo, SystemFolder.00000000_0000_0000_0000_000000000000. A biblioteca Mergemod.dll adiciona ações personalizadas para definir a propriedade SystemFolder.
Quando um diretório predefinido é incluído em um módulo de mesclagem, a ferramenta de mesclagem adiciona automaticamente um Tipo de Ação Personalizada 51 ao banco de dados de destino. O autor do módulo de mesclagem precisa garantir que uma tabela CustomAction também esteja incluída. A tabela CustomAction pode estar vazia, mas essa tabela precisa existir no banco de dados de destino e garante que os diretórios predefinidos modificados sejam gravados nos locais corretos. Por exemplo, quando um diretório do sistema é incluído em um módulo de mesclagem, o autor do módulo de mesclagem precisa garantir que haja uma tabela Custom Action.
Observe que o algoritmo de correspondência para a geração dessas ações personalizadas de tipo 51 verifica apenas se o nome do diretório começa com uma das propriedades SystemFolder predefinidas. Ele não verifica se o nome do diretório é exatamente igual à propriedade de diretório. Qualquer diretório que comece com um desses nomes de pastas padrão obtém um tipo de ação personalizada 51, mesmo que o restante do nome não seja um GUID. Os autores precisam ter cuidado para que isso não gere correspondências de falsos positivos nem ações personalizadas não intencionais em chaves primárias derivadas que começam com uma das propriedades SystemFolder.
Veja a seguir um exemplo de uma tabela Directory em um módulo de mesclagem e os diretórios resolvidos esperados.
Diretório | 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 |
É esperado que um módulo de mesclagem com a tabela Directory acima resulte na estrutura de diretório a seguir.
Diretório | Destino | Fonte |
---|---|---|
Dir00.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [Ponto de instalação do módulo de mesclagem]\ | [Ponto de origem do módulo de mesclagem]\MMM_Prog |
SystemFolder.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [SystemFolder]\ | [Ponto de origem do módulo de mesclagem]\MMM_Sys |
Dir02.BC82E350_ C7FC_11d1_ A848-006097ABDE17 | [Ponto de instalação do módulo de mesclagem]\MFC_OCX | [Ponto de origem do módulo de mesclagem]\MMM_Prog\MFC_OCX |