Passo a passo: Criar um bootstrapper personalizado com um aviso de privacidade

Você pode configurar aplicativos ClickOnce para serem atualizados automaticamente quando assemblies com versões de arquivo mais recentes e versões de assembly estiverem disponíveis. Para garantir que seus clientes consentam com esse comportamento, você pode exibir uma solicitação de privacidade para eles. Depois, eles podem escolher se deseja conceder permissão ao aplicativo para atualizar automaticamente. Se o aplicativo não tiver permissão para ser atualizado automaticamente, ele não será instalado.

Observação

Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio neste artigo. Você pode estar usando outra edição do Visual Studio ou outras configurações de ambiente. Para obter mais informações, confira Personalizar o IDE.

Para exibir uma solicitação de privacidade, crie um aplicativo que peça ao leitor para consentir com as atualizações automáticas do aplicativo.

  1. No menu Arquivo , aponte para Novoe clique em Projeto.

  2. Na caixa de diálogo Novo Projeto, clique no Windows e, em seguida, clique em WindowsFormsApplication.

  3. Para o Nome, digite ConsentDialog e clique em OK.

  4. No designer, clique no formulário.

  5. Na janela Propriedades, altere a propriedade Texto para Atualizar a Caixa de Diálogo de Consentimento.

  6. Na Caixa de Ferramentas, expanda Todos os Windows Forms e arraste um controleRótulo para o formulário.

  7. No designer, clique no controle de rótulo.

  8. Na janela Propriedades, altere a propriedade Texto em Aparência para o seguinte:

    O aplicativo que você está prestes a instalar verifica as atualizações mais recentes na Web. Ao clicar em "Concordo", você autoriza o aplicativo a verificar e instalar atualizações automaticamente da Internet.

  9. Na Caixa de Ferramentas, arraste um controle da Caixa de seleção para o meio do formulário.

  10. Na janela Propriedades, altere a propriedade Texto em Modelo para Concordo.

  11. Na Caixa de Ferramentas, arraste um controle Botão para o canto inferior esquerdo do formulário.

  12. Na janela Propriedades, altere a propriedade Texto em Modelo para Continuar.

  13. Na janela Propriedades, altere a propriedade (Name) em Design para ProceedButton.

  14. Na Caixa de Ferramentas, arraste um controle Botão para a parte inferior direita do formulário.

  15. Na janela Propriedades, altere a propriedade Texto em Modelo para Cancelar.

  16. Na janela Propriedades, altere a propriedade (Name) em Design para CancelButton.

  17. No designer, clique duas vezes na caixa de seleção Concordo para gerar o manipulador de eventos CheckedChanged.

  18. No arquivo de código Form1, adicione o código a seguir para o manipulador de eventos CheckedChanged.

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        ProceedButton.Enabled = !ProceedButton.Enabled;
    }
    
  19. Atualize o construtor de classe para desabilitar o botão Continuar por padrão.

    public Form1()
    {
        InitializeComponent();
        ProceedButton.Enabled = false;
    }
    
  20. No arquivo de código Form1, adicione o código a seguir para uma variável booliana para acompanhar se o usuário final consentiu com atualizações online.

    public bool accepted = false;
    
  21. No designer, clique duas vezes no botão Continuar para gerar o manipulador de eventos de Clique.

  22. No arquivo de código Form1, adicione o código a seguir ao manipulador de eventos Clique para o botão Continuar.

    private void ProceedButton_Click(object sender, EventArgs e)
    {
        if (ProceedButton.Enabled)
        {
            accepted = true;
            this.Close();
        }
    }
    
  23. No designer, clique duas vezes no botão Cancelar para gerar o manipulador de eventos de Clique.

  24. No arquivo de código Form1, adicione o código a seguir para o manipulador de eventos de Clique para o botão Cancelar.

    private void CancelButton_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    
  25. Atualize o aplicativo para retornar um erro se o usuário final não consentir com atualizações online.

    Somente para desenvolvedores do Visual Basic:

    1. No Gerenciador de Soluções, clique em ConsentDialog.

    2. No menu Projeto, clique em Adicionar Módulo e, em seguida, clique em Adicionar.

    3. No arquivo de código Module1.vb, adicione o código a seguir.

      Module Module1
      
          Function Main() As Integer
              Application.EnableVisualStyles()
              Application.SetCompatibleTextRenderingDefault(False)
              Dim f As New Form1()
              Application.Run(f)
              If (Not f.accepted) Then
                  Return -1
              Else
                  Return 0
              End If
          End Function
      
      End Module
      
    4. No menu Projeto, clique em Propriedades do ConsentDialog, depois clique na guia Aplicativo.

    5. Desmarque Habilitar estrutura do aplicativo.

    6. No menu suspenso Objeto de inicialização, selecione Módulo1.

      Observação

      Desabilitar a estrutura do aplicativo desabilita recursos como estilos visuais, eventos de aplicativo, tela inicial, aplicativo de instância única e muito mais. Para obter mais informações, consulte Página de aplicativo, Designer de Projeto (Visual Basic).

      Somente para desenvolvedores do Visual C#:

      Abra o arquivo de código Program.cs e adicione o código a seguir.

      static int Main()
      {
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
          Form1 f = new Form1();
          Application.Run(f);
          if (!f.accepted)
              return -1;
          else
              return 0;
      }
      
  26. No menu Compilar, clique em BuildSolution.

Criar o pacote de inicialização personalizado

Para mostrar o consentimento de privacidade para os usuários finais, você pode criar um pacote de inicialização personalizado para o aplicativo de Diálogo de Consentimento de Atualização e incluí-lo como um pré-requisito em todos os seus aplicativos ClickOnce.

Este procedimento demonstra como criar um pacote inicializador personalizado criando os seguintes documentos:

  • Um arquivo de manifesto product.xml para descrever o conteúdo da inicialização.

  • Um arquivo de manifesto package.xml para listar os aspectos específicos da localização do pacote, como cadeias de caracteres e os termos de licença de software.

  • Um documento para os termos de licença de software.

Etapa 1: Para criar o diretório de inicialização

  1. Crie um diretório chamado UpdateConsentDialog em %PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages.

    Observação

    Talvez você precise de privilégios administrativos para criar essa pasta.

  2. No diretório UpdateConsentDialog, crie um subdiretório chamado en.

    Observação

    Crie um novo diretório para cada localidade. Por exemplo, você pode adicionar subdiretórios para as localidades fr e de. Esses diretórios conterão cadeias de caracteres e pacotes de idiomas em francês e alemão, se necessário.

Etapa 2: Para criar o arquivo de manifesto product.xml

  1. Crie um arquivo de texto chamado product.xml.

  2. No arquivo product.xml, adicione o código XML a seguir. Verifique se você não substitui o código XML existente.

    <Product
      xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
      ProductCode="Microsoft.Sample.EULA">
      <!-- Defines the list of files to be copied on build. -->
      <PackageFiles CopyAllPackageFiles="false">
        <PackageFile Name="ConsentDialog.exe"/>
      </PackageFiles>
    
      <!-- Defines how to run the Setup package.-->
      <Commands >
        <Command PackageFile = "ConsentDialog.exe" Arguments=''>
          <ExitCodes>
            <ExitCode Value="0" Result="Success" />
            <ExitCode Value="-1" Result="Fail" String="AU_Unaccepted" />
            <DefaultExitCode Result="Fail"
              FormatMessageFromSystem="true" String="GeneralFailure" />
          </ExitCodes>
        </Command>
      </Commands>
    
    </Product>
    
  3. Salve o arquivo no diretório de inicialização UpdateConsentDialog.

Etapa 3: Para criar o arquivo de manifesto package.xml e os termos de licença de software

  1. Crie um arquivo de texto chamado package.xml.

  2. No arquivo package.xml, adicione o código XML a seguir para definir a localização e incluir os termos de licença de software. Verifique se você não substitui o código XML existente.

    <Package
      xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
      Name="DisplayName"
      Culture="Culture"
      LicenseAgreement="eula.rtf">
      <PackageFiles>
        <PackageFile Name="eula.rtf"/>
      </PackageFiles>
    
      <!-- Defines a localizable string table for error messages. -->
      <Strings>
        <String Name="DisplayName">Update Consent Dialog</String>
        <String Name="Culture">en</String>
        <String Name="AU_Unaccepted">The automatic update agreement is not accepted.</String>
        <String Name="GeneralFailure">A failure occurred attempting to launch the setup.</String>
      </Strings>
    </Package>
    
  3. Salve o arquivo no subdiretório en no diretório de inicialização UpdateConsentDialog.

  4. Crie um documento chamado eula.rtf para os termos de licença de software.

    Observação

    Os termos de licença de software devem incluir informações sobre licenciamento, garantias, responsabilidades e leis locais. Esses arquivos devem ser específicos da localidade, portanto, certifique-se de que o arquivo seja salvo em um formato que dê suporte a caracteres MBCS ou UNICODE. Consulte seu departamento jurídico sobre o conteúdo dos termos de licença de software.

  5. Salve o documento no subdiretório en no diretório de inicialização UpdateConsentDialog.

  6. Se necessário, crie um novo arquivo de manifesto package.xml e um novo documento eula.rtf para os termos de licença de software para cada localidade. Por exemplo, se você criou subdiretórios para as localidades fr e de, crie arquivos de manifesto package.xml separados e termos de licença de software e salve-os nos subdiretórios fr e de.

No Visual Studio, você pode definir o aplicativo de Consentimento de Atualização como um pré-requisito.

  1. No Gerenciador de Soluções, clique no nome do aplicativo que você deseja implantar.

  2. No menu Projeto, clique em ProjectNamePropriedades.

  3. Clique na página Publicar e clique em Pré-requisitos.

  4. Selecione a caixa de diálogo Atualizar Consentimento.

    Observação

    Talvez seja necessário fechar e reabrir o Visual Studio para ver a caixa de diálogo Atualizar Consentimento na caixa de diálogo Pré-requisitos.

  5. Clique em OK.

Criar e testar o programa de instalação

Depois de definir o aplicativo de Consentimento de Atualização como um pré-requisito, você pode gerar o instalador e o bootstrapper para seu aplicativo.

Para criar e testar o programa de instalação não clicando em Concordar

  1. No Gerenciador de Soluções, clique no nome do aplicativo que você deseja implantar.

  2. No menu Projeto, clique em ProjectNamePropriedades.

  3. Clique na página Publicar e clique em Publicar Agora.

  4. Se a saída de publicação não for aberta automaticamente, navegue até a saída de publicação.

  5. Execute o programa Setup.exe.

    O programa de instalação mostra o contrato de licença de software da Caixa de Diálogo de Consentimento de Atualização.

  6. Leia o contrato de licença de software e clique em Aceitar.

    O aplicativo de Diálogo de Consentimento de Atualização é exibido e mostra o seguinte texto: O aplicativo que você está prestes a instalar verifica as atualizações mais recentes na Web. Ao clicar em Concordo, você autoriza o aplicativo a verificar se há atualizações automaticamente na Internet.

  7. Feche o aplicativo ou clique em Cancelar.

    O aplicativo mostra um erro: ocorreu um erro ao instalar componentes do sistema para ApplicationName. Não foi possível continuar a instalação até que todos os componentes do sistema tenham sido instalados com êxito.

  8. Clique em Detalhes para mostrar a seguinte mensagem de erro: Falha na instalação da caixa de diálogo consentimento da atualização do componente com a seguinte mensagem de erro: "O contrato de atualização automática não é aceito". Os seguintes componentes não foram instalados: – Caixa de diálogo Atualizar Consentimento

  9. Clique em fechar

Para criar e testar o programa de instalação clicando em Concordar

  1. No Gerenciador de Soluções, clique no nome do aplicativo que você deseja implantar.

  2. No menu Projeto, clique em ProjectNamePropriedades.

  3. Clique na página Publicar e clique em Publicar Agora.

  4. Se a saída de publicação não for aberta automaticamente, navegue até a saída de publicação.

  5. Execute o programa Setup.exe.

    O programa de instalação mostra o contrato de licença de software da Caixa de Diálogo de Consentimento de Atualização.

  6. Leia o contrato de licença de software e clique em Aceitar.

    O aplicativo de Diálogo de Consentimento de Atualização é exibido e mostra o seguinte texto: O aplicativo que você está prestes a instalar verifica as atualizações mais recentes na Web. Ao clicar em Concordo, você autoriza o aplicativo a verificar se há atualizações automaticamente na Internet.

  7. Clique em Concordare clique em Continuar.

    O aplicativo começa a ser instalado.

  8. Se a caixa de diálogo Instalar Aplicativo for exibida, clique em Instalar.