ClickOnce toestaan meerdere gepubliceerde programma's van hetzelfde project in dezelfde omgeving te installeren (alleen .NET Framework-edities)

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Bedieningscheckomgeving

Visual Studio
  • Visual Studio 2022
.NET Framework
  • .NET Framework 4,8

Vereiste omgevingen

kader
  • Windows Forms (.NET Framework) in het algemeen
  • WPF (.NET Framework) in het algemeen

Eerst

In deze tips wordt beschreven hoe u meerdere gepubliceerde ClickOnce van hetzelfde project afzonderlijk in dezelfde omgeving installeert.

Informatie over de procedure voor het publiceren van meerdere exemplaren van hetzelfde project in verschillende configuraties

Als de inhoud van de verwerking bijvoorbeeld zelfs in hetzelfde project wordt gewijzigd afhankelijk van de buildconfiguratie, kunt u deze als een afzonderlijk programma publiceren. Dit is mogelijk in de .NET (Core)-versie, maar niet in de .NET Framework-versie met de standaardfuncties van Visual Studio.

Deze methode wordt samengevat in de volgende tips met behulp van een batchprogramma. Deze tips worden uitgelegd op basis van het uitgangspunt dat de volgende inhoud is voltooid.

Voorwaarden waaronder ClickOnce als afzonderlijke toepassingen wordt geïnstalleerd

Als u publiceert met het hierboven beschreven batchprogramma, wordt de buildconfiguratie gewijzigd, maar beide worden behandeld als dezelfde toepassing, Als u er twee in dezelfde omgeving probeert te installeren, ontstaat er een conflict en mislukt de installatie, zelfs als u later probeert te installeren.

Ik moet dit een afzonderlijke toepassing laten lijken, maar volgens het artikel waarnaar wordt verwezen, identificeren de volgende parameters de toepassing:

Referentie: (.NET) Wanneer ik de app start na publicatie met ClickOnce, krijg ik dat "de plaatsings-ID niet overeenkomt met het abonnement"

  • Naam toepassing
  • Token met openbare sleutel
  • Cultuur
  • Processorarchitectuur (bijvoorbeeld x86)

Onder deze denk ik dat het onwenselijk is om "cultuur" en "processorarchitectuur" te veranderen omdat er een mogelijkheid is van onbedoelde verwerkingsresultaten.

Ik denk dat er een manier is om de "applicatienaam" te veranderen, Kortom, het wordt niet aanbevolen omdat slechts één naam aan één project kan worden gegeven. Er is een mogelijkheid dat meerdere definities kunnen worden gemaakt door configuratie- en conditieparameters in de inhoud van het projectbestand te bouwen, Aangezien er slechts één gebruikersinterface kan worden ingesteld in Visual Studio, is dit een beetje gevaarlijk omdat deze afhankelijk van de bewerking kan worden overschreven.

De rest is een "public key token", maar met deze kunt u meerdere certificaten maken, Omdat het kan worden opgegeven als een parameter op het moment van ClickOnce-publicatie, wil ik de toepassing met deze tijd identificeren.

Procedure voor de controle van de werking

Vanaf het moment dat u het project maakt tot het punt waarop het klaar is om als batchbestand te publiceren, is het hetzelfde als de volgende tips, dus raadpleeg het voor de procedure tot dat moment.

Een certificaat maken

Deze keer bevestigen we met een testcertificaat voor het monster. Oorspronkelijk zou het moeten worden gedaan met een regulier certificaat, maar omdat het een andere procedure vereist dan het hoofdvak, zoals het maken van certificaten en het voorbereiden van certificaten, zal ik de uitleg met betrekking tot certificaten uitsluiten. In productie is het OK om het testcertificaatbestand te vervangen door het productiebestand.

Nadat u het project hebt gemaakt en de batch voor publicatie hebt gemaakt, keert u terug naar Visual Studio. Open de projecteigenschappen en kies Ondertekenen in het menu aan de linkerkant. Er is een vinkje voor "Sign the ClickOnce manifest" dus check it.

Maak nu twee certificaten. Deze keer zullen we het op dit scherm maken, maar ". pfx" bestandsformaat, er is geen probleem met het maken van certificaten op andere manieren.

Er is een knop "Testcertificaat maken" in de rechterbenedenhoek, dus klik erop.

Je kunt ook een wachtwoord invoeren, maar het werkt of je het er nu in stopt of niet. Als u echter een wachtwoord wilt invoeren, zal de procedure lastig zijn, dus ik zal het deze keer niet plaatsen.

Er is een certificaatbestand (.pfx) gegenereerd voor uw project. De hier gegenereerde bestandsnaam is opgelost, maar kan later worden gewijzigd. Overigens is de geldigheid van het hier aangemaakte testcertificaat één jaar. Na een jaar moet u een nieuw certificaat opnieuw maken.

Volg dezelfde stappen om een andere te maken.

Deze keer zullen we publiceren in de Debug-build en de Release-build, dus we zullen de naam wijzigen in een duidelijke naam.

Batch modificatie

Open het batchbestand dat u hebt gemaakt (.bat) in een teksteditor en voeg het volgende toe aan de parameters van msbuild:

beschrijving van parameternaam vereist
ManifestKeyFile De bestandsnaam (.pfx) van het certificaat. Geef een pad op ten opzichte van of absoluut in het projectbestand.
ManifestCertificateThumbprint De vingerafdruk van het manifestcertificaat. De waarde die erin moet worden gestopt, kan van alles zijn, maar het moet er met alle middelen in worden gestopt.
Productnaam Productnaam. Het wordt de weergavenaam van het startmenu of de lijst met programma's.
UitgeverNaam Naam van het beursgenoteerde bedrijf. Het wordt de mapnaam bij het organiseren van programma's in het startmenu.

Wijzig op basis van het bovenstaande het patchbestand als volgt.

ClickOnceDebug publiceert.bat (voorbeeld)

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-probleem.bat (voorbeeld)

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 Elke waarde geeft een ander certificaatbestand op. ManifestCertificateThumbprint De waarde van kan van alles zijn, maar zorg ervoor dat u het opneemt omdat de toepassing niet als een andere kan worden geïdentificeerd als u deze niet plaatst.

Trouwens, omdat twee programma's deze keer in dezelfde omgeving zijn geïnstalleerd, zijn er parameters toegevoegd zodat ProductName ze kunnen worden onderscheiden. PublisherName naar wens.

uitgeven

Voer na invoer elk batchbestand uit en publiceer het.

Als xxxx.application zich in het bestand bevindt dat u hebt gepubliceerd, opent u het in een teksteditor en controleert u of dit een andere waarde heeftpublicKeyToken .

installeren

Nadat u de gepubliceerde bestanden naar de openbare map hebt gekopieerd, voert u uit om ze setup.exe te installeren .

Als u het certificaat invoert op het moment van uitgifte, wordt het volgende scherm weergegeven op het moment van installatie. Als het een testcertificaat is, kan de uitgever niet worden bevestigd, dus installeer het zoals het is.

Het eerste programma werd geïnstalleerd en gelanceerd.

Ik zal proberen de andere te installeren.

De andere werd ook geïnstalleerd en gelanceerd.

Natuurlijk werken beide tegelijkertijd.

ProductName Omdat het is aangesloten, wordt het afzonderlijk weergegeven in het startmenu.

Je kunt beide ook zien in de lijst met apps.