2010-02-03 5 views
5

나는 Microsoft 제공 .dlls 및/또는 프레임 워크가 필요한 친구들에게 일하고 좋아하는 프로그램을 여러 권 갖고 있습니다. 특히, XNA. 나는 현실에서 XNA (또는 .NET 3.5 등)가 설치되어 있지 않은 상황에서 실제로 "추락했다"는 내용의 이메일을 다시받는 것에 지쳐있었습니다. 그러나 Main은 심지어 실행되기 전에 .exe가로드하기 때문에 이러한 오류를 catch 할 수 없습니다.시작하기 전에 .NET 의존성 확인하기

내 질문은 .NET 3.5, XNA 등을 확인하고 좋은 오류 메시지 ("이 응용 프로그램은 XNA 3.0이 필요하며 여기에서 다운로드하십시오!)를 확인할 수있는 실행 프로그램을 만드는 방법에 대해 설명합니다. ") 추락처럼 보이는 대신에?

업데이트 : 설치 프로그램을 사용하지 않고이 작업을 수행하도록 지정해야합니다. 나는 보일러 판 WIX 인스톨러를 가지고있어 의존성을 검사 할 수 있지만 가끔은 사람들과 함께 놀기 위해 zip을 업로드하기를 원합니다.

답변

7

설치 프로그램을 사용하지 않고이 작업을 수행하려면 의존성 검사를 수행 한 후 "실제"진입 점을 호출하는 것 이상을 수행하는 "실행기"스크립트를 만들어야 할 수 있습니다.

누락 된 종속성은 매우 일반적인 고통의 원인으로 보일 수 있습니다. 따라서 맨 처음 Windows 설치가 아닌 종속성이없는 방식으로 실행 파일을 작성하는 것이 좋습니다 실행 파일로 패키지 된 AutoIt script입니다.

Const $AppTitle = 'Whizzy Game' 
Const $MB_ICONERROR = 16 

If RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5', 'Install') <> 1 Then 
    MsgBox($MB_ICONERROR, $AppTitle, 'The .NET Framework runtime v3.5 is required to run.') 
    Exit 1 
EndIf 

If RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\XNA\Framework\v3.1', 'Installed') <> 1 Then 
    MsgBox($MB_ICONERROR, $AppTitle, 'The XNA Framework runtime v3.1 is required to run.') 
    Exit 1 
EndIf 

Exit RunWait('WhizzySoftware.WhizzyGame.EntryPoint.exe') 
+0

좋은 대안 인 것 같습니다. .NET 3.5를 확인하는 AutoIt 스크립트의 예를 들어 주시겠습니까? – Jeff

1

응용 프로그램의 설치 프로젝트 (MSI 설치 프로그램으로 컴파일 됨)를 만들 수 있습니다. 이 설치 관리자의 구성에서 .NET Framework vX.X와 같은 필수 구성 요소를 설정할 수 있습니다. 나는 XNA에 대해 절대적으로 확신 할 수는 없지만 이것이 전제 조건으로 나열 될 수 있다고 가정 할 것이다.

+1

나중에 프레임 워크를 제거하지만 앱이 아직 설치되어 있다면 어떻게 될까요? 지금까지 내가 아는 한 .NET Framework 제거 프로그램은 .NET Framework 제거 프로그램이 종속 된 앱이 있는지 여부를 확인하지 않습니다. – Nathan

+0

@Nathan : .NET Framework를 지금 제거한 경우 컴퓨터의 응용 프로그램에는 어떤 변화가 있습니까? 내 컴퓨터에서는 많은 일들이 깨질 것입니다. 나는 그것이 귀하의 앱이 처리해야하는 것이라고 생각하지 않습니다. –

+0

@Andy : 애플 리케이션이 그것을 처리 할 필요가 없었 으면 좋겠다. 그러나 여기에있는 질문은 정확히 내가 경험 한이 유형의 문제를 다루고 있습니다. 새로운 프레임 워크가 설치된 후에 이전 버전의 프레임 워크를 제거하는 것이 일반적인 경우는 아닙니다. 최소한 오류가 발생할 때 사용할 수있는 버전을 확인하는 진단 프로그램을 프로그램에 설치하는 것이 유용 할 것입니다. – Nathan

2

설치 중에 가장 쉽게 수행 할 수 있습니다. 설치 패키지에 Microsoft XNA Framework Redistributable을 포함 시키십시오.

MsiQueryProductState function을 사용하면 프레임 워크가 이미 설치되어 있는지 확인할 수 있습니다.

또는 당신의 레지스트리 확인할 수 있습니다 : 감지하고 전제 조건을 설치하는 섹션으로

[HKEY_LOCAL_MACHINE\Software\Microsoft\XNA\Framework\v3.1] 
Installed=1 

(이 검사는 대안 실행 응용 프로그램에서 수행 할 수 있습니다.)

Here's an article about distributing your game합니다.

관련 문제