Como gerenciar as fontes de instalação
Os usuários e os aplicativos com privilégios administrativos podem recuperar e modificar informações da lista de fontes de rede, de URL e de mídia para aplicativos e patches do Windows Installer no sistema.
Windows Installer 2.0: sem suporte. Os administradores não podem ler, reordenar nem substituir as entradas da lista de fontes e não podem modificar nem recuperar propriedades da lista de fontes. É possível gerenciar as fontes de rede, mas não as fontes de URL ou de mídia. Os administradores só podem gerenciar as listas de fontes para aplicativos por computador ou para aplicativos instalados como por usuário para o usuário atual. Isso impede que os administradores que usam versões anteriores ao Windows Installer versão 3.0 gerenciem as informações da lista de fontes para todos os usuários do sistema.
Windows Installer 3.0 e versões posteriores: os usuários e os aplicativos que têm privilégios de administrador podem recuperar e modificar informações da lista de fontes para aplicativos e patches do Windows Installer instalados no sistema para todos os usuários. As funções da lista de fontes podem ser usadas para gerenciar listas de fontes e propriedades da lista de fontes para fontes de rede, URL e mídia. O instalador pode reordenar as listas de fontes por meio de um processo externo.
Os usuários e os aplicativos que têm privilégios administrativos podem ler e modificar os seguintes tipos de informações da lista de fontes:
- Listas de fontes para aplicativos e patches instalados para todos os usuários no sistema.
- Listas de fontes para fontes de patch que existem além das fontes de aplicativo.
- Listas de fontes para fontes de URL e de mídia que existem além das fontes de rede.
- Propriedades da lista de fontes, como MEDIAPACKAGEPATH, DiskPrompt, LastUsedSource, LastUsedType e PackageName.
As funções das listas de fontes podem limitar o escopo das listas de fontes encontradas pela especificação do contexto de instalação e do contexto do usuário. Há três contextos de instalação possíveis: por usuário (não gerenciado), por computador e por usuário gerenciado. O contexto do usuário pode ser um usuário específico ou todos os usuários no sistema.
Os não administradores não podem modificar a lista de fontes de uma instância de um aplicativo ou de um patch que existe no contexto por usuário (gerenciado ou não gerenciado) de outro usuário. Os não administradores podem modificar as listas de fontes de uma instância de um aplicativo ou de um patch instalado nos seguintes contextos:
- Um contexto próprio por usuário (não gerenciado).
- O contexto do computador, mas somente se as políticas DisableBrowse, AllowLockdownBrowse e AlwaysInstallElevated permitem que ele procure uma fonte de patch ou de aplicativo.
- Um contexto próprio gerenciado por usuário, mas somente se as políticas DisableBrowse, AllowLockdownBrowse e AlwaysInstallElevated permitem que ele procure uma fonte de patch ou de aplicativo.
Os administradores podem modificar qualquer lista de fontes que um não administrador possa modificar. Além disso, os administradores e os aplicativos que têm privilégios administrativos podem modificar as listas de fontes de um aplicativo ou de um patch instalado nos seguintes contextos:
- Contexto por computador.
- Um contexto próprio por usuário (não gerenciado) ou um contexto próprio gerenciado por usuário.
- O contexto gerenciado por usuário de outro usuário.
Observação
Os usuários e os aplicativos que têm privilégios administrativos não podem modificar a lista de fontes de uma instância de um aplicativo ou de um patch instalado no contexto por usuário (não gerenciado) de outro usuário.
Como gerenciar fontes de rede e de URL para produtos e patches
Use a função MsiSourceListAddSourceEx para adicionar ou reordenar a lista de fontes de rede e de URL de um patch ou de um aplicativo em um contexto específico. Use o parâmetro dwContext para especificar o contexto de instalação. Use o parâmetro szUserSid para especificar o contexto do usuário.
Use a função MsiSourceListAddSourceEx para criar uma lista de fontes para um patch que ainda não foi aplicado a nenhum aplicativo no contexto especificado. Isso pode ser útil ao registrar um patch para conceder a ele privilégios elevados. Para obter mais informações sobre como registrar privilégios elevados para um patch, confira Como aplicar um patch aos aplicativos gerenciados por usuário.
Use a função MsiSourceListClearSource para remover uma fonte existente para um aplicativo ou um patch em um contexto especificado. A remoção da fonte atual de um aplicativo ou de um patch força o instalador a pesquisar uma fonte na lista de fontes na próxima vez que uma fonte for necessária.
Use a função MsiSourceListEnumSources para enumerar as fontes na lista de fontes de um patch ou de um aplicativo especificado.
Como gerenciar fontes de mídia para produtos e patches
Use a função MsiSourceListAddMediaDisk para adicionar ou atualizar as informações de disco da fonte de mídia de um aplicativo ou de um patch registrado. Cada entrada é identificada exclusivamente por uma ID de disco. Se o disco já existir, ele será atualizado com os novos valores de rótulo de volume e solicitação de disco. Se o disco não existir, uma entrada de disco será criada com os novos valores.
Use a função MsiSourceListClearMediaDisk para remover um disco registrado existente na fonte de mídia de um aplicativo ou de um patch em um contexto específico.
Use a função MsiSourceListEnumMediaDisks para enumerar uma lista de discos registrados na fonte de mídia para um aplicativo ou um patch.
Recuperação e modificação das informações da lista de fontes
Use as funções MsiSourceListGetInfo e MsiSourceListSetInfo para recuperar ou modificar informações sobre a lista de fontes de um aplicativo ou de um patch em um contexto específico. Use o parâmetro dwContext para especificar o contexto de instalação. Use o parâmetro szUserSid para especificar o contexto do usuário.
É possível acessar propriedades da lista de fontes, como MEDIAPACKAGEPATH, DiskPrompt, LastUsedSource, LastUsedType e PackageName.
Observação
A propriedade da lista de fontes LastUsedType só pode ser lida. Ela não pode ser definida diretamente por meio da função MsiSourceListSetInfo.
Como limpar a lista de fontes completa ou forçar uma resolução de fonte
Use a função MsiSourceListClearAllEx para remover todas as fontes existentes de determinado tipo de origem para a instância de aplicativo ou de patch especificada. O registro de patch também será removido se o patch não for instalado por nenhum aplicativo no mesmo contexto. Use o parâmetro dwContext para especificar o contexto de instalação. Use o parâmetro szUserSid para especificar o contexto do usuário.
Use MsiSourceListForceResolutionEx para limpar a última entrada de origem usada para um aplicativo ou um patch no contexto especificado. Essa função remove o registro da propriedade chamada LastUsedSource. Ela não afeta a lista de fontes registrada. A limpeza do registro LastUsedSource força o instalador a fazer uma resolução de fonte nas fontes registradas na próxima vez que ele precisar da fonte.