본문 바로가기

C# & .NET

ClickOnce 배포서버로 리눅스 서버 사용시 주의사항

728x90
반응형
ClickOnce 배포방법은 .NET Framework 에서 지원하는 온라인/오프라인 배포방법이다.
설치에 필요한 파일들을 서버에 올려두고 웹페이지를 통해서 클라이언트 사용자들이 프로그램을 설치/실행시킬 수 있도록 하는 아주 유용하고 쉬운 방법이다.

그런데, ClickOnce 배포서버로 리눅스 서버를 사용한다면...

이전 포스트에서 리눅스 서버를 ClickOnce 배포서버로 사용시 발생하는 문제점 몇 가지에 대해서 언급한 바 있다.
이번 포스트에서는 ClickOnce 로 배포하는 프로젝트의 구성요소 배포시 발생하는 문제점의 해결방법을 제시하고자 한다.

상황:
구성요소(예를 들어 .NET Framework 3.x, Visual C++ 런타임 라이브러리 등)  설치 진행 중 구성요소 설치에 필요한 파일을 다운로드할 수 없는 상황

문제 해결의 열쇠는 바로 이것이다.
윈도우즈 시스템은 대소문자를 구분하지 않는다.
그러나 리눅스 시스템은 대소문자를 구분한다.
dotNet과 DotNet 은 리눅스 시스템에서 엄연히 다른 이름이다.

그지같은 마이크로소프트가 ClickOnce 배포서버로 리눅스 서버를 사용할 것이라고 미리 예상을 하였던 것일까?
일부 폴더에 대해서 게시할 때에는 소문자로 게시해놓고, 다운로드받을 때 요청하는 경우에는 대문자로 요청한다.
그러니 당연히 리눅스 서버에 파일이 없다고 나오는거지.

이런 상황이 발생하는 폴더는 다음과 같다.

Application Files 폴더와 같은 계층에 존재하는 dotnetfx35 폴더는 Visual Studio 2008에서 게시하는 경우 모두 소문자로 게시하지만 구성요소를 설치하는 과정에서는 DotNetFX35 과 같이 대소문자가 섞여있는 상태로 요청한다.

Application Files 폴더와 같은 계층에 존재하는 dotnetfx35 폴더 아래의 dotNetFX35 폴더는 Visual Studio 2008에서 게시하는 경우 dotNetFX35와 같이 첫 문자가 소문자인 상태로 게시하지만 설치 과정에서는 DotNetFX35와 같이 첫 문자가 대문자 D인 상태로 요청한다.

Application Files 폴더와 같은 계층에 존재하는 windowsinstaller3_1 폴더는 Visual Studio 2008이 게시할 때에는 모두 소문자로 게시하지만, 설치과정에서는 맨 앞 문자인 w가 대문자 W인 상태로 요청한다.

위 세 가지 사항은 어떤 구성요소가 설치되는지에 따라서 변경될 수 있으므로 설치시 생성되는 설치 로그 파일을 참고하면 정확히 확인할 수 있다.

중요한 것은 기존에 Visual Studio 2008이 게시한 폴더는 그대로 놔둔 상태에서 에러가 발생하는 상황을 해결하기 위해서 별도의 복사본 폴더로 올려두어야 한다는 것이다.
구성요소 설치시에 게시한 형태대로 요청하는 경우도 있기 때문에...




반응형