2010-03-23 2 views
4

NSIS를 사용하여 .Net 응용 프로그램을 배포하고 있습니다. 설치/제거 프로세스는 정상적으로 작동하지만 시작 성능을 향상시키기 위해 최종 ngen 단계를 추가하고 싶습니다.NSIS 설치 프로그램에서 ngen 호출

불행히도 Google은 관련 자료를 공개하지 않았습니다. 지금까지 아무도이 일을하지 못했을 것입니다. 아마도 여기에있는 누군가가 어떤 생각을 가지고 있을까요?

추한 해킹없이 지원할 수없는 경우에는 다른 Linux 설치 서버에서 실행할 수있는 다른 설치 프로그램 기술을 사용할 의향이 있습니다. (예 : WiX는 제외됩니다.)

아이디어가 있으십니까?

답변

1
당신은 Exec을 내장/ExecWait 명령을 사용하여 마지막 섹션에 NGEN를 실행할 수 있습니다

(또는 nsExec를 사용하거나 제 3 자 간부 플러그인 중 하나)

ExecWait '"ngen.exe" install "c:\path\to\your\assembly" /silent' 

참고 :이 NGEN가에 있다고 가정합니다 경로 또는 현재 디렉터리가 대부분의 시스템에 없을 수도 있으므로 SetOutPath를 사용하여 현재 디렉터리를 설정하거나 ngen에 대한 전체 경로를 사용하십시오.

사용자가 직접 필요한 정확한 스위치를 알아 내야합니다. MSDN 2.01.x ngen 설명서

+0

"참고 : 이것은 ngen이 대부분의 시스템에없는 경로 또는 현재 디렉토리에 있다고 가정하므로 SetOutPath를 사용하여 현재 디렉토리를 설정하거나 ngen에 전체 경로를 사용하십시오." 그건 사실 문제입니다. ngen을 호출하는 신뢰할 수있는 방법을 찾을 수 없습니다. 어쩌면이 정보가 레지스트리 어딘가에서 사용할 수 있을까요? – BlackStar

+0

고마워! 아래 게시물 (NGen 경로에 있음)과 함께 귀하의 게시물은 나를 실제 해결책으로 이끌었습니다. – BlackStar

+0

@BlackStar : 궁금한 점에 해결책을 추가해 주시겠습니까? 아니면, 더 나은, http://nsis.sourceforge.net에서 위키에 추가하고 귀하의 질문에 링크? NSIS 설치 프로그램에서 ngen을 실행하는 것이 유일한 방법은 아닙니다.:-) –

3

가 NGEN과 같은 닷넷 프레임 워크 디렉토리에있을 것입니다 :

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

옵션 1 - GetCORSystemDirectory()는 .NET Framework의 디렉토리를 얻을하는 데 사용할 수있는 시스템이 재부 API 호출이지만, 여기서 문제는 .NET 응용 프로그램에서 호출해야하는 설명서를 읽는 것에서 들리는 것입니다. 따라서 작은 .NET 응용 프로그램을 실행하고 GetCORSystemDirectory() 결과를 ini 파일에 기록 할 수 있습니다. 어쩌면 해당 기능을 검색하고 Google을 통해 유용한 정보를 찾을 수 있는지 알아보십시오.

옵션 2 - 예상되는 경로에서 .NET 프레임 워크를 가정하고 디렉토리를 반복하여 "v2.0"으로 시작하는 디렉토리를 찾을 수 있습니다.

옵션 3 - isntaller에서 ngen을 추출한 다음 실행하십시오. 이것이 내가 때때로 regasm으로 한 일입니다. 나는 그것이 부적절한 영향인지 여부, 이것이 완전히 합법적인지 여부, 또는 그것이 의존하는 다른 파일이 있는지 여부에 대해서는 확신 할 수 없다. regasm.exe와 같은 것이라면 .NET 프레임 워크가 이미 설치되어 있어야합니다. , 모두가 올바른 매개 변수를 NGEN를 호출 남아 경로가 알려져있다 http://nsis.sourceforge.net/Get_directory_of_installed_.NET_runtime

되면 :

+1

고마워요! 런타임을 얻기위한 기성품 솔루션이있는 것으로 보입니다. http://nsis.sourceforge.net/Get_directory_of_installed_.NET_runtime – BlackStar

0

는 NSIS를 통해 런타임 디렉토리를 얻을 수있는 방법이있을 것 같다. 큰!

+0

32 비트 및 64 비트 디렉토리를 탐색해야한다고 가정합니다. ("프레임 워크"대 "프레임 워크 64") –

관련 문제