ClickOnce 윈도우7 설치시 오류

안녕하세요. 처음 이런 글을 작성해봅니다. 초보 개발자 인데요. 회사에서 사용할 간단한 프로그램개발중인데, ClickOnce로 배포하려고 합니다. 대부분의 PC가 윈도우10pro 64비트인데, 특정 PC 몇대가 윈도우7 32비트, 64비트가 있어요. 검사장비PC인데, 해당 PC에 프로그램 설치시 아래와 같이 오류가 나는데요. 무슨 문제인지 모르겠어요.

플랫폼 버전 정보
Windows : 6.1.7601.65536 (Win32NT)
Common Language Runtime : 4.0.30319.42000
System.Deployment.dll : 4.7.2558.0 built by: NET471REL1
clr.dll : 4.7.2563.0 built by: NET471REL1
dfdll.dll : 4.7.2558.0 built by: NET471REL1
dfshim.dll : 4.0.31106.0 (Main.031106-0000)

원본
배포 url : file://191.1.1.220/b1_shr/Publish/PMES.application
배포 제공자 url : file://191.1.1.220/b1_shr/Publish/PMES.application
응용 프로그램 url : file://191.1.1.220/b1_shr/Publish/Application%20Files/PMES_1_0_0_135/PMES.exe.manifest

ID
배포 ID : PMES.application, Version=1.0.0.135, Culture=neutral, PublicKeyToken=334a39c9e6732816, processorArchitecture=x86
응용 프로그램 ID : PMES.exe, Version=1.0.0.135, Culture=neutral, PublicKeyToken=334a39c9e6732816, processorArchitecture=x86, type=win32

응용 프로그램 요약
* 설치 가능한 응용 프로그램입니다.

오류 요약
다음은 오류에 대한 요약입니다. 이러한 오류의 세부 정보는 나중에 로그에 기록됩니다.
* \191.1.1.220\b1_shr\Publish\PMES.application 활성화로 예외가 발생했습니다. 다음 실패 메시지가 발견되었습니다.
+ 문화권이 지원되지 않습니다.
매개 변수 이름: name
lg은(는) 잘못된 문화권 식별자입니다.

구성 요소 저장소 트랜잭션 실패 요약
트랜잭션 오류가 발생하지 않았습니다.

경고
이 작업을 수행하는 동안 경고가 발생하지 않았습니다.

작업 진행 상태
* [2023-11-16 오후 4:42:52]: \191.1.1.220\b1_shr\Publish\PMES.application 활성화가 시작되었습니다.
* [2023-11-16 오후 4:42:52]: 배포 매니페스트의 처리가 완료되었습니다.
* [2023-11-16 오후 4:42:52]: 응용 프로그램 설치가 시작되었습니다.
* [2023-11-16 오후 4:42:52]: 응용 프로그램 매니페스트 처리가 완료되었습니다.
* [2023-11-16 오후 4:42:54]: 호환 가능한 런타임 버전 4.0.30319을(를) 찾았습니다.
* [2023-11-16 오후 4:42:54]: 트러스트 요청과 플랫폼 검색이 완료되었습니다.

오류 정보
이 작업을 수행하는 동안 다음 오류가 발생했습니다.
* [2023-11-16 오후 4:42:56] System.Globalization.CultureNotFoundException
- 문화권이 지원되지 않습니다.
매개 변수 이름: name
lg은(는) 잘못된 문화권 식별자입니다.
- 원본: mscorlib
- 스택 추적:
위치: System.Globalization.CultureInfo…ctor(String name, Boolean useUserOverride)
위치: System.Deployment.Application.AssemblyMetaDataImport.ConstructAssemblyName(IntPtr asmMetaPtr, Char[] asmNameBuf, UInt32 asmNameLength, IntPtr pubKeyPtr, UInt32 pubKeyBytes, UInt32 flags)
위치: System.Deployment.Application.AssemblyMetaDataImport.ImportIdentity()
위치: System.Deployment.Application.AssemblyMetaDataImport.get_Name()
위치: System.Deployment.Application.Manifest.AssemblyManifest.LoadFromCompLibAssembly(String filePath)
위치: System.Deployment.Application.Manifest.AssemblyManifest.LoadFromInternalManifestFile(String filePath)
위치: System.Deployment.Application.Manifest.AssemblyManifest…ctor(String filePath)
위치: System.Deployment.Application.DownloadManager.ProcessDownloadedFile(Object sender, DownloadEventArgs e)
위치: System.Deployment.Application.FileDownloader.DownloadModifiedEventHandler.Invoke(Object sender, DownloadEventArgs e)
위치: System.Deployment.Application.FileDownloader.OnModified()
위치: System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
위치: System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
위치: System.Deployment.Application.FileDownloader.Download(SubscriptionState subState, X509Certificate2 clientCertificate)
위치: System.Deployment.Application.DownloadManager.DownloadDependencies(SubscriptionState subState, AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String targetDirectory, String group, IDownloadNotification notification, DownloadOptions options)
위치: System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
위치: System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
위치: System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl, Uri& deploymentUri)
위치: System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
— 예외가 throw된 이전 위치의 스택 추적 끝 —
위치: System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
위치: System.Deployment.Application.ApplicationActivator.PerformDeploymentActivationWithRetry(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
위치: System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

구성 요소 저장소 트랜잭션 정보
트랜잭션 정보를 사용할 수 없습니다.

이런저런 내용을 찾아보니, Appdata 아래 20 폴더 아래 삭제해봤는데 동일하네요…

어떻게 해결해야할까요.? 프레임워크는 4.5.2 입니다.

1개의 좋아요

System.Globalization.CultureNotFoundException
lg는 잘못된 문화권 식별자입니다.

이것이 힌트가 될 수 있을 것 같습니다.

가상 환경으로 윈도우7 32비트 및 64비트 운영체제를 구성해서 동일한 오류가 발생하는지를 먼저 살펴볼 필요가 있겠습니다.

1개의 좋아요

코드상에서 문화권 가져올때 설정하는 변수(name)값이 잘못된거 같네요

CultureInfo.GetCultureInfo(string name);

2개의 좋아요

혹시 프로젝트 내 리소스 중에 ~~~.lg.resx라는 이름을 가지는 파일이 있는지 확인해보시죠.

예를 들어 Resource.resx 파일이 있는데 Resource.lg.resx 파일이 있을 경우 lg를 이를 Resource locaization을 위한 Culture Code로 인식해서 발생하는 오류로 보입니다.

참고

3개의 좋아요

해결했습니다. 신경써주셔서 정말 감사합니다.

1개의 좋아요

신경써주셔서 감사합니다. ^___^ 해결했어요.

1개의 좋아요

너무 감사합니다. lg.resx파일을 삭제했더니 설치되네요. 막막했는데 덕분에 해결해서 너무 기분 좋았어요.

2개의 좋아요