ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Windows XP 용 프로그램 개발 삽질
    개발일기 2020. 12. 26. 20:31

    2020년 12월 26일

    지인으로부터 pos단말에 들어갈 프로그램 개발 의뢰를 받았다.

    pos단말은 아직까지 os가 xp인 경우가 많아 무조건 xp에서도 동작이 돼야 한다는 조건이 붙었다.

    기획서 문서를 보니 ui가 웹 기반의 요즘 기술들의 화면이다.

    material 디자인의 화면들로 구성되어있다. 요즘 기술로는 1페이지 만드는데 반나절도 안 걸릴만한 화면들...

    flutter나 electron.js로 만들어볼까 생각했는데 xp라는 조건이 붙은 이후 3일째 삽질 중이다.

    먼저 flutter는 17년에 발표했으니, 당연히 xp는 지원을 안 한다. flutter-engine를 가져다 쓴 건지 따로 커스터마이징 한 사람이 있어서 사용해봤는데 동작을 안 한다. 

    flutter는 포기하고 electron으로 방향을 돌렸다.

    electron은 chromium기반이라 chromium이 xp 지원을 중단한 지 몇 년이 된 상황이라, 역시 안된다.

    약 5년 전 버전이 동작한다고 해서 다운로드하여 xp에 실행해봤지만... 안된다.

    된다고 한들 node.js도 6 버전을 사용해야 하는데 과연 패키지들이 또 제대로 동작해줄지도 알 수가 없어 electron 도 포기.

     

    뭐든 안되니 그냥 mfc로 만드는 걸로 방향이 다시 돌렸다.

    visual studio 2019 버전에서 xp용 toolset을 받고 설정을 xp용으로 변경하고 컴파일하니 빌드 오류가 발생한다.

    뭔가 누락되어 컴파일할 수 없다는 내용.. v141관련 항목들을 컴파일이 될 때까지 하나하나씩 설치했다.

    결국 모든 v141 항목들을 설치하고 나서 컴파일이 됐다.

     

    이제 리소스 에디터를 열고 다이얼로그를 만든 후 아이디와 비밀번호 입력 에디트를 추가했다.

    기획서에는 placeholder가 있지만 mfc에 그런 건 없기 때문에 label static 옆에 edit를 추가했다.

    대충 로그인 화면을 만들고 기획서와 비교하니 mfc로는 도저히 작업이 안 될 것 같다.

    mfc에서 제공하는 기본 컨트롤로는 기획서의 기대치를 따라갈 수가 없다.

    타이틀바, 프레임, 버튼, 라디오,  체크, 몽땅 스킨을 입히거나, 아예 컨트롤을 만들어야 한다.

    mfc로는 작업이 너무 오래 걸릴 것 같아서 다시 다른 무언가가를 찾아 검색했다.

     

    qt는 유료라서 포기...

    라이선스 비용이 개인이건 기업이건 부담이 되는 가격이다. 예전에 qt회사의 매출액을 검색해봤는데 19년 매출이 약 580만 유로, 원화로 약 80억이 안된다. qt가 그리 인기 있는 건 아니지만 그래도 인지도가 꽤 있는데 매출이 100억이 안된다니 개발자 입장에서 왠지 슬프다.

     

    아무튼 다시 예전에 잠깐 봤던 sciter를 다시 봤다.

    혼자서 개발하는 프로젝트 같은데 굉장히 부지런한 사람 같다. 피드백도 굉장히 많고 대부분의 플랫폼을 지원한다 github에 며칠 단위로 binary가 올라온다.

    xp에서 된다 안 된다 하면서 이슈가 몇 번 올라왔는데, 개발자가 지원한다고 쓰여있다.

    마지막 희망으로 sdk를 다운로드하고 포함되어 있는 데모를 xp로 옮겨서 실행해봤는데, 안된다...

    분명히 된다고 써놨는데 안된다.

    그래도 혹시 모르니 예제 소스를 컴파일했는데 컴파일 단계부터 오류가 발생한다.

    오기가 생겨 반나절 삽질 끝에 MS 쪽 버그라는 글을 찾았고, 컴파일 옵션을 변경하고 겨우 컴파일에 성공했다.

    그리고 xp로 옮겨 실행한 결과는 xp에서는 지원하지 않는 winapi함수를 참조하고 있다는 오류로 실행이 안된다.

    xp를 지원하는 프로젝트를 하는 사람들은 알겠지만, 실개발환경은 이미 최소 win7이라 무심결에 vista 이상부터 지원하는 함수를 참조하는 경우가 많다. 

    xp 지원한다는 글이 19년 중반 정도였고 그 이후로도 수십 번의 업데이트가 있었으니, 아마도 개발자가 실수로 xp에서 지원하지 않는 함수를 참조했나 보다.

    그래서 19년 이전 릴리즈를 다운로드하려고 했는데, 제공하질 않는다.

    github에 올라온 가장 오래된 바이너리도 역시 xp에서 안된다. 

    sciter도 포기해야겠다.

     

    3일 가까이 삽질만 하니 그냥 처음부터 mfc로 할 걸 그랬나 하는 후회가 든다.

     

    하지만 mfc는 정이 가지 않는다. 

    정말 마지막으로 .net framework를 사용해봐야겠다. xp에서 지원하는 마지막 버전은 4.0.3이라고 한다.

    아무래도 mfc보다는 winform이 좋을 것 같다. 

     

    2020년 12월 27일

    winform으로 로그인 화면과 초기화면 일부를 만들어 봤다. 

    제약이 여전히 많기는 하지만 mfc와는 비교가 안될 정도로 간단하게 화면을 만들었다. 

    타이틀바만 사용자컨트롤로 별도 구현해서 프레임 없는 폼에 올리고 나머지는 기본 컨트롤들을 사용했다.

    일부 속성과 색상 정도만 수정했는데 어느 정도 납득될 수준의 화면이 나왔다.

    비즈니스 로직을 go로 만들어서 연동부분만 다시 c#으로 구현했다.

    .net framework를 설치해야 한다는 부분 때문에 고려를 처음에 안 했었는데  1순위로 생각했다면 하는 아쉬움이 든다.

     

     

     

     

     

     

     

     

     

     

    '개발일기' 카테고리의 다른 글

    Visual Assist X vs ReSharper C++  (0) 2020.12.25
Designed by Tistory.