Consenti a ClickOnce di installare più programmi pubblicati dallo stesso progetto nello stesso ambiente (solo edizioni di .NET Framework)

Pagina aggiornata :
Data di creazione della pagina :

Ambiente di controllo del funzionamento

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

Ambienti richiesti

struttura
  • Windows Form (.NET Framework) in generale
  • WPF (.NET Framework) in generale

Dapprima

In questo suggerimento viene descritto come installare più ClickOnce pubblicati dallo stesso progetto separatamente nello stesso ambiente.

Informazioni sulla procedura per la pubblicazione di più copie dallo stesso progetto in configurazioni diverse

Ad esempio, anche nello stesso progetto, se il contenuto dell'elaborazione viene modificato a seconda della configurazione di compilazione, è possibile pubblicare come programma separato. Ciò è possibile nella versione .NET (Core), ma non nella versione .NET Framework con le funzionalità standard di Visual Studio.

Questo metodo è riassunto nei seguenti suggerimenti utilizzando un programma batch. Questo suggerimento è spiegato sulla premessa che i seguenti contenuti sono completati.

Condizioni in cui ClickOnce viene installato come applicazioni separate

Se si pubblica utilizzando il programma batch descritto in precedenza, la configurazione di compilazione viene modificata, ma entrambi vengono trattati come la stessa applicazione, Se si tenta di installarne due nello stesso ambiente, si verificherà un conflitto e l'installazione avrà esito negativo anche se si tenta di eseguire l'installazione in un secondo momento.

Devo fare in modo che questa sembri essere un'applicazione separata, ma secondo l'articolo di riferimento, i seguenti parametri identificano l'applicazione:

Riferimento: (.NET) Quando avvio l'app dopo la pubblicazione con ClickOnce, ottengo che "l'ID posizionamento non corrisponde all'abbonamento"

  • Nome applicazione
  • Token chiave pubblica
  • Cultura
  • Architettura del processore (ad esempio, x86)

Tra questi, penso che non sia auspicabile cambiare "cultura" e "architettura del processore" perché esiste la possibilità di risultati di elaborazione non intenzionali.

Penso che ci sia un modo per cambiare il "nome dell'applicazione", Fondamentalmente, non è raccomandato perché è possibile assegnare un solo nome a un progetto. Esiste la possibilità che più definizioni possano essere effettuate in base alla configurazione della compilazione e ai parametri di condizione nel contenuto del file di progetto, Poiché è possibile impostare una sola interfaccia utente in Visual Studio, è un po 'pericoloso perché potrebbe essere sovrascritta a seconda dell'operazione.

Il resto è un "token a chiave pubblica", ma questo consente di creare più certificati, Poiché può essere specificato come parametro al momento della pubblicazione di ClickOnce, vorrei identificare l'applicazione con questo tempo.

Procedura di controllo dell'operazione

Dal punto di creazione del progetto al punto in cui è pronto per la pubblicazione come file batch, è lo stesso dei seguenti suggerimenti, quindi si prega di fare riferimento ad esso per la procedura fino a quel punto.

Creazione di un certificato

Questa volta, confermeremo con un certificato di prova per il campione. Originariamente, dovrebbe essere fatto con un certificato regolare, ma poiché richiederà una procedura diversa dall'argomento principale come la creazione del certificato e la preparazione dell'autorità di certificazione, escluderò la spiegazione relativa ai certificati. In produzione, è possibile sostituire il file del certificato di prova con il file di produzione.

Dopo aver creato il progetto e creato il batch per la pubblicazione, tornare a Visual Studio. Apri le proprietà del progetto e scegli Firma dal menu a sinistra. C'è un controllo per "Firma il manifesto ClickOnce", quindi controllalo.

Ora crea due certificati. Questa volta lo creeremo su questa schermata, ma ". pfx" formato di file, non vi è alcun problema con la creazione di certificati con altri mezzi.

C'è un pulsante "Crea certificato di prova" nell'angolo in basso a destra, quindi fai clic su di esso.

Puoi anche inserire una password, ma funziona indipendentemente dal fatto che tu la inserisca o meno. Tuttavia, se vuoi mettere una password, la procedura sarà problematica, quindi non la metterò questa volta.

È stato generato un file di certificato (con estensione pfx) per il progetto. Il nome del file generato qui è fisso ma può essere modificato in seguito. A proposito, la validità del certificato di prova creato qui è di un anno. Dopo un anno, sarà necessario ricreare un nuovo certificato.

Segui gli stessi passaggi per crearne un altro.

Questa volta, pubblicheremo nella build Debug e nella build Release, quindi cambieremo il nome in uno chiaro.

Modifica del lotto

Aprire il file batch creato (.bat) in un editor di testo e aggiungere quanto segue ai parametri di msbuild:

Descrizione del nome del parametro obbligatoria
ManifestKeyFile Nome file (con estensione pfx) del certificato. Specificare un percorso relativo o assoluto dal file di progetto.
ManifestCertificateThumbprint Identificazione personale del certificato manifesto. Il valore da inserire può essere qualsiasi cosa, ma deve essere messo con tutti i mezzi.
Nome Prodotto Nome del prodotto. Diventa il nome visualizzato del menu di avvio o dell'elenco dei programmi.
NomeEromobile Nome della società pubblica. Diventa il nome della cartella quando si organizzano i programmi nel menu di avvio.

Sulla base di quanto sopra, modificare il file di patch come segue.

ClickOnceDebug pubblica.bat (esempio)

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 (esempio)

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 Ogni valore specifica un file di certificato diverso. ManifestCertificateThumbprint Il valore di può essere qualsiasi cosa, ma assicurati di includerlo perché l'applicazione non può essere identificata come un'altra se non la metti.

A proposito, poiché questa volta due programmi sono installati nello stesso ambiente, sono stati aggiunti parametri in modo che ProductName possano essere distinti. PublisherName a tuo piacimento.

questione

Dopo l'input, eseguire ogni file batch e pubblicarlo.

Se xxxx.application è presente nel file pubblicato, aprirlo in un editor di testo e assicurarsi che abbiapublicKeyToken un valore diverso.

installare

Dopo aver copiato i file pubblicati nella cartella pubblica, eseguire per installarli setup.exe .

Se si immette il certificato al momento dell'emissione, al momento dell'installazione verrà visualizzata la seguente schermata. Se si tratta di un certificato di prova, l'editore non può essere confermato, quindi installalo così com'è.

Il primo programma è stato installato e lanciato.

Proverò a installare l'altro.

Anche l'altro è stato installato e lanciato.

Naturalmente, entrambi stanno lavorando allo stesso tempo.

ProductName Poiché è stato allegato, viene visualizzato separatamente nel menu di avvio.

Puoi anche vedere entrambi nell'elenco delle app.