Compartilhar via


Criar aplicativos ClickOnce na linha de comando

No Visual Studio, você pode criar projetos a partir da linha de comando, mesmo que eles sejam criados no IDE (ambiente de desenvolvimento integrado). Na verdade, você pode recompilar um projeto criado com o Visual Studio em outro computador que tenha apenas o .NET Framework instalado. Essa funcionalidade permite que você reproduza um build usando um processo automatizado, por exemplo, em um laboratório de build central ou com técnicas avançadas de script além do escopo de criação do próprio projeto.

Observação

Para criar aplicativos ClickOnce do .NET na linha de comando, consulte Compilar aplicativos ClickOnce do .NET na linha de comando.

Usar o MSBuild para reproduzir implantações de aplicativos ClickOnce do .NET Framework

Quando você invoca msbuild /target:publish na linha de comando, esse comando instrui o sistema MSBuild a criar o projeto e criar um aplicativo ClickOnce na pasta de publicação. Esse comando é equivalente à seleção do comando Publicar no IDE.

Esse comando executa msbuild.exe, que está no caminho no ambiente de prompt de comando do Visual Studio.

Um "destino" é um indicador para o MSBuild sobre como processar o comando. Os principais destinos são o destino "build" e o destino "publicar". A meta de build equivale a selecionar o comando Build (ou pressionar F5) no ambiente de desenvolvimento integrado (IDE). Se você quiser apenas criar seu projeto, poderá inserir msbuild. Esse comando funciona porque o destino de build é o destino padrão para todos os projetos gerados pelo Visual Studio. Como resultado, você não precisa especificar explicitamente o alvo de compilação. Portanto, a inserção msbuild é a mesma operação que a entrada msbuild /target:build.

O /target:publish comando instrui o MSBuild a invocar o alvo de publicação. O destino de publicação depende do destino de build, o que significa que a operação de publicação é um superconjunto da operação de build. Por exemplo, se você fez uma alteração nos arquivos de origem do Visual Basic ou C#, a operação de publicação recompila automaticamente o assembly correspondente.

Para obter informações sobre como gerar uma implantação completa do ClickOnce usando a ferramenta de linha de comando Mage.exe para criar o manifesto clickOnce, consulte Passo a passo: implantar manualmente um aplicativo ClickOnce.

Criar e compilar um aplicativo ClickOnce básico com o MSBuild

A maneira mais fácil de criar um perfil de publicação é usando o Visual Studio. Um perfil de publicação é necessário para publicar com o MSBuild.

Criar e publicar um projeto do ClickOnce

  1. Abra o Visual Studio e crie um novo projeto.

    Escolha o modelo de projeto do Aplicativo windows forms (.NET Framework) ou do aplicativo WPF (.NET Framework) e nomeie o projeto CmdLineDemo.

  2. No menu Compilar , selecione o comando Publicar .

    Esta etapa garante que o projeto esteja configurado corretamente para produzir uma implantação de aplicativo ClickOnce.

    O Assistente de Publicação é exibido.

  3. No Assistente de Publicação, selecione Concluir.

    O Visual Studio gera e exibe a página da Web padrão, chamada Publish.htm.

  4. Salve seu projeto e anote o local da pasta na qual ele está armazenado.

    As etapas anteriores criam um projeto ClickOnce que foi publicado pela primeira vez. Agora você pode reproduzir o build fora do IDE.

Executar o build a partir da linha de comando

  1. Saia do Visual Studio.

  2. No menu Iniciar do Windows, selecione Ferramentas>Linha de Comando>Prompt de Comando do Desenvolvedor.

    O Prompt de Comando do Desenvolvedor do Visual Studio é aberto.

  3. No Prompt de Comando do Visual Studio, verifique se o diretório atual mostra o local do projeto criado anteriormente.

    Se você não estiver trabalhando no diretório do projeto, insira um comando para alterar para o local desejado, como chdir C:\Users\username\source\repos\CmdLineDemo.

  4. Para remover os arquivos existentes produzidos na seção anterior, insira rmdir /s publish.

    Essa etapa é opcional, mas garante que o build de linha de comando produza todos os novos arquivos.

  5. Digite msbuild /target:publish.

    As etapas anteriores produzem uma implantação completa do aplicativo ClickOnce em uma subpasta do seu projeto chamada Publicar. CmdLineDemo.application é o manifesto de implantação do ClickOnce. A pasta CmdLineDemo_1.0.0.0 contém os arquivos CmdLineDemo.exe e CmdLineDemo.exe.manifest, o manifesto do aplicativo ClickOnce. Setup.exe é o bootstrapper, que por padrão está configurado para instalar o .NET Framework. A pasta DotNetFX contém os arquivos redistribuíveis para o .NET Framework. Os arquivos neste local compõem todo o conjunto de arquivos necessários para implantar seu aplicativo na Web ou por meio de UNC ou CD/DVD.

Observação

O sistema MSBuild usa a opção PublishDir para especificar o local de saída, como msbuild /t:publish /p:PublishDir="<specific location>".

Saída do processo de publicação

O MSBuild usa a propriedade PublishDir para definir o local de saída da construção, incluindo artefatos de construção. O PublishDir valor que o MSBuild usa como destino para a publicação é obtido por padrão da propriedade PublishDir no arquivo de projeto (.NET Framework). Você pode substituir esse comportamento na linha de comando do MSBuild usando a opção /p . Ao sobrescrever a configuração, a saída da publicação é direcionada para o local especificado. A saída é gerada durante a etapa de publicação do MSBuild. Qualquer alvo do MSBuild com AfterTargets="ClickOncePublish" executa após essa cópia ser feita.

A PublishUrl propriedade, ao contrário PublishDir, não é usada na etapa DO MSBuild. PublishUrl é ignorado quando você invoca o MSBuild diretamente para publicar na linha de comando.

Quando a publicação é iniciada no IDE do Visual Studio, o Visual Studio invoca o MSBuild para publicar artefatos no PublishDir local. Depois que essa etapa do MSBuild for concluída, o Visual Studio publicará arquivos específicos do ClickOnce no local apontado por PublishUrl. Esta segunda etapa é executada dentro do processo do Visual Studio. Você não pode injetar nenhum destino/tarefa a ser executado durante esta etapa porque é um processo do Visual Studio.

Para implantações do MSBuild que não usam o Visual Studio, copie todos os arquivos no diretório de implantação para o destino de implantação ou mídia. O diretório de implantação pode ser uma pasta em um site ou site FTP, um compartilhamento de arquivos ou uma CD-ROM. Por exemplo, você pode usar uma ferramenta de terceiros ou uma tarefa personalizada do MSBuild para copiar os arquivos ClickOnce.

Para qualquer pós-processamento na PublishUrl pasta, você precisa ter um script separado.

Importante

Se PublishDir estiver definido para o mesmo local que PublishUrl, a saída de compilação duplicada será copiada para o local PublishUrl. Você pode evitar esse problema no Visual Studio 2022 versão 17.4 e posterior criando um novo perfil. O novo perfil define PublishDir como um local diferente do .PublishUrl No final da operação de publicação, os arquivos ClickOnce relevantes são copiados do local PublishDir para o local PublishUrl.

Publicar propriedades

Quando você publica o aplicativo usando os procedimentos anteriores, as propriedades a seguir são inseridas no arquivo de projeto pelo Assistente de Publicação. Essas propriedades influenciam diretamente como o aplicativo ClickOnce é produzido.

Em CmdLineDemo.vbproj / CmdLineDemo.csproj:

<AssemblyOriginatorKeyFile>WindowsApplication3.snk</AssemblyOriginatorKeyFile>
<GenerateManifests>true</GenerateManifests>
<TargetZone>LocalIntranet</TargetZone>
<PublisherName>Microsoft</PublisherName>
<ProductName>CmdLineDemo</ProductName>
<PublishUrl>http://localhost/CmdLineDemo</PublishUrl>
<Install>true</Install>
<ApplicationVersion>1.0.0.*</ApplicationVersion>
<ApplicationRevision>1</ApplicationRevision>
<UpdateEnabled>true</UpdateEnabled>
<UpdateRequired>false</UpdateRequired>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>

Para projetos do .NET Framework, você pode substituir essas propriedades na linha de comando sem alterar o próprio arquivo de projeto. Por exemplo, o código a seguir cria a implantação do aplicativo ClickOnce sem o bootstrapper:

msbuild /target:publish /property:BootstrapperEnabled=false

As propriedades de publicação são controladas no Visual Studio a partir das páginas de propriedades Publicar, Segurança e Assinatura do Designer de Projeto.

As propriedades de publicação a seguir são definidas em várias páginas de propriedades do designer de aplicativos.

  • AssemblyOriginatorKeyFile determina o arquivo de chave usado para assinar os manifestos do aplicativo ClickOnce. Essa mesma chave também pode ser usada para atribuir um nome forte aos assemblies. Essa propriedade é definida na página Assinatura do Designer de Projetos.

As seguintes propriedades são definidas na página Segurança :

  • Habilitar as Configurações de Segurança do ClickOnce determina se os manifestos ClickOnce são gerados. Quando um projeto é criado inicialmente, a geração de manifesto ClickOnce está desativada por padrão. O assistente ativa automaticamente esse sinalizador quando você publica pela primeira vez.

  • TargetZone determina o nível de confiança a ser incorporado ao manifesto do aplicativo ClickOnce. Os valores possíveis são "Internet", "LocalIntranet" e "Personalizado". Internet e LocalIntranet fazem com que um conjunto de permissões padrão seja emitido no manifesto do aplicativo ClickOnce. LocalIntranet é o padrão, e basicamente significa confiança total. Custom especifica que somente as permissões especificadas explicitamente no arquivo app.manifest base devem ser emitidas no ClickOnce application manifest. O arquivo app.manifest é um arquivo de manifesto parcial que contém apenas as definições de informações de confiança. É um arquivo oculto, adicionado automaticamente ao seu projeto quando você configura permissões na página Segurança .

As seguintes propriedades são definidas na página Publicar :

  • PublishUrl é o local no qual o aplicativo é publicado no IDE. Ele será inserido no manifesto do aplicativo ClickOnce se as propriedades InstallUrl ou UpdateUrl não forem especificadas.

  • ApplicationVersion especifica a versão do aplicativo ClickOnce. A versão é um número de quatro dígitos. Se o último dígito for um "*" (asterisco), o ApplicationRevision será substituído pelo valor inserido no manifesto no momento da construção.

  • ApplicationRevision especifica a revisão. Esse valor é um inteiro, que incrementa cada vez que você publica no IDE. Observe que ele não é incrementado automaticamente para builds executados na linha de comando.

  • Install determina se o aplicativo é instalado ou executado da Web.

  • InstallUrl (não mostrado) é o local do qual os usuários instalam o aplicativo. Se for especificado, esse valor será inserido no setup.exe bootstrapper se a IsWebBootstrapper propriedade estiver habilitada. Ele também será inserido no manifesto do aplicativo se UpdateUrl não for especificado.

  • SupportUrl (não mostrado) é o local vinculado na caixa de diálogo Adicionar/Remover Programas para um aplicativo instalado.

As propriedades a seguir são definidas na caixa de diálogo Atualizações do Aplicativo , acessadas na página Publicar .

  • UpdateEnabled indica se o aplicativo deve verificar se há atualizações.

  • UpdateMode especifica atualizações em primeiro plano ou atualizações em segundo plano.

  • UpdateInterval especifica com que frequência o aplicativo deve verificar se há atualizações.

  • UpdateIntervalUnits especifica se o UpdateInterval valor está em unidades de horas, dias ou semanas.

  • UpdateUrl (não mostrado) é o local do qual o aplicativo recebe atualizações. Se especificado, esse valor será inserido no manifesto do aplicativo.

As propriedades a seguir são definidas na caixa de diálogo Opções de Publicação , acessadas na página Publicar .

  • PublisherName especifica o nome do publicador exibido no prompt mostrado ao instalar ou executar o aplicativo. Para um aplicativo instalado, ele também é usado para especificar o nome da pasta no menu Iniciar .

  • ProductName especifica o nome do produto exibido no prompt mostrado ao instalar ou executar o aplicativo. Para um aplicativo instalado, ele também é usado para especificar o nome do atalho no menu Iniciar .

As propriedades a seguir são definidas na caixa de diálogo Pré-requisitos , acessada na página Publicar .

  • BootstrapperEnabled determina se o bootstrapper setup.exe deve ser gerado.

  • IsWebBootstrapper determina se o setup.exe bootstrapper funciona na Web ou no modo baseado em disco.

Opções de uso: InstallURL, SupportUrl, PublishURL, UpdateURL

A tabela a seguir mostra as quatro opções de URL para a implantação do ClickOnce.

Opção de URL Description
PublishURL Necessário para publicar o aplicativo ClickOnce em um site.
InstallURL Optional. Defina essa opção de URL se o site de instalação for diferente do PublishURL. Por exemplo, você pode definir como PublishURL um caminho FTP e definir como InstallURL uma URL Da Web.
SupportURL Optional. Defina essa opção de URL se o site de suporte for diferente do PublishURL. Por exemplo, você poderia definir o SupportURL para o site de suporte ao cliente da sua empresa.
UpdateURL Optional. Defina essa opção de URL se o local de atualização for diferente do InstallURL. Por exemplo, você pode definir como PublishURL um caminho FTP e definir como UpdateURL uma URL Da Web.