Permita que o ClickOnce instale vários programas publicados do mesmo projeto no mesmo ambiente (somente no Net Framework Editions)

Página atualizada :
Data de criação de página :

Ambiente de verificação de operação

Estúdio Visual
  • Visual Studio 2022
.NET Framework
  • .NET Framework 4.8

Ambientes Obrigatórios

estrutura
  • Formulários do Windows (.NET Framework) em geral
  • WPF (.NET Framework) em geral

Inicialmente

Esta dica descreve como instalar vários ClickOnce publicados separadamente no mesmo ambiente.

Sobre o procedimento para publicar várias cópias do mesmo projeto em diferentes configurações

Por exemplo, mesmo no mesmo projeto, se o conteúdo de processamento for alterado dependendo da configuração de compilação, você pode querer publicar como um programa separado. Isso é possível na versão .NET (Core), mas não na versão .NET Framework com os recursos padrão do Visual Studio.

Este método é resumido nas seguintes dicas usando um programa de lote. Esta dica é explicada com a premissa de que os seguintes conteúdos são concluídos.

Condições sob as quais o ClickOnce instala como aplicativos separados

Se você publicar usando o programa de lote descrito acima, a configuração de compilação será alterada, mas ambas são tratadas como a mesma aplicação, Se você tentar instalar dois no mesmo ambiente, haverá um conflito, e a instalação falhará mesmo se você tentar instalar mais tarde.

Preciso fazer com que pareça ser uma aplicação separada, mas de acordo com o artigo referenciado, os seguintes parâmetros identificam a aplicação:

Referência: (.NET) Quando ando o aplicativo após a publicação com o ClickOnce, recebo que "o ID de colocação não corresponde à assinatura"

  • Nome da aplicação
  • Token de chave pública
  • Cultura
  • Arquitetura do processador (por exemplo, x86)

Entre elas, penso que é indesejável mudar "cultura" e "arquitetura de processadores" porque existe a possibilidade de resultados de processamento não intencional.

Acho que há uma maneira de mudar o "nome do aplicativo", Basicamente, não é recomendado porque apenas um nome pode ser dado a um projeto. Existe a possibilidade de que várias definições possam ser feitas por configuração de compilação e parâmetros de condição no conteúdo do arquivo do projeto, Uma vez que apenas uma interface do usuário pode ser definida no Visual Studio, é um pouco perigosa porque pode ser substituída dependendo da operação.

O resto é um "token de chave pública", mas este permite que você crie vários certificados, Uma vez que pode ser especificado como um parâmetro no momento da publicação clickOnce, gostaria de identificar o aplicativo com este tempo.

Procedimento de verificação de operação

Do ponto de criação do projeto até o ponto em que ele está pronto para publicar como um arquivo em lote, é o mesmo que as seguintes dicas, por isso, consulte-o para o procedimento até aquele ponto.

Criando um certificado

Desta vez, confirmaremos com um certificado de teste para a amostra. Originalmente, deve ser feito com um certificado regular, mas como exigirá um procedimento diferente do assunto principal, como criação de certificados e preparação de autoridade de certificado, excluirei a explicação relacionada aos certificados. Na produção, não há problema em substituir o arquivo do certificado de teste pelo arquivo de produção.

Depois de criar o projeto e criar o lote para publicação, retorne ao Visual Studio. Abra as propriedades do projeto e escolha Assinar no menu à esquerda. Há uma verificação para "Sign the ClickOnce manifest" então verifique-o.

Agora crie dois certificados. Desta vez vamos criá-lo nesta tela, mas ". formato de arquivo pfx", não há problema em criar certificados por outros meios.

Há um botão "Criar certificado de teste" no canto inferior direito, então clique nele.

Você também pode colocar uma senha, mas funciona quer você coloque ou não. No entanto, se você quiser colocar uma senha, o procedimento será problemático, então eu não vou colocá-lo desta vez.

Um arquivo certificado (.pfx) foi gerado para o seu projeto. O nome do arquivo gerado aqui é corrigido, mas pode ser alterado mais tarde. A propósito, a validade do certificado de teste criado aqui é de um ano. Depois de um ano, você precisará recriar um novo certificado.

Siga os mesmos passos para criar outro.

Desta vez, publicaremos na compilação Debug e na compilação Release, então mudaremos o nome para um claro.

Modificação do lote

Abra o arquivo em lote que você criou (.bat) em um editor de texto e adicione os seguintes aos parâmetros de msbuild:

descrição do nome do parâmetro necessária
ManifestoKeyFile O nome do arquivo (.pfx) do certificado. Especifique um caminho relativo ou absoluto ao arquivo do projeto.
ManifestCertificateThumbprint A impressão digital do certificado manifesto. O valor a ser colocado pode ser qualquer coisa, mas deve ser colocado por todos os meios.
Nome do produto Nome do produto. Torna-se o nome de exibição do menu iniciar ou lista de programas.
PublisherName Nome da empresa pública. Torna-se o nome da pasta ao organizar programas no menu iniciar.

Com base no acima, modifique o arquivo de patch da seguinte forma.

ClickOnceDebug publica.bat (exemplo)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\" /p:ManifestKeyFile="ClickOnceMultipleInstallDebug.pfx" /p:ManifestCertificateThumbprint="Debug" /p:ProductName="CliclOnce テスト Debug システム" /p:PublisherName="Sorceryforce"

ClickOnceRelease Issue.bat (Exemplo)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\" /p:ManifestKeyFile="ClickOnceMultipleInstallRelease.pfx" /p:ManifestCertificateThumbprint="Release" /p:ProductName="CliclOnce テスト Release システム" /p:PublisherName="Sorceryforce"

ManifestKeyFile Cada valor especifica um arquivo de certificado diferente. ManifestCertificateThumbprint O valor pode ser qualquer coisa, mas não se esqueça de incluí-lo porque o aplicativo não pode ser identificado como outro se você não colocá-lo.

A propósito, como dois programas são instalados no mesmo ambiente desta vez, foram adicionados parâmetros para que ProductName possam ser distinguidos. PublisherName ao seu gosto.

questão

Após a entrada, execute cada arquivo de lote e publique-o.

Se xxxx.application estiver no arquivo publicado, abra-o em um editor de texto e certifique-se de que tenhapublicKeyToken um valor diferente.

instalar

Depois de copiar os arquivos publicados para a pasta pública, execute-os para instalá-los setup.exe .

Se você inserir o certificado no momento da emissão, a tela a seguir será exibida no momento da instalação. Se for um certificado de teste, o editor não pode ser confirmado, então instale-o como está.

O primeiro programa foi instalado e lançado.

Vou tentar instalar o outro.

O outro também foi instalado e lançado.

Claro, ambos estão trabalhando ao mesmo tempo.

ProductName Uma vez que foi anexado, é exibido separadamente no menu iniciar.

Você também pode ver ambos na lista de aplicativos.