Como obter informações de contexto para ações personalizadas de execução adiada

Como o script de instalação pode ser executado fora da sessão de instalação na qual foi gravado, a sessão pode não existir mais durante a execução do script de instalação. Nesse caso, o identificador de sessão original e as propriedades definidas durante a sequência de instalação não estão disponíveis para uma ação personalizada de execução adiada. Todas as funções que exigem um identificador de sessão são restritas a alguns métodos que podem recuperar informações de contexto ou, em seguida, as propriedades necessárias durante a execução do script devem ser gravadas no script de instalação. Por exemplo, as ações personalizadas adiadas que chamam DLLs (bibliotecas de vínculo dinâmico) passam um identificador que só pode ser usado para obter uma quantidade muito limitada de informações. As funções que não exigem um identificador de sessão podem ser acessadas de uma ação personalizada adiada.

As ações personalizadas de execução adiada são restritas a chamar apenas as funções a seguir que exigem um identificador.

Função Descrição
MsiGetProperty Dá suporte a um conjunto limitado de propriedades quando usado com ações personalizadas de execução adiada: a propriedade CustomActionData, a propriedade ProductCode e a propriedade UserSID. As ações personalizadas de confirmação não podem usar a função MsiGetProperty para obter a propriedade ProductCode. As ações personalizadas de confirmação podem usar a propriedade CustomActionData para obter o código do produto.
MsiFormatRecord Dá suporte a um conjunto limitado de propriedades quando usado com ações personalizadas de execução adiada: as propriedades CustomActionData e ProductCode.
MsiGetMode Quando chamado por ações personalizadas de execução adiada, ações personalizadas de confirmação ou ações personalizadas de reversão, MsiGetMode retorna True ou False quando solicitado a marcar os parâmetros de modo MSIRUNMODE_SCHEDULED, MSIRUNMODE_COMMIT ou MSIRUNMODE_ROLLBACK. As solicitações para verificar quaisquer outros parâmetros do modo de execução de uma ação personalizada adiada, de confirmação ou de reversão retornam Falso.
MsiGetLanguage A ID do idioma numérico para o produto atual. As ações personalizadas de confirmação não podem usar a função MsiGetLanguage. As ações personalizadas de confirmação podem usar a propriedade CustomActionData para obter a ID do idioma numérico.
MsiProcessMessage Processa mensagens de erro ou progresso da ação personalizada.

 

Uma ação personalizada escrita em JScript ou VBScript exige o objeto de Sessão de instalação. Essa ação é do tipo de objeto Sessão e o instalador o anexa ao script com o nome "Sessão". Como o objeto Session pode não existir durante uma reversão de instalação, uma ação personalizada adiada gravada no script deve usar um dos métodos ou propriedades a seguir do objeto Session para recuperar o contexto.

Nome Descrição
Propriedade Mode Retorna True somente para MSIRUNMODE_SCHEDULED.
Propriedade Property (Objeto Session) Retorna a propriedade CustomActionData, a propriedade ProductCode ou a propriedade UserSID.
Propriedade Language (Objeto Session) Retorna a ID do idioma numérico da sessão de instalação.
Método Message Chamado para lidar com erros e progresso.
Propriedade Installer Retorna o objeto pai, que é usado para funções que não são de sessão, como acesso ao registro e gerenciamento de configuração do instalador.

 

Os valores de propriedade definidos no momento em que a sequência de instalação é processada em script podem estar indisponíveis no momento da execução do script. Somente o seguinte conjunto limitado de propriedades está sempre acessível a ações personalizadas durante a execução do script.

Nome da propriedade Descrição
CustomActionData Valor no momento em que a ação personalizada é processada na tabela de sequência. A propriedade CustomActionData só está disponível para ações personalizadas de execução adiada. As ações personalizadas imediatas não têm acesso a essa propriedade.
ProductCode Código exclusivo para o produto, uma cadeia de caracteres de GUID .
UserSID Definido pelo instalador como SID (identificador de segurança) do usuário.

 

Se outros dados de propriedade forem exigidos pela ação personalizada de execução adiada, os valores devem ser armazenados no script de instalação. Isso pode ser feito usando uma segunda ação personalizada.

Para gravar o valor de uma propriedade no script de instalação para uso durante uma ação personalizada de execução adiada

  1. Insira uma pequena ação personalizada na sequência de instalação que define a propriedade de interesse como uma propriedade com o mesmo nome da ação personalizada de execução adiada. Por exemplo, se a chave primária para a ação personalizada de execução adiada for "MyAction", defina uma propriedade chamada "MyAction" para a propriedade X que você precisa recuperar. Você deve definir a propriedade "MyAction" na sequência de instalação, antes da ação personalizada "MyAction". Embora qualquer tipo de ação personalizada possa definir os dados de contexto, o método mais simples é usar uma ação personalizada de atribuição de propriedade (por exemplo, Ação Personalizada Tipo 51).
  2. No momento em que a sequência de instalação for processada, o instalador gravará o valor da propriedade X no script de execução como o valor da propriedade CustomActionData.

Sobre propriedades

Usando propriedades

Referência de propriedade