ClickOnce를 사용하여 동일한 환경의 동일한 프로젝트에서 게시된 여러 프로그램을 설치할 수 있도록 허용(.NET Framework 버전만 해당)

페이지 업데이트 :
페이지 생성 날짜 :

작업 확인 환경

비주얼 스튜디오
  • 비주얼 스튜디오 2022
.NET 프레임 워크
  • .NET 프레임 워크 4.8

필수 환경

  • 윈도우 폼 (.NET 프레임 워크) 일반적으로
  • WPF (.NET 프레임 워크) 일반적으로

처음에

이 팁은 동일한 환경에서 동일한 프로젝트에서 게시된 여러 ClickOnce를 별도로 설치하는 방법을 설명합니다.

동일한 프로젝트의 여러 복사본을 서로 다른 구성으로 게시하는 절차 정보

예를 들어 동일한 프로젝트에서도 빌드 구성에 따라 처리 내용이 변경되는 경우 별도의 프로그램으로 게시할 수 있습니다. 이는 .NET(코어) 버전에서는 가능하지만 Visual Studio의 표준 기능이 있는 .NET Framework 버전에서는 가능하지 않습니다.

이 방법은 배치 프로그램을 사용하여 다음 팁에 요약되어 있습니다. 이 팁은 다음 내용이 완료되었다는 전제하에 설명됩니다.

ClickOnce가 별도의 응용 프로그램으로 설치되는 조건

위에서 설명한 배치 프로그램을 사용하여 게시하는 경우 빌드 구성이 변경되지만 둘 다 동일한 응용 프로그램으로 처리됩니다. 동일한 환경에 두 개를 설치하려고 하면 충돌이 발생하고 나중에 설치하려고 해도 설치가 실패합니다.

이 응용 프로그램을 별도의 응용 프로그램으로 보이게해야하지만 참조 된 기사에 따르면 다음 매개 변수가 응용 프로그램을 식별합니다.

참조: (넷) ClickOnce로 게시 한 후 앱을 시작하면 "배치 ID가 구독과 일치하지 않습니다"라는 메시지가 나타납니다.

  • 응용 프로그램 이름
  • 공개 키 토큰
  • 문화
  • 프로세서 아키텍처(예: x86)

이 중 의도하지 않은 처리 결과가 발생할 가능성이 있기 때문에 "문화"와 "프로세서 아키텍처"를 변경하는 것은 바람직하지 않다고 생각합니다.

"응용 프로그램 이름"을 변경하는 방법이 있다고 생각합니다. 기본적으로 하나의 프로젝트에 하나의 이름 만 지정할 수 있으므로 권장하지 않습니다. 프로젝트 파일의 내용에서 빌드 구성 및 조건 매개 변수를 통해 여러 정의를 수행 할 수 있습니다. Visual Studio에서는 UI를 하나만 설정할 수 있으므로 작업에 따라 덮어쓸 수 있으므로 약간 위험합니다.

나머지는 "공개 키 토큰"이지만이 토큰을 사용하면 여러 인증서를 만들 수 있습니다. ClickOnce 게시 할 때 매개 변수로 지정할 수 있으므로 이번에는 응용 프로그램을 식별하고 싶습니다.

작업 확인 절차

프로젝트를 만드는 시점부터 배치 파일로 게시할 준비가 된 시점까지 다음 팁과 동일하므로 해당 시점까지의 절차는 해당 팁을 참조하십시오.

인증서 만들기

이번에는 샘플에 대한 테스트 인증서로 확인합니다. 원래는 일반 인증서로 수행해야하지만 인증서 생성 및 인증 기관 준비와 같은 주요 주제 이외의 절차가 필요하므로 인증서와 관련된 설명은 제외합니다. 프로덕션 환경에서는 테스트 인증서 파일을 프로덕션 파일로 바꾸어도 괜찮습니다.

프로젝트를 만들고 게시를 위한 일괄 처리를 만든 후 Visual Studio로 돌아갑니다. 프로젝트 속성을 열고 왼쪽 메뉴에서 서명을 선택합니다. "ClickOnce 매니페스트에 서명"에 대한 확인이 있으므로 확인하십시오.

이제 두 개의 인증서를 만듭니다. 이번에는 이 화면에 만들겠지만 ". pfx"파일 형식, 다른 방법으로 인증서를 만드는 데 아무런 문제가 없습니다.

오른쪽 하단에 "테스트 인증서 만들기"버튼이 있으므로 클릭하십시오.

암호를 넣을 수도 있지만 암호를 넣든 넣지 않든 작동합니다. 그러나 암호를 입력하려면 절차가 번거로울 것이므로 이번에는 넣지 않겠습니다.

프로젝트에 대한 인증서(.pfx) 파일이 생성되었습니다. 여기서 생성된 파일 이름은 고정되어 있지만 나중에 변경할 수 있습니다. 그건 그렇고, 여기에 생성 된 시험 인증서의 유효 기간은 일년입니다. 일년 후 새 인증서를 다시 만들어야 합니다.

동일한 단계에 따라 다른 단계를 만듭니다.

이번에는 디버그 빌드와 릴리스 빌드에 게시하므로 이름을 명확한 것으로 변경합니다.

배치 수정

텍스트 편집기에서 만든 배치 파일(.bat)을 열고 msbuild의 매개 변수에 다음을 추가합니다.

매개 변수 이름 설명이 필요합니다.
매니페스트키 파일 인증서의 파일 이름(.pfx)입니다. 프로젝트 파일에 상대적이거나 절대 경로를 지정합니다.
매니페스트인증서지문 매니페스트 인증서의 지문입니다. 넣을 값은 무엇이든 될 수 있지만 반드시 넣어야합니다.
제품 이름 제품 이름. 시작 메뉴 또는 프로그램 목록의 표시 이름이 됩니다.
게시자 이름 공개 회사 이름. 시작 메뉴에서 프로그램을 구성할 때 폴더 이름이 됩니다.

위의 내용을 바탕으로 패치 파일을 다음과 같이 수정합니다.

ClickOnceDebug 게시 .bat (예)

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 문제.bat (예)

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 각 값은 다른 인증서 파일을 지정합니다. ManifestCertificateThumbprint 의 값은 무엇이든 될 수 있지만 응용 프로그램을 넣지 않으면 응용 프로그램을 다른 것으로 식별 할 수 없으므로 포함시켜야합니다.

그건 그렇고, 이번에는 두 개의 프로그램이 같은 환경에 설치되기 때문에 매개 변수가 추가되어 ProductName 구별 될 수 있습니다. PublisherName 당신의 취향에.

출판하다

입력 후 각 배치 파일을 실행하고 게시합니다.

xxxx.application이 게시한 파일에 있는 경우 텍스트 편집기에서 해당 파일을 열고 값이 다른지publicKeyToken 확인합니다.

설치하다

게시된 파일을 공용 폴더에 복사한 후 실행하여 설치합니다 setup.exe .

발급 시 인증서를 입력하면 설치 시 다음 화면이 표시됩니다. 테스트 인증서인 경우 게시자를 확인할 수 없으므로 그대로 설치합니다.

첫 번째 프로그램이 설치되고 시작되었습니다.

나는 다른 하나를 설치하려고 노력할 것이다.

다른 하나도 설치되고 출시되었습니다.

물론 둘 다 동시에 일하고 있습니다.

ProductName 연결되었으므로 시작 메뉴에 별도로 표시됩니다.

앱 목록에서 둘 다 볼 수도 있습니다.