반응형

NSIS 로 설치파일을 만들 때, .Net Framework이 설치되어 있지 않은 구형 PC에서 자동으로 다운로드 및 설치가 필요한 경우가 있습니다.

물론 별도로 수동설치 하면 되겠지만 아무래도 자동으로 해당 기능이 포함되어 있으면 사용자 입장에서는 더 편리하겠죠?

다음은 .Net Framework 4.7.2 가 시스템에 없다면 다운로드 해서 설치까지 되도록 하는 부분 입니다.

Section
    Call CheckDotNetFramework
SectionEnd

Function CheckDotNetFramework
    ; .NET Framework 4.7.2를 확인합니다.
    ; Release DWORD 값은 https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#find-net-framework-versions-by-viewing-the-registry 에서 찾을 수 있습니다.
    ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Release"
    IfErrors install
    IntCmpU $0 461808 install ; 461808은 .NET Framework 4.7.2의 Release 키 값입니다.
    Goto done
install:
    DetailPrint ".NET Framework 4.7.2를 다운로드하고 있습니다..."
    ; .NET Framework 4.7.2 설치파일을 다운로드합니다.
    nsisdl::download "https://download.visualstudio.microsoft.com/download/pr/014120d7-d689-4305-befd-3cb711108212/0fd66638cde16859462a6243a4629a50/ndp48-x86-x64-allos-enu.exe" "$TEMP\dotNetFx47_Full_setup.exe"
    IfErrors downloadFailed
    DetailPrint ".NET Framework 4.7.2를 설치하고 있습니다..."
    ; .NET Framework 4.7.2를 설치합니다.
    ExecWait '"$TEMP\dotNetFx47_Full_setup.exe" /q /norestart' $0
    IfErrors installFailed
    Delete "$TEMP\dotNetFx47_Full_setup.exe"
    Goto done
downloadFailed:
    MessageBox MB_OK|MB_ICONSTOP "Failed to download .NET Framework 4.7.2."
    Abort
installFailed:
    MessageBox MB_OK|MB_ICONSTOP "Failed to install .NET Framework 4.7.2."
    Abort
done:
FunctionEnd

 

반응형

'개발정보' 카테고리의 다른 글

PIA(Primary Interop Assembly) 란?  (0) 2023.03.21
COM 개체와 타입 라이브러리(Type Library)  (0) 2023.03.21
RCW(Runtime Callable Wrapper)란  (0) 2023.03.21
COM 구성 요소란  (0) 2023.03.20
[.net] interop 과 p/invoke  (0) 2023.03.20
반응형

홈택스 전자세금계산서 연동 기능을 제공해주는 업체의 API를 테스트 하기 위하여 제공된 DLL을 참조 시키고

테스트 코드를 작성한 후 컴파일을 시도 했으나 다음과 같은 오류가 발생 하였다.

 

참조된 어셈블리 "Popbill.dll"이(가) 현재 대상 프레임워크 ".NETFramework,Version=v4.0,Profile=Client"에 없는 "System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"에 종속되어 있기 때문에 참조된 어셈블리를 확인할 수 없습니다. 이 문제를 해결하려면 (1) 이 프로젝트의 대상 프레임워크를 변경하거나 (2) 프로젝트에서 참조된 어셈블리를 제거하십시오.

해결을 위하여 시행착오를 겪다가 인터넷을 통해서 원인을 찾았다.

프로젝트 속성 중 대상 프로임워크가 .NET Framework Client Profile 로 되어 있었기 때문 이었다. Client Profile은 사용자를 위한 런타임 이기 때문에 Visual Studio 에서 컴파일 시에 사용할 수가 없다고 한다.

대상 프레임워크를 .NET Framework 4 로 변경 하고 저장 후, 프로젝트를 다시 오픈 한 다음 컴파일 하니 정상적으로 되었다.

동일한 증상 있으신 분은 참조 하시기 바랍니다.

반응형

+ Recent posts