Zezwalaj Aplikacji ClickOnce na instalowanie wielu opublikowanych programów z tego samego projektu w tym samym środowisku (tylko wersje .NET Framework)

Strona zaktualizowana :
Data utworzenia strony :

Środowisko sprawdzania operacji

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

Wymagane środowiska

szkielet
  • Windows Forms (.NET Framework) w ogólności
  • WPF (.NET Framework) ogólnie

Na początku

W tej porady opisano sposób instalowania wielu opublikowanych ClickOnce z tego samego projektu osobno w tym samym środowisku.

Informacje o procedurze publikowania wielu kopii z tego samego projektu w różnych konfiguracjach

Na przykład, nawet w tym samym projekcie, jeśli zawartość przetwarzania zostanie zmieniona w zależności od konfiguracji kompilacji, możesz opublikować jako osobny program. Jest to możliwe w wersji .NET (Core), ale nie w wersji .NET Framework ze standardowymi funkcjami programu Visual Studio.

Ta metoda jest podsumowana w poniższych wskazówkach przy użyciu programu wsadowego. Ta wskazówka jest wyjaśniona przy założeniu, że następujące treści są kompletne.

Warunki, w których ClickOnce instaluje się jako oddzielne aplikacje

Jeśli publikujesz za pomocą programu wsadowego opisanego powyżej, konfiguracja kompilacji zostanie zmieniona, ale obie są traktowane jako ta sama aplikacja, Jeśli spróbujesz zainstalować dwa w tym samym środowisku, wystąpi konflikt, a instalacja nie powiedzie się, nawet jeśli spróbujesz zainstalować później.

Muszę sprawić, aby wydawało się, że jest to osobna aplikacja, ale zgodnie z przywołanym artykułem następujące parametry identyfikują aplikację:

Odniesienie: (.NET) Kiedy uruchamiam aplikację po opublikowaniu za pomocą ClickOnce, otrzymuję, że "identyfikator miejsca docelowego nie pasuje do subskrypcji"

  • Nazwa aplikacji
  • Token klucza publicznego
  • Kultura
  • Architektura procesora (na przykład x86)

Wśród nich uważam, że niepożądana jest zmiana "kultury" i "architektury procesora", ponieważ istnieje możliwość niezamierzonego przetwarzania wyników.

Myślę, że istnieje sposób na zmianę "nazwy aplikacji", Zasadniczo nie jest to zalecane, ponieważ tylko jedna nazwa może być nadana jednemu projektowi. Istnieje możliwość, że można dokonać wielu definicji poprzez konfigurację kompilacji i parametry warunku w zawartości pliku projektu, Ponieważ w programie Visual Studio można ustawić tylko jeden interfejs użytkownika, jest to trochę niebezpieczne, ponieważ może zostać zastąpione w zależności od operacji.

Reszta to "token klucza publicznego", ale ten pozwala na tworzenie wielu certyfikatów, Ponieważ można go określić jako parametr w momencie publikacji ClickOnce, chciałbym zidentyfikować aplikację z tym czasem.

Procedura kontroli operacji

Od momentu utworzenia projektu do momentu, w którym jest gotowy do opublikowania jako plik wsadowy, jest on taki sam jak poniższe wskazówki, więc proszę odnieść się do niego w celu przeprowadzenia procedury do tego momentu.

Tworzenie certyfikatu

Tym razem potwierdzimy certyfikatem testowym dla próbki. Pierwotnie powinno się to odbywać za pomocą zwykłego certyfikatu, ale ponieważ będzie to wymagało procedury innej niż główny przedmiot, takiej jak tworzenie certyfikatów i przygotowanie urzędu certyfikacji, wyłączę wyjaśnienie związane z certyfikatami. W środowisku produkcyjnym można zastąpić plik certyfikatu testowego plikiem produkcyjnym.

Po utworzeniu projektu i utworzeniu partii do opublikowania wróć do programu Visual Studio.After you create the project and create the batch for publishing, return to Visual Studio. Otwórz właściwości projektu i wybierz opcję Podpisz z menu po lewej stronie. Istnieje sprawdzenie "Podpisz manifest ClickOnce", więc sprawdź to.

Teraz utwórz dwa certyfikaty. Tym razem stworzymy go na tym ekranie, ale ". pfx" nie ma problemu z tworzeniem certyfikatów w inny sposób.

W prawym dolnym rogu znajduje się przycisk "Utwórz certyfikat testowy", więc kliknij go.

Możesz także umieścić hasło, ale działa ono niezależnie od tego, czy je umieścisz, czy nie. Jeśli jednak chcesz umieścić hasło, procedura będzie kłopotliwa, więc nie umieszczę jej tym razem.

Dla projektu został wygenerowany plik certyfikatu (pfx). Wygenerowana tutaj nazwa pliku jest stała, ale można ją później zmienić. Nawiasem mówiąc, ważność utworzonego tutaj certyfikatu testowego wynosi jeden rok. Po roku trzeba będzie ponownie utworzyć nowy certyfikat.

Wykonaj te same kroki, aby utworzyć kolejny.

Tym razem opublikujemy w kompilacji Debug i kompilacji Release, więc zmienimy nazwę na jasną.

Modyfikacja partii

Otwórz utworzony plik wsadowy (.) w edytorze tekstu i dodaj następujące elementy do parametrów msbuild:

opis
wymaganynazwy parametru
ManifestKeyFile Nazwa pliku (pfx) certyfikatu. Określ ścieżkę względem lub bezwzględną z pliku projektu.
ManifestCertificateThumbprint Odcisk palca certyfikatu manifestu. Wartość, którą należy włożyć, może być dowolna, ale musi być wprowadzona wszelkimi środkami.
NazwaProduktu Nazwa produktu. Staje się wyświetlaną nazwą menu Start lub listy programów.
Nazwa Wydawcy Nazwa spółki publicznej. Staje się nazwą folderu podczas organizowania programów w menu Start.

W oparciu o powyższe, zmodyfikuj plik poprawki w następujący sposób.

ClickOnceDebug publikuje.(przykład)

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"

Problem ClickOnceRelease.(przykład)

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 Każda wartość określa inny plik certyfikatu. ManifestCertificateThumbprint Wartość może być dowolna, ale pamiętaj, aby ją uwzględnić, ponieważ aplikacja nie może być zidentyfikowana jako inna, jeśli jej nie umieścisz.

Nawiasem mówiąc, ponieważ tym razem dwa programy są instalowane w tym samym środowisku, dodano parametry, ProductName aby można je było odróżnić. PublisherName według własnych upodobań.

problem

Po wprowadzeniu uruchom każdy plik wsadowy i opublikuj go.

Jeśli xxxx.application znajduje się w opublikowanym pliku, otwórz go w edytorze tekstu i upewnij się, że mapublicKeyToken inną wartość.

instalować

Po skopiowaniu opublikowanych plików do folderu publicznego uruchom, aby je setup.exe zainstalować .

Jeśli certyfikat zostanie wprowadzony w momencie wystawienia, w momencie instalacji zostanie wyświetlony następujący ekran. Jeśli jest to certyfikat testowy, nie można potwierdzić wydawcy, więc zainstaluj go w niezmienionej postaci.

Pierwszy program został zainstalowany i uruchomiony.

Spróbuję zainstalować drugi.

Drugi również został zainstalowany i uruchomiony.

Oczywiście oba pracują w tym samym czasie.

ProductName Ponieważ został dołączony, jest wyświetlany osobno w menu Start.

Możesz również zobaczyć oba na liście aplikacji.