빌드할 때 라이브러리 파일이 생성되는건 당연한건데, 왜 굳이 같이 배포해야되냐? 네가 능력이 부족하니까 쓰레기 파일들이 같이 딸려오는거 아니냐!
윈도 앱에서 exe와 별개로 dll 등 추가 라이브러리가 많이 딸려오는걸 문제라 칭하고 해결하기를 꽤 오랜 기간 동안 요구받았습니다.
우선순위는 아니였어서 계속 밀리다가 결국 신박한(?) 방법으로 해결을 보았습니다. 아마 운용해보고 괜찮으면 사용 범위를 넓히지 않을까 생각이 듭니다.
빌드할 때 라이브러리 파일이 생성되는건 당연한건데, 왜 굳이 같이 배포해야되냐? 네가 능력이 부족하니까 쓰레기 파일들이 같이 딸려오는거 아니냐!
윈도 앱에서 exe와 별개로 dll 등 추가 라이브러리가 많이 딸려오는걸 문제라 칭하고 해결하기를 꽤 오랜 기간 동안 요구받았습니다.
우선순위는 아니였어서 계속 밀리다가 결국 신박한(?) 방법으로 해결을 보았습니다. 아마 운용해보고 괜찮으면 사용 범위를 넓히지 않을까 생각이 듭니다.
보다보니 생각난 것이 있어 추가 의견을 드려봅니다.!
요즈음 여기저기서 MITM이나 RCE 때문에 난리인데, 이 패턴도 더 안전하게 쓰이려면 해시값 교차 검증이나 샌드박스 모드 격리 실행 같은 부분, 최소 권한 원칙이 반영되어있어야 하지 않을까하는 생각이 드네요.
고생 많으셨습니다. ![]()
저게 앱이 로드 될때 마다 매번 CDN 에서 내려 받는지 아니면 버전 관리 되어 최신본 일때만 내려 받는지 알수 있을까요 ?
버전 관리가 된다면 자동 버전 관리 일까요 ?
@gnh1201 님이 채택한 방법은 앱이 실행될 때 로딩 - 실행할 때마다 DLL 을 새롭게 다운로드 받기 때문에 CDN에 항상 새로운 DLL을 올려 두기만 하면, 버전 관리가 필요 없을 것 같습니다.
다만, 앱이 신규업데이트를 캐치하는 장치를 추가할 필요는 있을 것입니다.
안전을 위해 배포 당시 지정한 버전만 다운로드 받고 로컬에 캐시해둡니다. 캐시를 수동으로 지우지 않는 이상 계속 저장해둔 캐시를 참조하게 됩니다.
라이브러리의 배포만 CDN으로 한다는 것이지, 업데이트는 의도적으로 차단되어 있습니다.
같은 버전인데 실제 바이너리(DLL) 파일이 바뀔 경우 무결성 검증 절차에서 확인되어 실행이 차단됩니다.
실제 운영환경에서 쓰려고 만드는 것인 만큼 무결성 검사 절차가 많이 들어가 있습니다만 (https 통신 강제, 코드 서명 확인, 원본 해시 확인, 멀티 CDN 기반 무결성 체크 등) 이 모든걸 필요에 따라서 해제하면 최신본을 자동으로 받는 것도 가능은 합니다. 단, 권장 사항은 아닙니다.