Dela via


Skapa ClickOnce-program från kommandoraden

I Visual Studio kan du skapa projekt från kommandoraden, även om de skapas i den integrerade utvecklingsmiljön (IDE). I själva verket kan du återskapa ett projekt som skapats med Visual Studio på en annan dator som bara har .NET Framework installerat. Med den här funktionen kan du återskapa en version med hjälp av en automatiserad process, till exempel i ett centralt bygglabb eller med avancerade skripttekniker som ligger utanför själva projektets omfång.

Anmärkning

Information om hur du skapar .NET ClickOnce-program från kommandoraden finns i Skapa .NET ClickOnce-program från kommandoraden.

Använda MSBuild för att återskapa .NET Framework ClickOnce-programdistributioner

När du anropar msbuild /target:publish på kommandoraden instruerar det här kommandot MSBuild-systemet att skapa projektet och skapa ett ClickOnce-program i publiceringsmappen. Det här kommandot motsvarar att välja kommandot Publicera i IDE.

Det här kommandot kör msbuild.exe, som finns på sökvägen i Visual Studio-kommandotolkens miljö.

Ett "mål" är en indikator på MSBuild om hur kommandot ska bearbetas. De viktigaste målen är "build"-målet och "publicera"-målet. Byggmålet motsvarar att välja kommandot Build (eller trycka på F5) i IDE. Om du bara vill skapa projektet kan du ange msbuild. Det här kommandot fungerar eftersom byggmålet är standardmålet för alla projekt som genereras av Visual Studio. Därför behöver du inte uttryckligen ange byggmålet. Att ange msbuild motsvarar samma åtgärd som att ange msbuild /target:build.

Kommandot /target:publish instruerar MSBuild att anropa publiceringsmålet. Publiceringsmålet beror på byggmålet, vilket innebär att publiceringsåtgärden är en superuppsättning av byggåtgärden. Om du till exempel har ändrat Visual Basic- eller C#-källfiler återskapar publiceringsåtgärden automatiskt motsvarande sammansättning.

Information om hur du genererar en fullständig ClickOnce-distribution med hjälp av kommandoradsverktyget Mage.exe för att skapa ditt ClickOnce-manifest finns i Genomgång: Distribuera ett ClickOnce-program manuellt.

Skapa och skapa ett grundläggande ClickOnce-program med MSBuild

Det enklaste sättet att skapa en publiceringsprofil är att använda Visual Studio. En publiceringsprofil krävs för att publicera med MSBuild.

Skapa och publicera ett ClickOnce-projekt

  1. Öppna Visual Studio och skapa ett nytt projekt.

    Välj projektmallen Windows Forms App (.NET Framework) eller WPF App (.NET Framework) och ge projektet CmdLineDemonamnet .

  2. På menyn Skapa väljer du kommandot Publicera .

    Det här steget säkerställer att projektet är korrekt konfigurerat för att skapa en ClickOnce-programdistribution.

    Publiceringsguiden visas.

  3. I publiceringsguiden väljer du Slutför.

    Visual Studio genererar och visar standardwebbsidan med namnet Publish.htm.

  4. Spara projektet och anteckna mappplatsen där det lagras.

    Föregående steg skapar ett ClickOnce-projekt som har publicerats för första gången. Nu kan du återskapa versionen utanför IDE.

Återskapa bygget från kommandoraden

  1. Avsluta Visual Studio.

  2. Start-menyn i Windows väljer duVerktyg>Kommandorad>Utvecklarkommandotolk.

    Kommandotolken för Visual Studio Developer öppnas.

  3. I Visual Studio-kommandotolken kontrollerar du att den aktuella katalogen visar platsen för projektet som du skapade tidigare.

    Om du inte arbetar i projektkatalogen anger du ett kommando för att ändra till önskad plats, till exempel chdir C:\Users\username\source\repos\CmdLineDemo.

  4. Om du vill ta bort befintliga filer som skapades i föregående avsnitt anger du rmdir /s publish.

    Det här steget är valfritt, men det säkerställer att kommandoradsversionen genererar alla nya filer.

  5. Ange msbuild /target:publish.

    Föregående steg skapar en fullständig ClickOnce-programdistribution i en undermapp i projektet med namnet Publicera. CmdLineDemo.application är ClickOnce-distributionsmanifestet. Mappen CmdLineDemo_1.0.0.0 innehåller filerna CmdLineDemo.exe och CmdLineDemo.exe.manifest, ClickOnce-programmanifestet. Setup.exe är bootstrappern, som som standard är konfigurerad för att installera .NET Framework. DotNetFX-mappen innehåller de omdistribuerbara filerna för .NET Framework. Filerna på den här platsen består av hela uppsättningen filer som du behöver för att distribuera ditt program via webben eller via UNC eller CD/DVD.

Anmärkning

MSBuild-systemet använder alternativet PublishDir för att ange platsen för utdata, till exempel msbuild /t:publish /p:PublishDir="<specific location>".

Publicera processutdata

MSBuild använder PublishDir egenskapen för att ange utdataplatsen för bygget, inklusive byggartefakter. Värdet PublishDir som MSBuild använder som mål för publiceringen hämtas som standard från PublishDir egenskapen i projektfilen (.NET Framework). Du kan åsidosätta det här beteendet på MSBuild-kommandoraden med hjälp av växeln /p . Om du åsidosätter inställningen går publiceringsutdata till den angivna platsen. Utdata genereras under MSBuild-steget för publicering. Varje MSBuild-mål med AfterTargets="ClickOncePublish" körs efter att denna kopia har gjorts.

Egenskapen PublishUrl , till skillnad från PublishDir, används inte i MSBuild-steget. PublishUrl ignoreras när du anropar MSBuild direkt för att publicera från kommandoraden.

När publiceringen startas i Visual Studio IDE anropar Visual Studio MSBuild för att publicera artefakter på platsen PublishDir . När det här MSBuild-steget har slutförts publicerar Visual Studio sedan ClickOnce-specifika filer till den plats som pekas på av PublishUrl. Det andra steget körs i Visual Studio-processen. Du kan inte mata in mål/aktiviteter som ska köras under det här steget eftersom det är en Visual Studio-process.

För MSBuild-distributioner som inte använder Visual Studio kopierar du alla filer i distributionskatalogen till distributionsmålet eller mediet. Distributionskatalogen kan vara antingen en mapp på en webbplats eller FTP-plats, en filresurs eller en CD-ROM. Du kan till exempel använda ett verktyg från tredje part eller en anpassad MSBuild-uppgift för att kopiera ClickOnce-filerna.

För eventuell efterbearbetning i PublishUrl mappen måste du ha ett separat skript.

Viktigt!

Om PublishDir är inställt på samma plats som PublishUrlkopieras dubbletter av kompileringsutdata till platsen PublishUrl . Du kan undvika det här problemet i Visual Studio 2022 version 17.4 och senare genom att skapa en ny profil. Den nya profilen anges PublishDir till en annan plats än PublishUrl. I slutet av publiceringsåtgärden kopieras relevanta ClickOnce-filer från PublishDir platsen till PublishUrl .

Publicera egenskaper

När du publicerar programmet med hjälp av föregående procedurer infogas följande egenskaper i projektfilen av publiceringsguiden. Dessa egenskaper påverkar direkt hur ClickOnce-programmet skapas.

I projektfilerna 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>

För .NET Framework-projekt kan du åsidosätta dessa egenskaper på kommandoraden utan att ändra själva projektfilen. Följande kod skapar till exempel ClickOnce-programdistributionen utan bootstrapper:

msbuild /target:publish /property:BootstrapperEnabled=false

Publiceringsegenskaper styrs i Visual Studio från egenskapssidorna Publicera, Säkerhet och Signering i Projektdesignern.

Följande publiceringsegenskaper anges på olika egenskapssidor i programdesignern.

  • AssemblyOriginatorKeyFile avgör vilken nyckelfil som används för att signera ditt ClickOnce-programmanifest. Samma nyckel kan också användas för att tilldela ett starkt namn till dina sammansättningar. Den här egenskapen anges på sidan Signering i Projektdesignern.

Följande egenskaper anges på sidan Säkerhet :

  • Aktivera Säkerhetsinställningar för ClickOnce avgör om ClickOnce-manifest genereras. När ett projekt skapas från början är ClickOnce-manifestgenereringen inaktiverad som standard. Guiden aktiverar automatiskt den här flaggan när du publicerar för första gången.

  • TargetZone avgör vilken förtroendenivå som ska skickas till ditt ClickOnce-programmanifest. Möjliga värden är "Internet", "LocalIntranet" och "Custom". Internet och LocalIntranet gör att en standardbehörighetsuppsättning skickas till ditt ClickOnce-programmanifest. LocalIntranet är standard och innebär i princip fullständigt förtroende. Anpassad anger att endast de behörigheter som uttryckligen anges i basapp.manifestfilen ska skickas till ClickOnce-programmanifestet. Filen app.manifest är en partiell manifestfil som bara innehåller definitionerna för förtroendeinformation. Det är en dold fil som automatiskt läggs till i projektet när du konfigurerar behörigheter på sidan Säkerhet .

Följande egenskaper anges på sidan Publicera :

  • PublishUrl är den plats där programmet publiceras till i IDE. Den infogas i ClickOnce-programmanifestet om både InstallUrl egenskapen och UpdateUrl inte har angetts.

  • ApplicationVersion anger versionen av ClickOnce-programmet. Versionen är ett fyrsiffrigt tal. Om den sista siffran är en "*" (asterisk) ersätts ApplicationRevision med det värde som infogats i manifestet vid tidpunkten för kompileringen.

  • ApplicationRevision anger revisionen. Det här värdet är ett heltal som ökar varje gång du publicerar i IDE. Observera att den inte ökas automatiskt för versioner som utförs på kommandoraden.

  • Install avgör om programmet är ett installerat program eller ett run-from-Web-program.

  • InstallUrl (visas inte) är den plats där användarna installerar programmet från. Om det anges bränns det här värdet i setup.exe bootstrapper om egenskapen IsWebBootstrapper är aktiverad. Den infogas också i programmanifestet om den UpdateUrl inte har angetts.

  • SupportUrl (visas inte) är platsen som är länkad i dialogrutan Lägg till/ta bort program för ett installerat program.

Följande egenskaper anges i dialogrutan Programuppdateringar som nås från sidan Publicera .

  • UpdateEnabled anger om programmet ska söka efter uppdateringar.

  • UpdateMode anger antingen förgrundsuppdateringar eller bakgrundsuppdateringar.

  • UpdateInterval anger hur ofta programmet ska söka efter uppdateringar.

  • UpdateIntervalUnits anger om värdet UpdateInterval är i enheter med timmar, dagar eller veckor.

  • UpdateUrl (visas inte) är platsen där programmet tar emot uppdateringar. Om det anges infogas det här värdet i programmanifestet.

Följande egenskaper anges i dialogrutan Publiceringsalternativ som nås från sidan Publicera .

  • PublisherName anger namnet på utgivaren som visas i prompten som visas när programmet installeras eller körs. För ett installerat program används det också för att ange mappnamnet på Start-menyn .

  • ProductName anger namnet på produkten som visas i prompten som visas när programmet installeras eller körs. För ett installerat program används det också för att ange genvägsnamnet på Start-menyn .

Följande egenskaper anges i dialogrutan Förutsättningar som nås från sidan Publicera .

  • BootstrapperEnabled avgör om setup.exe bootstrapper ska genereras.

  • IsWebBootstrapper avgör om setup.exe bootstrapper fungerar via webben eller i diskbaserat läge.

Användningsalternativ: InstallURL, SupportUrl, PublishURL, UpdateURL

I följande tabell visas de fyra URL-alternativen för ClickOnce-distribution.

URL-alternativ Description
PublishURL Krävs för att publicera ClickOnce-programmet på en webbplats.
InstallURL Valfritt. Ange det här URL-alternativet om installationsplatsen skiljer sig från PublishURL. Du kan till exempel ange PublishURL till en FTP-sökväg och ange InstallURL till en webb-URL.
SupportURL Valfritt. Ange det här URL-alternativet om supportwebbplatsen skiljer sig från PublishURL. Du kan till exempel ange SupportURL till företagets kundsupportwebbplats.
UpdateURL Valfritt. Ange det här URL-alternativet om uppdateringsplatsen skiljer sig från InstallURL. Du kan till exempel ange PublishURL till en FTP-sökväg och ange UpdateURL till en webb-URL.