SlimDX Application Deployment

SlimDX로 제작한 어플리케이션의 배포방법에 관한 글입니다.



SlimDX에서 일반적으로 추천하는 방식은 개발자측에서도 SDK를 설치하고
사용자들에게도 SlimDX User Runtime을 설치하도록 하는 것입니다.
그러나 어플리케이션이 설치방식이 아닌 단독실행방식인 경우, 이는 문제가 됩니다.
어플리케이션을 설치하는 것도 귀찮아하는 사용자가 SlimDX를 설치할리 만무하기 때문이죠.

.NET Framework에서 어셈블리를 로딩하는 방식에는 2가지가 있습니다.
GAC에 올려서 로딩하거나, private assembly로 직접 로딩하는 것입니다.
설치하는 방식은 SlimDX를 GAC에 올려서 로딩하는 것에 해당합니다.
그러므로 설치를 하지않아도 되도록 private assembly로 로딩해야합니다.

private assembly로 로딩하려면, 서명되지않은 SlimDX dll이 필요하므로
http://code.google.com/p/slimdx/source/checkout
에서 Tortoise SVN같은 SVN툴로 소스코드를 다운로드받아 컴파일해야 합니다.
이 소스코드로 여러 환경에서 동작하는 어셈블리를 생성할 수 있지만,
보통 사용자들이 .NET Framework 3.5까지를 사용한다고 가정하는게 맞다고 생각합니다.
(4.0을 대상으로 해야하는 경우 VS 2010용 프로젝트도 준비되어 있습니다.)

SDK를 설치하지않고 이렇게 직접 컴파일한 어셈블리를 private 방식으로 로딩하면,
어플리케이션의 실행파일과 함께 이 SlimDX dll 파일을 같이 배포하는 것만으로
사용자가 SlimDX Runtime을 설치할 필요가 없어집니다.
(private방식으로 로딩하는 경우, 프로젝트의 참조에서 해당dll을 지정하기만 하면 됩니다.)

또하나의 문제가 남아있는데, 최신 버전의 SlimDX 소스는 최신 DX를 대상으로 합니다.
즉, 사용자의 컴퓨터에 최신 DX가 설치되어있지 않으면 SlimDX에서 DX를 래핑하지 못합니다.
이 문제로 인해 최신 DX의 배포본에서 해당파일(dx9를 사용한다면 d3dx_43.dll)도
같이 넣어줘야 합니다.

즉 실행파일, 새로 컴파일한 SlimDX dll, 자신의 실행파일에서 사용한 최신 dx의 dll
이렇게 포함해주면 사용자가 SlimDX나 최신 dx를 설치하지 않았더라도
배포된 프로그램을 문제없이 실행할 수 있게 되는 것입니다.

0 개의 댓글:

댓글 쓰기