Tillåt clickOnce att installera flera publicerade program från samma projekt i samma miljö (endast.NET Framework-utgåvor)

Sidan uppdaterad :
Datum för skapande av sida :

Miljö för driftskontroll

Visual Studio
  • Visual Studio 2022
.NET Framework
  • .NET Framework 4.8

Nödvändiga miljöer

ramverk
  • Windows Forms (.NET Framework) i allmänhet
  • WPF (.NET Framework) i allmänhet

Först

I det här tipset beskrivs hur du installerar flera publicerade ClickOnce från samma projekt separat i samma miljö.

Om proceduren för att publicera flera kopior från samma projekt i olika konfigurationer

Till exempel, även i samma projekt, om bearbetningsinnehållet ändras beroende på byggkonfigurationen, kanske du vill publicera som ett separat program. Detta är möjligt i .NET (Core)-versionen, men inte i .NET Framework-versionen med standardfunktionerna i Visual Studio.

Denna metod sammanfattas i följande tips med hjälp av ett batchprogram. Detta tips förklaras under förutsättning att följande innehåll är slutfört.

Villkor under vilka ClickOnce installeras som separata applikationer

Om du publicerar med batchprogrammet som beskrivs ovan ändras byggkonfigurationen, men båda behandlas som samma program, Om du försöker installera två i samma miljö kommer det att finnas en konflikt och installationen misslyckas även om du försöker installera senare.

Jag måste få detta att verka vara en separat applikation, men enligt den refererade artikeln identifierar följande parametrar applikationen:

Hänvisning: (.NET) När jag startar appen efter publicering med ClickOnce får jag att "placerings-ID:t inte matchar prenumerationen"

  • Programmets namn
  • Token för offentlig nyckel
  • Kultur
  • Processorarkitektur (till exempel x86)

Bland dessa tror jag att det är oönskat att ändra "kultur" och "processorarkitektur" eftersom det finns en möjlighet till oavsiktliga bearbetningsresultat.

Jag tror att det finns ett sätt att ändra "applikationsnamnet", I grund och botten rekommenderas det inte eftersom endast ett namn kan ges till ett projekt. Det finns en möjlighet att flera definitioner kan göras genom byggkonfiguration och villkorsparametrar i innehållet i projektfilen, Eftersom endast ett användargränssnitt kan ställas in i Visual Studio är det lite farligt eftersom det kan skrivas över beroende på åtgärden.

Resten är en "offentlig nyckeltoken", men den här låter dig skapa flera certifikat, Eftersom det kan anges som en parameter vid tidpunkten för ClickOnce-publicering, skulle jag vilja identifiera applikationen med den här tiden.

Förfarande för driftskontroll

Från det att projektet skapas till den punkt där det är klart att publicera som en batchfil är det samma som följande tips, så se det för proceduren fram till den punkten.

Skapa ett certifikat

Den här gången bekräftar vi med ett testcertifikat för provet. Ursprungligen bör det göras med ett vanligt certifikat, men eftersom det kommer att kräva ett annat förfarande än huvudämnet, såsom skapande av certifikat och förberedelse av certifikatutfärdare, kommer jag att utesluta förklaringen relaterad till certifikat. I produktion är det OK att ersätta testcertifikatfilen med produktionsfilen.

När du har skapat projektet och skapat batchen för publicering går du tillbaka till Visual Studio. Öppna projektegenskaperna och välj Signera på menyn till vänster. Det finns en kontroll för "Sign the ClickOnce manifest" så kontrollera det.

Skapa nu två certifikat. Den här gången skapar vi den på den här skärmen, men ". pfx" filformat, det finns inga problem med att skapa certifikat på annat sätt.

Det finns en "Skapa testcertifikat" -knapp i det nedre högra hörnet, så klicka på den.

Du kan också lägga in ett lösenord, men det fungerar oavsett om du lägger in det eller inte. Men om du vill sätta ett lösenord kommer proceduren att vara besvärlig, så jag kommer inte att uttrycka det den här gången.

En certifikatfil (.pfx) har genererats för projektet. Filnamnet som genereras här är fixat men kan ändras senare. Förresten är giltigheten av testcertifikatet som skapats här ett år. Efter ett år måste du återskapa ett nytt certifikat.

Följ samma steg för att skapa en annan.

Den här gången publicerar vi i Felsökningsbygget och Versions- och lanseringsbygget, så vi ändrar namnet till ett tydligt namn.

Ändring av sats

Öppna batchfilen som du skapade (.bat) i en textredigerare och lägg till följande i parametrarna för msbuild:

beskrivning av parameternamn krävs
ManifestKeyFile Filnamnet (.pfx) för certifikatet. Ange en sökväg i förhållande till eller absolut från projektfilen.
ManifestCertificateThumbprint Tumavtrycket för manifestcertifikatet. Värdet som ska sättas in kan vara vad som helst, men det måste sättas in med alla medel.
Produktnamn Produktens namn. Det blir visningsnamnet på startmenyn eller listan över program.
Utgivarens namn Offentligt företagsnamn. Det blir mappnamnet när du organiserar program i startmenyn.

Baserat på ovanstående ändrar du patchfilen enligt följande.

ClickOnceDebug publicerar.bat (exempel)

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 Problem.bat (exempel)

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 Varje värde anger en annan certifikatfil. ManifestCertificateThumbprint Värdet på kan vara vad som helst, men se till att inkludera det eftersom applikationen inte kan identifieras som en annan om du inte lägger den.

Förresten, eftersom två program installeras i samma miljö den här gången, har parametrar lagts till så att ProductName de kan särskiljas. PublisherName efter eget tycke.

utfärda

Efter inmatning kör du varje batchfil och publicerar den.

Om xxxx.application finns i filen du publicerade öppnar du den i en textredigerare och kontrollerar att den harpublicKeyToken ett annat värde.

installera

När du har kopierat de publicerade filerna till den gemensamma mappen kör du för att installera dem setup.exe .

Om du anger certifikatet vid utfärdandet visas följande skärm vid installationen. Om det är ett testcertifikat kan utgivaren inte bekräftas, så installera det som det är.

Det första programmet installerades och lanserades.

Jag ska försöka installera den andra.

Den andra installerades och lanserades också.

Naturligtvis arbetar båda samtidigt.

ProductName Eftersom den bifogades visas den separat i startmenyn.

Du kan också se båda i listan över appar.