Instalações simultâneas
Instalações simultâneas, também chamadas de Instalações Aninhadas, são um recurso preterido do Windows Installer. Os aplicativos instalados com instalações simultâneas podem falhar eventualmente, devido à dificuldade dos clientes em realizar os serviços corretamente. Não use instalações simultâneas para instalar produtos destinados a serem liberados ao público. As instalações simultâneas podem ter aplicabilidade limitada em ambientes corporativos controlados, quando usadas para instalar aplicativos que não se destinam à versão pública. A documentação de instalações simultâneas é fornecida para autores de pacotes que desejam usar instalações simultâneas com aplicativos que não são para distribuição pública.
Uma ação de instalação simultânea instala outro pacote do Windows Installer durante uma instalação em execução no momento. Uma instalação simultânea é adicionada a um pacote criando uma ação de instalação simultânea na tabela CustomAction e agendando essa ação personalizada nas tabelas de sequência. O campo Target da tabela CustomAction contém uma cadeia de caracteres de configurações de propriedade pública usadas pela instalação simultânea. O campo Source da tabela CustomAction identifica o pacote simultâneo. Uma ação de instalação simultânea só pode reinstalar ou remover um aplicativo que foi instalado pelo pacote de instalação do aplicativo atual.
O tipo de ação de instalação simultânea é especificado no campo Type da tabela CustomAction. Dependendo do tipo de ação personalizada, o pacote do aplicativo simultâneo pode residir em um substorage do pacote main, como um arquivo em um local especificado por uma propriedade ou como um aplicativo anunciado no computador do usuário. Os tipos de ações personalizadas a seguir executam uma instalação simultânea.
Tipo de ação personalizada | Descrição |
---|---|
Tipo de ação personalizada 7 | Instalação simultânea de um produto que reside no pacote de instalação. |
Tipo de ação personalizada 23 | Instalação simultânea de um pacote do instalador na árvore de origem atual. |
Tipo de ação personalizada 39 | Instalação simultânea de um pacote de instalador anunciado. |
Uma instalação simultânea compartilha as mesmas configurações de log e interface do usuário que a instalação do main.
As ações de instalação simultâneas devem ser colocadas entre a ação InstallInitialize e a ação InstallFinalize da sequência de ações da instalação do main. Após a reversão da instalação do main, o instalador também reverterá a instalação simultânea. O uso da execução adiada com ações de instalação simultânea é desnecessário, pois o instalador combina as informações de reversão das instalações simultâneas e main. Todas as alterações são revertidas após uma instalação de reversão.
Os valores retornados para ações de instalação simultânea são os mesmos para as outras ações personalizadas. Confira Valores retornados da ação personalizada.
Ações padrão ou personalizadas que especificam uma reinicialização automática do sistema ou solicitam que o usuário reinicie também podem executar a reinicialização ou solicitação de dentro de uma instalação simultânea.
Depois que o instalador inicia uma instalação simultânea, ele bloqueia todas as outras instalações até que a instalação simultânea seja concluída e antes de continuar a instalação do main. O instalador só pode executar instalações simultâneas como ações personalizadas síncronas. Confira Ações personalizadas síncronas e assíncronas. Os sinalizadores de opção descritos em Opções de Processamento de Retorno de Ação Personalizada devem ser definidos como nenhum (+0) ou msidbCustomActionTypeContinue (+64).
Uma ação de instalação simultânea pode instalar um aplicativo a ser executado localmente, para ser executado na origem, para ser reinstalado ou para ser removido da mesma maneira que ao usar o MsiInstallProduct para uma instalação regular. Para especificar o tipo de instalação, passe a propriedade ADDLOCAL, ADDSOURCE, REINSTALL ou REMOVE para a ação de instalação simultânea.
As ações de instalação simultânea podem ser criadas em pares, uma ação usada para instalação e a outra ação usada para remover a instalação simultânea. Um Tipo de Ação Personalizada 7 ou Tipo de Ação Personalizada 23 normalmente é usado para instalar. Um Tipo de Ação Personalizada 39 normalmente é usado para remover a instalação simultânea, quando o produto pai é desinstalado. O registro da ação personalizada de remoção na tabela CustomAction pode ter o GUID do código do produto no campo Source e "REMOVE=ALL" no campo Target. As duas ações personalizadas precisam ser criadas na tabela de sequência de ações com condições mutuamente exclusivas. Por exemplo, a ação personalizada que instala o produto pode ter "NOT Installed" no campo Condition e a ação personalizada que remove a instalação simultânea pode ter REMOVE="ALL" no campo Condition.
Não há métodos para consultar um pacote quanto ao custo. Isso dificulta o custo de instalações simultâneas. As linhas devem ser adicionadas à tabela ReserveCost para indicar as pastas e os custos de pior caso do componente associado à instalação simultânea.
As únicas Opções de Processamento de Retorno de Ação Personalizada disponíveis com ações de instalação simultânea são nenhum (+0) ou msidbCustomActionTypeContinue (+64).
Observe que uma instalação pai não pode chamar seu próprio pacote como uma ação de instalação simultânea.
Observe que, se uma instalação por computador tentar executar uma instalação simultânea por usuário, o instalador registrará a instalação pai como por usuário por padrão. Isso pode fazer com que o instalador remova incorretamente o aplicativo, pois o instalador tenta desinstalar o aplicativo por computador quando ele é realmente registrado como por usuário. Para forçar o estado de uma instalação simultânea a acompanhar o estado da instalação pai, insira ALLUSERS="[ALLUSERS]" na coluna Target da tabela CustomAction. Nesse caso, a instalação simultânea será por computador, se o pai for por computador, e a instalação simultânea será por usuário, se o pai for por usuário.
Os desenvolvedores devem observar os avisos a seguir ao criar instalações simultâneas.
- As instalações simultâneas não podem compartilhar componentes.
- Uma instalação administrativa também não pode conter uma instalação simultânea.
- A aplicação de patch e a atualização podem não funcionar com instalações simultâneas.
- O instalador pode não determinar o custo de uma instalação simultânea corretamente.
- ProgressBars integradas não podem ser usadas com instalações simultâneas.
- Os recursos que devem ser anunciados não podem ser instalados pela instalação simultânea.
- Um pacote que executa uma instalação simultânea de um aplicativo também deve desinstalar o aplicativo simultâneo quando o produto pai for desinstalado.
Para impedir que um pacote seja instalado como uma instalação simultânea, adicione uma das seguintes instruções condicionais à tabela LaunchCondition. Isso impede que o pacote seja instalado por uma ação de instalação simultânea executada por outra instalação. Isso não impede que o pacote seja removido pela ação RemoveExistingProducts. Confira também a propriedade ParentOriginalDatabase e a propriedade ParentProductCode.
"Not ParentProductCode"
"Not ParentOriginalDatabase"