페이지

2011년 7월 8일 금요일

Support resume download in NSIS

installer에서 이어받기를 구현하라는 명을 받았다. 네트웍이 좋지 않은 지역에선 대용량의 SDK를 받다가 끊기는 일이 다반사여서, 이어받기를 지원해줬으면 좋겠다는 VOC가 많이 들어온다고 했다. 하여 리서치 끝에 이틀만에 구현한 로그다.

My boss tells me ‘could you support resume download at the SDK installer? in some countries, the download almost fails due to bad internect connection. so the developers are complaining why this program doesn’t support resume download.’ that’s why I researched this.

처음시도, inetC 가 /RESUME 옵션을 주기에 시도해 보았지만 여기서의 resume은 내가 원하는 RESUME이 아니라, 처음부터 다시 시도하는 resume이었다. 일종의 사기? 그래서 탈락.

according to the google search, inetc seems support /RESUME parameter. so I tried it, but it doesn’t work as I expected.

NSIS forum을 뒤지던 중, 금쪽같은 글을 발견, 이것을 시도해 보니 아니나 다를까 잘 된다. NSISdl plugin을 확장한 것인데, NSISdl과 look은 같고 interface는 파라미터 몇개만 추가된 정도이다. 그래서 기존에 NSISdl을 사용했다면 쉽게 바꿔치기가 가능하다.

Finally, I found a forum thread explaining NSISdl extension plugin which is support the feature. it has similar interface with NSISdl and has same look. so I can easily replace it with new one. it works perfectly.

한가지 주의할 것은, NSIS script에서 기존의 NSISdl interface를 사용하는 부분이 존재한다면 새 interface와 충돌이 날 수 있다. 그래서 새 plugin의 이름을 NSISdl2로 리네임 후 사용하길 권장한다. 그리고 그것을 사용할때에는 NSISdl2 download를 사용하면 된다.

one thing you should know, if you use both old and new NSISdl interface, there NSIS will not know how to resolve each interface call. so I recommend renaming a new one to NSISdl2. and call it NSISdl2::download.